Что такое эквивалент XPath оператора Coalesce?

У меня есть следующие пути:

  • /моя: компания /ns 1: Аудит/ns1: Визит /ns 1: customField10
  • /моя: компания /ns 1: Аудит/ns1: Визит /ns 1: ACCOUNTNUMBER

Я хочу выбрать ns1: customField10, если он не пуст, в противном случае я хочу вернуть ns1: accountNumber.

Я попробовал следующее:

xml.SelectSingleNode(
    "(/my:cobius/ns1:Audit/ns1:Visit/ns1:customField10 | 
    /my:cobius/ns1:Audit/ns1:Visit/ns1:accountNumber)", ns)

Но он всегда возвращает accountNumber. Я попробовал перевернуть заказ customField10 и accountNumber, но без радости. Он по-прежнему возвращает номер учетной записи.

Как я могу сделать эквивалент оператора coalesce в XPath?

Update:

Здесь последний код:

xml.SelectSingleNode(
    "(/my:company/ns1:Audit/ns1:Visit/ns1:customField10[normalize-space()] | 
    /my:company/ns1:Audit/ns1:Visit/ns1:accountNumber[not(normalize-space(../ns1:customField10))])", ns)

Ответ 1

Ваш код будет работать, если отсутствует node (эквивалент NULL в SQL). Но пустого не хватает (например, пустая строка в SQL).

Вы можете, конечно, добавить предикат:

/my:cobius/ns1:Audit/ns1:Visit/ns1:customField10[string-length(.)] | /my:cobius/ns1:Audit/ns1:Visit/ns1:accountNumber