使用xslt从XML到cv的特定节点类型

TRS

我想找到类型为asset的节点,并通过xslt将其放入CSV中。有人可以帮xslt转换成xml以下的trsform。

<AssetData >
     <AssetMapping>
        <Owner>0</Owner>
        <AssetList>
          <Asset >
            <Name>SBS</Name>
            <Type>RealEstate</Type>
            <Location>Newzealand</Location>           
          </Asset>
		  <Asset >
            <Name>KMK</Name>
            <Type>Equity</Type>
            <Location>NYSE</Location>        
          </Asset>          		 
		  </AssetList>
	</AssetMapping>
</AssetData>

我想要文本输出像

Name,Type,Location
SBS,RealEstate,Newzealand
KMK,Equity,NYSE
Rudramuni TP

XSLT:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="/*">
    <xsl:for-each select="descendant::Asset">
        <xsl:if test="position()=1">
            <xsl:for-each select="*">
                <xsl:value-of select="name()"/><xsl:if test="not(position()=last())"><xsl:text>,</xsl:text></xsl:if>
            </xsl:for-each>
            <xsl:text>&#10;</xsl:text>
        </xsl:if>
        <xsl:for-each select="*">
            <xsl:value-of select="."/><xsl:if test="not(position()=last())"><xsl:text>,</xsl:text></xsl:if>
        </xsl:for-each>
            <xsl:text>&#10;</xsl:text>
   </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

XSLT隐藏基于名称的特定列:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="/*">
    <xsl:for-each select="descendant::Asset">
        <xsl:variable name="varName"><xsl:text>Name</xsl:text></xsl:variable><!--Mention the name of column to hide here -->
        <xsl:variable name="varColPos">
            <xsl:value-of select="count(*[name()=$varName]/preceding-sibling::*)+1"/>
        </xsl:variable>
        <xsl:if test="position()=1">
            <xsl:for-each select="*">
                <xsl:if test="not(position()=number($varColPos))"><xsl:value-of select="name()"/></xsl:if>
                <xsl:if test="not(position()=last()) and not(position()=number($varColPos))"><xsl:text>,</xsl:text></xsl:if>
            </xsl:for-each>
            <xsl:text>&#10;</xsl:text>
        </xsl:if>
        <xsl:for-each select="*">
                <xsl:if test="not(position()=number($varColPos))"><xsl:value-of select="."/></xsl:if>
                <xsl:if test="not(position()=last()) and not(position()=number($varColPos))"><xsl:text>,</xsl:text></xsl:if>
            </xsl:for-each>
            <xsl:text>&#10;</xsl:text>
    </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用xslt筛选特定的XML节点

来自分类Dev

使用XSLT的XML到XML转换-在子节点上循环

来自分类Dev

特定类型的XSLT Count节点

来自分类Dev

使用XSLT使用不同的内部节点但使用相同的外部节点进行XML到XML的转换

来自分类Dev

使用XSLT在标签中包装特定的XML节点

来自分类Dev

使用xslt删除节点xml

来自分类Dev

使用xslt的动态xml节点

来自分类Dev

使用C#清空特定类型的所有XML节点

来自分类Dev

使用C#清空特定类型的所有XML节点

来自分类Dev

使用XSLT的XML到XML

来自分类Dev

xslt - 只在特定节点搜索 xml

来自分类Dev

XSLT / XML将节点的值复制到节点

来自分类Dev

使用XSLT将不存在的节点从示例XML复制到身份转换

来自分类Dev

使用xslt筛选特定节点值

来自分类Dev

如何使用xslt计算特定节点

来自分类Dev

使用XSLT将名称空间添加到XML的特定节点

来自分类Dev

使用XSLT将新节点添加到现有XML的特定位置

来自分类Dev

使用xslt从xml删除父节点

来自分类Dev

如何使用XSLT选择或删除节点xml

来自分类Dev

XSLT使用同级节点生成xml

来自分类Dev

使用XSLT从XML中删除节点

来自分类Dev

使用基于子节点的XSLT过滤XML

来自分类Dev

使用XSLT转换XML节点值

来自分类Dev

在XSLT中使用XMLNS的输出XML节点

来自分类Dev

使用XSLT过滤的XML到XML

来自分类Dev

使用XSLT过滤的XML到XML

来自分类Dev

XSLT 到 xml 中的最后一级子节点

来自分类Dev

根据节点值使用xslt从xml中删除节点

来自分类Dev

使用XSLT将XML的节点移动到单独的新节点