2014-07-16 72 views
1

我有下面的XML:的XPath获取节点名称的唯一值

<MyFruits> 
    <Apple>A</Apple> 
    <Apple>19</Apple> 
    <Mango>12</Mango> 
    <Apple>19</Apple> 
    <Orange>A</Orange> 
    <Orange>A</Orange> 
    <Orange>A</Orange> 
    <Apple>B</Apple> 
    <Apple>19</Apple> 
    <Mango>12</Mango> 
    <Apple>19</Apple> 
    <Orange>10</Orange> 
    <Apple>19</Apple> 
    <Orange>10</Orange> 
    <Apple>C</Apple> 
    <Apple>19</Apple> 
    <Mango>12</Mango> 
    <Apple>19</Apple> 
    <Orange>10</Orange> 
    <Apple>19</Apple> 
    <Orange>10</Orange> 
</MyFruits> 

我想其中(苹果,芒果和Orange)只得到独特的水果

任何人都可以提出一个XPath来使用XPath 1.0检索?

感谢

回答

3

我不认为这可以在一个单一的XPath 1.0表达式来完成,因为这需要谓词的两个嵌套层次与内一个根据外一个的值,即

/MyFruits/*[not(preceding-sibling::*[name() = name(node-from-outer-predicate)])] 

这在XPath 1.0中是不可能的。

这将XPath 2.0中

distinct-values(/MyFruits/*/name()) 
是微不足道