Как создать условный оператор Xpath?

#xml #xpath #selectnodes

#xml #xpath #selectnodes

Вопрос:

Я хочу выбрать 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 .

Ответ №1:

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

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

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

Ответ №2:

Используйте:

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

что может быть «сокращено»:

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