[英]what is the difference between these in xpath?
我是xpath的新手,现在可以让我详细介绍一下xpath中的/bookstore/*
和/bookstore
什么区别吗?
可以说这是示例输入
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
<bookstore>
<book>
<title lang="en">Harry Potter1</title>
<price>29.999</price>
</book>
<book>
<title lang="en">Learning XML1</title>
<price>39.955</price>
</book>
</bookstore>
两种情况下将输出什么? 提前致谢。
假设以下简单的输入文档:
<bookstore>
<book/>
<book/>
</bookstore>
现在,表达
/bookstore
手段
选择一个名为
bookstore
的元素,但前提是它是文档的最外面的元素
格式良好的XML 1中只能有一个最外面的元素,因此上面的路径表达式最多只能选择一个元素节点。
/bookstore/*
手段
选择一个名为
bookstore
的元素,但前提是它是文档的最外面的元素。 然后,选择其所有直接子元素,无论其名称如何。
1正如Michael Kay指出的,除了您正在以编程方式构造XML树。 然后,可能有多个最外面的元素。
那么如果/ bookstore / *输出,则不包含
<bookstore>
和</bookstore>
我可以看到两种阅读此问题的方法。
为什么同时使用<element>
和</element>
?
将<bookstore>
和</bookstore>
视为一个元素 。 它们是该元素的开始和结束标签 。 将输入文档读入内存后,将其存储在没有打开和关闭标签的树状结构(例如DOM)中。 而正是这种表示形式可以用来评估XPath表达式。
但是,如果输出评估XPath表达式的结果,则结果树将再次序列化 ,并且重新出现标签-这可能会造成混淆。
是否选择了路径中提到的所有元素?
不,像这样的表达
/bookstore/book
仅选择book
元素节点。 仅选择最后一个轴心步骤之后最右边的项目(如/
和parent::
:) 。
表达式/bookstore/*
将选择子节点, /bookstore
将选择节点本身。
例如, /bookstore/*
将选择/bookstore
下的所有子元素 ,因此您可能最终得到了一个元素集合。 请注意,如果这是一个更复杂的表达式(如/bookstore/book/*
并且存在多个/bookstore/book
元素,则将选择所有匹配节点的所有子级。
表达式/bookstore
将仅选择元素/bookstore
。 与上述类似,如果沿着/bookstore/book
类的路径进行选择,可能会导致元素集合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.