有没有办法正确连接三个任意XPath表达式,以产生一个新的有效XPath表达式?

use*_*963 2 xpath expression

有没有办法正确连接三个任意XPath表达式,以产生一个新的有效XPath表达式?

Dim*_*hev 5

更新:OP在评论中指出三个表达式选择文本节点.

在这种情况下,使用union运算符(|)似乎是最合适的.


有没有办法正确连接三个任意XPath表达式,以产生一个新的有效XPath表达式?

有许多可能的方法可以做到这一点,其中一些可能会从了解评估的返回类型中受益.

总是"工作"的组合者之一(尽管可能并不总是有意义)是:

concat(Expr1, Expr2, Expr3)
Run Code Online (Sandbox Code Playgroud)

其他例子:

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

boolean(Expr1) or boolean(Expr2) or boolean(Expr3)
Run Code Online (Sandbox Code Playgroud)

如果表达式保证选择一个节点集,那么这个表达式(节点集的并集)也会组合它们:

Expr1 | Expr2 | Expr3
Run Code Online (Sandbox Code Playgroud)

在XPath 2.0中,此表达式应始终有效(连接到一系列项目):

Expr1 , Expr2 , Expr3
Run Code Online (Sandbox Code Playgroud)

或者这个:

  if(boolean(Expr1))
    then Expr2
    else Expr3
Run Code Online (Sandbox Code Playgroud)