Xpath使用previous-sibling获取不同的节点

时间:2013-04-04 13:02:01

标签: xpath distinct siblings

我需要获得不同的值// name()而不使用distinct-values(// * / name())

我试过这样做,但它不起作用。

//*/name()[.!=//preceding-sibling::*]

我该如何修复它?

1 个答案:

答案 0 :(得分:4)

使用 XPath 1.0 获取不同的值

对于name属性,

/*/*[not(@name = preceding::*/@name)]

对于节点名称,

/*/*[not(name() = preceding::*/name())]

我的示例XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <friend1 name="abc"/>
    <friend2 name="def"/>
    <friend3 name="abc"/>
    <friend1 name="abcd"/>
    <friend5 name="abcd"/>
    <friend6 name="xyz"/>
    <friend8 name="789"/>
    <friend0 name="pqr"/>
    <friend9 name="lmn"/>
    <friend2 name="lmn"/>
    <friend5 name="123"/>
    <friend7 name="456"/>
    <friend12 name="789"/>
</root>