XPath选取首/末节点时是否必须显式调用position()函数?
问题解答
你设想的select="osm/way/nd[[1] or [last()]]语法并不符合标准XPath规范,不存在这类双中括号组合位置谓词的用法。
不过确实存在不需要显式调用position()函数的等效实现,你可以用XPath的节点集并集运算符|拼接两个合法的位置筛选路径,写法如下:
select="osm/way/nd[1] | osm/way/nd[last()]"
原理解释
- XPath中
[数值]格式的谓词本身就是[position() = 数值]的语法糖,本身就不需要显式声明position()函数 - 并集运算符
|会合并两个路径返回的节点结果,且自动完成节点去重,最终返回的节点集和osm/way/nd[position() = 1 or position() = last()]的查询结果完全一致。
内容的提问来源于stack exchange,提问作者DaveF
相关产品推荐
相关产品推荐

