用于获取节点名称的唯一值的Xpath

时间:2014-07-16 11:43:14

标签: xml xpath unique

我有以下XML:

<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>

我希望其中只有独特的水果(Apple,Mango和Orange)

有人建议使用XPath 1.0检索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())