如何使用 xpath 查找重复/非不同的值

How to find duplicate / non distinct values with xpath

给定以下示例html:

<products>
  <product>
    <sku>10021</sku>
  </product>
  <product>
    <sku>10021</sku>
  </product>
  <product>
    <sku>10022</sku>
  </product>
  <product>
    <sku>10023</sku>
  </product>
  <product>
    <sku>10023</sku>
  </product>
</products>

我知道如何使用 xpath 查找不同的 sku 值:distinct-values(//sku),它将输出:

10021
10022
10023

但是我怎样才能得到那些不明显的,所以:

10021
10023

我正在使用 xidel,所以 XPath 3 没问题。但是,如果它可以通过 XPath 1 以某种方式完成,最好没有 XSLT,我也非常想阅读它。

您可以试试这个来获得 sku 节点,其文本至少与另一个节点的文本相等 sku:

distinct-values(//sku[.=following::sku])

您也可以像这样在 XPath 1 中执行此操作:

//sku[.=preceding::sku and not(.=following::sku)]