#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)]