xpath - 所有具有以下同级元素的元素

标签 xpath xpath-2.0

我的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/

相关文章:

xml - XPath 2.0 - 1.0 等效?

xslt - 如何根据变量或参数查找元素是否具有祖先(XPath 2.0)

java - 解析大的 100mb xml 并将其存储到 sqlite 数据库中

xpath - vala/libxml2 : how to query xpath with namespace ? (xpathRegisterNs?)

xslt - 测试参数是否是 XSLT 中的几个值之一

xml - 如何使用 XSLT 2.0 或 XPath 2.0 获取引用具有不同值的元素的 href?

sql - XQuery 存在方法

xml - xPath - sum(//*) 解释

html - xslt需要选择单引号

xml - 用于找出属性的字符串长度的 Xpath 函数