2014-04-01 33 views
0

我真的没有在互联网上找到这些类型的XPath的很多例子,以及这种类型的XPath功能的实际“名称”。有人能为我澄清一些W3C或其他标准的在线资源来定义这些资源吗?这些XPath功能名称?和CSS选择器比较

(//someXPathThatReturnsMultipleMatches)[n] 

它返回集合

//div[span[a[@title='foo']]] 

我们匹配&回报股利(而不是超链接),它包含一个跨度中又包含一个超链接与“富的标题的第n个比赛“

更新:我想有没有具体的名称,这些XPath的例子呢?目前的答案都很好,希望我可以同时接受他们。但首先对问题进行了更新:

提出这个问题的基础也是一种轻松通知用户一些额外类型的XPath查询无法在CSS中完成的方法,除了更简单的访问父/祖先和前面的兄弟姐妹和文本包含()(这只是一个伪选择器不是CSS3的一部分),CSS不可用。因为对那些不太熟悉XPath的人,只知道CSS的基础知识,他们认为你可以用CSS做大部分的XPath,而事实上并非如此(对于复杂/独特的情况)。所以我想知道,实质上,如何有效地总结CSS中不能做什么,以及如何使用XPath,其中包括我首先提到的例子以及人们会听到的更简单的例子?

回答

1

XPath遍历任何文档轴步骤

/these/are/all/axis/steps 

还有一堆多种轴步骤,你可以看一下在几乎每一个:对于单纯的孩子步骤,总是选择当前上下文的直接子节点与轴步骤的名称的例子教程,他们对这个问题并不重要。

在每一步之后,您可以使用谓词来进一步限制结果集。谓词筛选结果。最终,它归结为2种谓词:

  • 数值谓词返回当前步骤的第n个结果。

    您的第一个示例查询(给定n被替换为数字)就是此类别的一个示例。正如@choroba指出的那样,它们实际上只是形式为position()=n的(布尔)位置谓词的缩写。

  • 布尔谓词返回表达式计算结果为true的所有结果。如果结果不是布尔值(例如作为函数的结果),则非空集合将被评估为true,空集合将被设置为false。 I explained the mechanics behind this in detail in another answer.

    你的第二个查询就是这个类别的一个例子。它选择<div/>元素,其中包含一个(包含(锚点标记,那些标题属性为“foo”))的跨度。 (阅读括号,就像您在数学做,我说他们澄清优先。)

+0

数值谓词只是缩写形式'位置()= NUM​​'的布尔谓词。 – choroba