Есть ли способ правильно объединить три произвольных выражения XPath, чтобы получить новое действительное выражение XPath? - PullRequest
2 голосов
/ 01 ноября 2010

Есть ли способ правильно объединить три произвольных выражения XPath, чтобы получить новое действительное выражение XPath?

Ответы [ 2 ]

5 голосов
/ 01 ноября 2010

Обновление : ОП указал в комментарии, что три выражения выбирают текстовые узлы.

В этом случае использование оператора объединения (|) представляется наиболее подходящим.


Есть ли способ правильно объединить три произвольных XPath выражения, чтобы привести к новому действительному XPath выражение?

Есть много возможных способов сделать это , и некоторые из них могут выиграть от знания типа возврата оценки.

Один из комбинаторов, который всегда «работает» (хотя не всегда может иметь смысл):

concat(Expr1, Expr2, Expr3)

Другие примеры:

number(Expr1) + number(Expr2) + number(Expr3)

boolean(Expr1) or boolean(Expr2) or boolean(Expr3)

Если в выражениях гарантированно выбран набор узлов , то это выражение (объединение наборов узлов) также объединит их:

Expr1 | Expr2 | Expr3

В XPath 2.0 это выражение должно всегда работать (объединение в последовательность элементов):

Expr1 , Expr2 , Expr3

или этот :

  if(boolean(Expr1))
    then Expr2
    else Expr3
0 голосов
/ 01 ноября 2010

Конечно.Если они не пересекаются, то вы помещаете их вместе с разделением «или».Если они являются аддитивными, то вы можете просто использовать (.net) Path.Combine () для них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...