Обновление : ОП указал в комментарии, что три выражения выбирают текстовые узлы.
В этом случае использование оператора объединения (|
) представляется наиболее подходящим.
Есть ли способ правильно
объединить три произвольных 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