Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何比较xpath中的元素位置_Xpath - Fatal编程技术网

如何比较xpath中的元素位置

如何比较xpath中的元素位置,xpath,Xpath,我试图比较客户帐户值,以仅显示不同的值,并忽略XPath中的重复值: XML代码: <info> <Customer CustAccount="1"/> <Customer CustAccount="2"/> <Customer CustAccount="2"/> <Customer CustAccount="3"/> </info> 可以通过XPath-2.0表达式实现这一点 for $c in di

我试图比较客户帐户值,以仅显示不同的值,并忽略XPath中的重复值:

XML代码:

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

可以通过XPath-2.0表达式实现这一点

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

customer 1
customer 2
customer 3
如果不喜欢换行符,请删除

来自表达式。

没有纯XPath-1.0表达式可以实现这一点;只有在XPath-2.0不可用的情况下,才能使用XSLT-1.0执行此操作。

这是纯XPath 1.0解决方案

示例xml:

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

您的XML格式不正确。请修复并阅读。请让我知道它是如何运行的。这将类似于xpath 2.0中的distinct,因此您不必担心是否有客户在其他地方拥有匹配的custAccount。
<root >
    <info> 
      <Customer CustAccount="1"/>
      <Customer CustAccount="2"/>
      <Customer CustAccount="2"/>
      <Customer CustAccount="3"/> 
    </info>
</root>
/root/info/Customer[not(./@CustAccount=preceding::Customer/@CustAccount)]