关于这些XPath表达式的含义,我说得对吗?
这是给学校的,如果你知道你的XPath并且不介意告诉我我是否正确: 一,。关于这些XPath表达式的含义,我说得对吗?,xpath,Xpath,这是给学校的,如果你知道你的XPath并且不介意告诉我我是否正确: 一,。 /a[/b]/a 在根为“b”的树中,每个具有父级“a”的“a”。([/b]的位置是不相关的?即,上述位置是否等同于//a/a[/b] 二,。 //*[/a]///a[/a][a] 从左到右分解: //*[///a]表示具有子代“a”的所有元素, 因此,//*[//a]//a(特别是学校)表示所有的“a”元素。 而//*[///a]///a[/a]表示树中根为“a”的所有“a”元素, 最后-//*[///a]///a[/
/a[/b]/a
在根为“b”的树中,每个具有父级“a”的“a”。([/b]
的位置是不相关的?即,上述位置是否等同于//a/a[/b]
二,。
//*[/a]///a[/a][a]
从左到右分解:
//*[///a]
表示具有子代“a”的所有元素,
因此,//*[//a]//a
(特别是学校)表示所有的“a”元素。
而//*[///a]///a[/a]
表示树中根为“a”的所有“a”元素,
最后-//*[///a]///a[/a][a]
表示树中根为“a”且有子元素“a”的所有“a”元素
感谢您的帮助,我似乎在任何地方都找不到一个直接的答案。什么课程在测试您神秘的XPath查询?哇
//a[/b]/a
是的,你有这个权利。
[/b]
的位置是不相关的//*[///a]///a[/a][a]
从技术上讲,
//*[///a]///a
相当于//*///a
,这意味着所有的“a”元素都有一个祖先元素。因此,如果根元素是“a”,它将不匹配。除此之外,是的,您的分析是正确的值得一提的是,几年前,我为一个我参与的项目从零开始用JavaScript实现了一个完整的XPath解析器。因此,我真的希望我的答案是正确的!最后,一个家庭作业问题实际上表明提问者在这方面做了一些工作。+1。你基本上是正确的。关于#2,
/*[/a]
不会选择具有子体a
的所有元素,如果文档中的任何位置包含a
,它会选择所有元素。要选择具有子体a
的所有元素,您需要使谓词过滤器相对于匹配的元素:/*[.//a]
好的,那么[/a],/a]形式的任何谓词的位置都是不相关的吗?简单的[a]怎么样?位置重要吗?谢谢!(堆栈溢出是一种严重的现象)没错。拥有绝对路径(以斜杠开头的路径)真的没有意义在方括号内。你可以这样做,但在现实世界的XPath表达式中你永远找不到这样的东西。简单的[a]并不影响你把它放在哪里。它选择包含a
子元素的元素,并将其应用在哪里。将方括号视为SQL where子句的等价物。例如/*[a]
读取“选择所有具有名为a
的子元素的元素”和//a/a[b]
阅读“选择所有a
元素的子元素并具有名为b
的子元素的a
”谢谢(我在上面加了一条注释).这是一门关于搜索引擎的愚蠢课程,他们在太浅的层次上覆盖了太多内容:)