我有一个这样的XML文档:
<wii>
<game>
<type genre="arcade" />
<type genre="sport" />
</game>
<game>
<type genre="platform" />
<type genre="arcade" />
</game>
</wii>
如何仅使用XPath列出所有类型而不重复?
感谢。
答案 0 :(得分:5)
/wii/game/type/@genre[not(. = preceding::type/@genre)]
简单地说,这将选择文档前一部分中没有同等值@genre
节点的任何@genre
属性节点。
相等=
运算符,当给定普通值和节点集时,它将普通值与节点集中的每个节点进行比较,返回true
只有当所有节点都匹配时(注意!=
不这样做,它才会与该集合的第一个节点进行比较!)。结果必须用not()
否定。
答案 1 :(得分:0)
您是否尝试过distinct-values()函数?
distinct-values(//type/@genre)
如果您无法使用该功能,那显然没有用。
Here's a link指向仅使用XPath的方法。