如何选择子节点或自身(子节点+自身)?

9
在XSL 1.0中,descendant-or-self将选择所有后代节点和当前节点。如果您只想选择直接子节点和当前节点(即child-or-self),该怎么办?
在XPATH中是否可以实现?
1个回答

12

XPath 1.0或更高版本中使用:

SomeExpression | SomeExpresion/node()

在XPath 2.0或更高版本中使用:

SomeExpression/(self::node()|node())

错误的答案是:

SomeExpression | SomeExpression/*
因为这仅选择了SomeExpression的那些子元素,而SomeExpression可能还有其他类型的子节点,如文本节点、注释节点、处理指令节点。

另外不正确的是:

./SomeExpression | ./*/SomeExpression

这不会选择./SomeExpression的直接子元素,也不会选择./*/SomeExpression的直接子元素。


对于使用标准JS的人来说,没有主流浏览器支持XPath 2.0。 - ThatsJustCheesy
1
@ThatsJustCheesy 在浏览器中可以使用Saxon.js,它甚至实现了XPath 3.1。 - Dimitre Novatchev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接