2010-08-07 47 views
5

这是学校,如果你知道你的XPath和不介意告诉我,如果我是正确的:我对这些XPath表达式的含义是否正确?

1. //a[/b]/a

每一个“A”有一个“A”父树是'b'的根。 (该[/b]的位置是无关紧要的,即在上述相当于//a/a[/b]

2. //*[//a]//a[/a][a]

它分解从左至右:? //*[//a]指具有后代“A”, 所有元素因此//*[//a]//a意味着所有'a'元素 和//*[//a]//a[/a]意味着树中所有'a'元素的根是'a', 和最后 - //*[//a]//a[/a][a]意味着树中的所有'a'元素,根“a”有一个孩子'a'。

感谢您的任何帮助,似乎无法在任何地方得到直接的答案。

+2

终于出现一个实际显示该人问的作业问题,并对其做了一些工作。 +1。 – Femaref 2010-08-07 15:55:53

+0

你基本上是正确的。关于#2,'// * [// a]'不会选择所有具有后代'a'的元素,如果文档中包含'a',则选择所有元素。为了选择具有后代“a”的所有元素,您需要使谓词过滤器相对于匹配的元素:'//* [.// a]' – 2010-08-07 16:30:47

+0

好吧,所以任何谓词的位置form [// a],[/ a]是不相关的? 平原[a]怎么样,这个问题的立场呢? 谢谢! (堆栈溢出严重是一种现象) – bloodcell 2010-08-07 17:27:22

回答

1

什么课程可以让您对奥术XPath查询进行测验?哇。

  1. //a[/b]/a
    是的,你有这个权利。 [/b]的位置是不相关的。

  2. //*[//a]//a[/a][a]
    技术上//*[//a]//a相当于//*//a这意味着所有的“A”元素,其具有一个祖先元素。所以如果根元素是'a',它不会匹配。除此之外,是的,你的分析是正确的。

几年前,我为自己的项目在JavaScript中从头开始实现了一个完整的XPath解析器。所以我真的希望我的回答是对的!

+0

谢谢(我在上面写了一条评论)。 这是一个关于搜索引擎的愚蠢类,他们在太浅的层次上覆盖太多:) – bloodcell 2010-08-07 17:33:55