我想找到类型为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
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> </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> </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> </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> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句