Как сравнить положение элемента в xpath - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь сравнить значения учетной записи клиента, чтобы отобразить только разные значения и игнорировать дубликаты в 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 голосов
/ 29 мая 2019

Вот чистое решение 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

0 голосов
/ 28 мая 2019

Этого можно достичь с помощью выражения 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 для достижения этого; Вы можете сделать это только с XSLT-1.0, если XPath-2.0 недоступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...