Can anybody help? I have following XML:
有人可以帮忙吗?我有以下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>
Basicly i would need to write every value of attr in new XML like:
基本上我需要在新的XML中编写attr的每个值,如:
something1
somethin21
something321
something15
something215
something 32156
I tried everything, but can not make it work like i would need to. Also note that attr can appear everywhere in XML (not just XML structure and nodes above).
我尝试了一切,但不能让它像我需要的那样工作。另请注意,attr可以出现在XML中的任何位置(不仅仅是上面的XML结构和节点)。
Thanks for all your help, Eoglasi
感谢你的帮助,Eoglasi
1 个解决方案
#1
2
This will do it:
这样做:
<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>
When run on your sample input, the result is:
在样本输入上运行时,结果为:
something1
something21
something321
something15
something215
something32156
Here is an XSLT that uses grouping to only show distinct values.
这是一个使用分组仅显示不同值的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>
#1
2
This will do it:
这样做:
<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>
When run on your sample input, the result is:
在样本输入上运行时,结果为:
something1
something21
something321
something15
something215
something32156
Here is an XSLT that uses grouping to only show distinct values.
这是一个使用分组仅显示不同值的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>