我的XML结构:
<root>
<!-- First -->
<A>
<B>123</B>
<C>456</C>
</A>
<!-- Second -->
<A>
<B>999</B>
<C>456</C>
</A>
<!-- Third -->
<A>
<B>123</B>
<C>456</C>
</A>
<!-- Fourth-->
<A>
<B>123</B>
<C>999</C>
</A>
<!-- Fifth -->
<A>
<X>123</X>
<Y>456</Y>
</A>
</root>
我想找到所有具有与之相等的同级兄弟的A元素。
期望的结果只是第一个元素,因为它等于第三个元素。
我已经试过了:
//A[.= following-sibling::A]
但是结果是我得到了第一个和第三个元素。我猜第三个元素与第五个元素匹配,因为=运算符只是比较String值,对吧?你能帮助我吗?
我什至可以计算匹配元素在XPath中的位置,还是必须在XSL for loop中搜索它?
最佳答案
我认为您正在寻找功能deep-equal
,请参见http://www.w3.org/TR/xpath-functions-30/#func-deep-equal,您可以在//A[some $sibling in following-sibling::A satisfies deep-equal(. ,$sibling)]
中使用它。
关于xpath - 所有具有以下同级元素的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34660089/