xml – 如何选择唯一节点

我发现 this page描述了Muenchian方法,但我认为我应用错了.

考虑到这将返回一组年龄:

/doc/class/person/descriptive[(@name='age')]/value

1..2..2..2..3..3..4..7

但是我想要一个节点组,每个年龄只有一个节点.

1..2..3..4..7

每个都似乎返回所有的值,而不是唯一的值:

/doc/class/person/descriptive[(@name='age')][not(value=preceding-sibling::value)]/value
/doc/class/person/descriptive[(@name='age')]/value[not(value=preceding-sibling::value)]

我失踪了什么

以下是一个例子:
<root>
    <item type='test'>A</item>
    <item type='test'>B</item>
    <item type='test'>C</item>
    <item type='test'>A</item>
    <item type='other'>A</item>
    <item type='test'>B</item>
    <item type='other'>D</item>
    <item type=''>A</item>
</root>

而XPath:

//preceding::item/preceding::item[not(.=preceding-sibling::item)]/text()

结果:
A B C D

编辑:
由于mousio评论说,如果它是唯一出现的时间,它不会捕获列表中的最后一个项目.考虑到Fëanor的评论,这里有一个更好的解决方案:

/root/item[not(.=preceding-sibling::item)]

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念