有人可以帮忙吗?我有以下XML:
<root>
<tag1 attr="something1">
<tag21 attr="something21"></tag21>
<tag321 attr="something321"></tag321>
</tag1>
<tag144 attr="something15">
<tag21 attr="something215"></tag21>
<tag321 attr="something32156"></tag321>
</tag144>
</root>
基本上我需要在新的XML中编写attr的每个值,如:
something1
somethin21
something321
something15
something215
something 32156
我尝试了一切,但不能让它像我需要的那样工作。另请注意,attr可以出现在XML的任何位置(不仅仅是上面的XML结构和节点)。
感谢您的帮助, Eoglasi
答案 0 :(得分:2)
这样做:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:template match="/">
<xsl:apply-templates select="//@attr" />
</xsl:template>
<xsl:template match="@attr">
<xsl:value-of select="concat(., '
')"/>
</xsl:template>
</xsl:stylesheet>
在样本输入上运行时,结果为:
something1
something21
something321
something15
something215
something32156
这是一个使用分组仅显示不同值的XSLT。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:key name="kAttr" match="@attr" use="." />
<xsl:template match="/">
<xsl:apply-templates
select="//@attr[generate-id() =
generate-id(key('kAttr', .)[1])] " />
</xsl:template>
<xsl:template match="@attr">
<xsl:value-of select="concat(., '
')"/>
</xsl:template>
</xsl:stylesheet>