具有与其相等的后续兄弟的所有元素

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)] 中使用它。