Как создать условный оператор Xpath? - PullRequest
8 голосов
/ 11 октября 2011

Я хочу выбрать узел XML с условным Xpath, как-

xmlnode.SelectSingleNode("if (ns:substanceAdministration/ns:consumable/@typeCode == UNK) then evaluateThisXpath else evaluateOtherXpath")

мое беспокойство-

<drugID code="UNK">
    <sub code="2232" />
</drugID>

Если @code родительского узла - UNK, то только для него должно приниматься значение @code дочернего узла, в противном случае - значение родительского @code.

Ответы [ 2 ]

8 голосов
/ 11 октября 2011

Это должно сработать:

(drugID[@code='UNK']/sub)|(drugID[@code<>'UNK')

Это псевдокод Xpath, измените его на язык вашей библиотеки

5 голосов
/ 11 октября 2011

Используйте

drugId[@code = 'UNK']/sub/@code | drugId/@code[not(. = 'UNK')]

который может быть "сокращен":

(drugId[@code = 'UNK']/sub | drugId[not(@code = 'UNK')])/@code
...