我在va变量prdxml
上得到了这样的XML <category numberofproducts="0">
<id>catering</id>
<url>/products/kantine</url>
<name>Kantine</name>
<category numberofproducts="0">
<id>madembal</id>
<url>/products/mad-og-emballage</url>
<name>Mad og emballage</name>
<category numberofproducts="9">
<id>stanniol</id>
<url>/products/stanniol</url>
<name>Stanniol</name>
<category numberofproducts="9">
<id>stankd</id>
<url>/products/stankd</url>
<name>stankd</name>
</category>
</category>
<category numberofproducts="5">
<id>termo</id>
<url>/products/termobakker</url>
<name>Termobakker</name>
</category>
</category>
</category>
现在我想把这个xml中的所有Id都存在一个字符串。由于这个xml的结构,每个循环都很常见但是失败了。现在我认为可能有一种更聪明的方法来实现这一点,我从来都不知道。任何人都可以给我这样的光。
答案 0 :(得分:1)
如果你的意思是扁平化所有id
而不管它们的嵌套,级别,那么这应该与它们之间的','分隔符一起使用。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="//id"/>
</xsl:template>
<xsl:template match="id">
<xsl:value-of select="concat(./text(), ',')"/>
</xsl:template>
</xsl:stylesheet>
返回:catering,madembal,stanniol,stankd,termo,
如果您需要更优雅的机制来处理最后一个元素分隔符,请查看Dimitre's answer here
更新:将结果放入变量:
<xsl:variable name="someVar">
<xsl:apply-templates select="//id"/>
</xsl:variable>
Result: <xsl:value-of select="$someVar"/>