如何比较元素在xpath中的位置

时间:2019-05-28 17:14:15

标签: xpath

我正在尝试比较客户帐户的值,以仅显示不同的值,而忽略XPath中的重复项:

XML代码:

<info> 
  <Customer CustAccount="1"/>
  <Customer CustAccount="2"/>
  <Customer CustAccount="2"/>
  <Customer CustAccount="3"/> 
</info>

结果应比较客户1/2/3并显示:

customer 1
customer 2
customer 3

2 个答案:

答案 0 :(得分:0)

您可以使用XPath-2.0表达式来实现

for $c in distinct-values(/info/Customer/@CustAccount) return concat('customer ',$c,'&#xa;')

输出为:

customer 1
customer 2
customer 3

如果您不喜欢换行符,请从表达式中删除&#xa;
没有纯粹的XPath-1.0表达式可以实现此目的。如果XPath-2.0不可用,则只能使用XSLT-1.0进行此操作。

答案 1 :(得分:0)

这里是纯xpath 1.0解决方案。

示例xml:

<root >
    <info> 
      <Customer CustAccount="1"/>
      <Customer CustAccount="2"/>
      <Customer CustAccount="2"/>
      <Customer CustAccount="3"/> 
    </info>
</root>

xpath 1.0:

/root/info/Customer[not(./@CustAccount=preceding::Customer/@CustAccount)]

证据: enter image description here