我有一个xml文档,其中包含一些带有id的"Item"元素.我想列出唯一的Item ID.但是Item元素不在列表中 - 它们可以位于xml文档中的任何深度 - 例如:
<Node>
<Node>
<Item id="1"/>
<Item id="2"/>
</Node>
<Node>
<Item id="1"/>
<Node>
<Item id="3"/>
</Node>
</Node>
<Item id="2"/>
</Node>
Run Code Online (Sandbox Code Playgroud)
我想输出1,2,3(或类似的表示).如果这可以用单个xpath完成,那就更好了!
我已经看到了兄弟元素列表的示例,但不是一般的xml树结构.我也限制使用xslt 1.0方法.谢谢!
试试这个(使用Muenchian分组):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="item-id" match="Item" use="@id" />
<xsl:template match="/Node">
<xsl:for-each select="//Item[count(. | key('item-id', @id)[1]) = 1]">
<xsl:value-of select="@id" />,
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
使用单个XPath表达式选择所有唯一项(不进行索引,注意性能问题):
//Item[not(@id = preceding::Item/@id)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2418 次 |
| 最近记录: |