XmlDataSource.XPath, выберите отдельные строки

#asp.net #xml #xpath

#asp.net #xml #xpath

Вопрос:

Мне нужно выбрать отдельные строки из XML-данных с первичным ключом из двух столбцов, равным col1 и col2:

 <data>
  <col1>X</col1>
  <col2>X</col2>
  <col3>X</col3>
</data>
<data>
  <col1>X</col1>
  <col2>X</col2>
  <col3>X</col3>
</data>
  

Я наткнулся на функцию «previous-sibling», но не смог найти ни одного хорошего руководства. Как я мог бы выбрать разные col1 и col2? Спасибо за вашу помощь.

Ответ №1:

Вы не можете группировать по сложным ключам (отличным от значения одного узла) с выражением только XPath 1.0.

Вы могли бы сгруппировать по одному ключу, а затем по другому, повторяя с вашим языком хоста этот результат выражения XPath:

 /*/data[not(col1 = ../preceding-sibling::data/col1)]
  

И после регистрации $col1 переменной (или замены ее значения в выражении) как col1 , используйте это:

 /*/data[col1 = $col1][not(col2 = ../preceding-sibling::data[col1 = $col1]/col2)]