有没有办法正确连接三个任意XPath表达式以产生新的有效XPath表达式?
答案 0 :(得分:5)
更新:OP已在评论中指出三个表达式选择文本节点。
在这种情况下,使用union运算符(|
)似乎是最合适的。
有没有正确的方法 连接三个任意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
答案 1 :(得分:0)
不确定。如果它们是不相交的,那么你用“或”语句将它们分开。如果它们是附加的,那么你可以在它们上面做一个(.net)Path.Combine()。