具有与其相等的后续兄弟的所有元素
All elements with a following sibling equal to it
我的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]
但结果我得到了第一个和第三个元素。我猜第三个元素与第五个元素匹配,因为 = 运算符只是比较字符串值,对吧?你能帮帮我吗?
我什至可以在 XPath 中计算匹配元素的位置,还是必须在 XSL for 循环中搜索它?
我认为您正在寻找函数 deep-equal
,参见 http://www.w3.org/TR/xpath-functions-30/#func-deep-equal,您可以在 //A[some $sibling in following-sibling::A satisfies deep-equal(. ,$sibling)]
中使用它。
我的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]
但结果我得到了第一个和第三个元素。我猜第三个元素与第五个元素匹配,因为 = 运算符只是比较字符串值,对吧?你能帮帮我吗?
我什至可以在 XPath 中计算匹配元素的位置,还是必须在 XSL for 循环中搜索它?
我认为您正在寻找函数 deep-equal
,参见 http://www.w3.org/TR/xpath-functions-30/#func-deep-equal,您可以在 //A[some $sibling in following-sibling::A satisfies deep-equal(. ,$sibling)]
中使用它。