筛选器和筛选模式 (XPath)

通过将筛选子句 [pattern] 添加到集合中,可以对任何集合应用约束和分支。 筛选器类似于 SQL WHERE 子句。 筛选器中包含的模式称为“筛选模式”。 筛选模式计算为布尔值,对集合中的每个元素进行测试。 集合中所有未通过筛选模式测试的元素将从结果集合中省略。

为了方便起见,如果集合在筛选器内,若集合包含任何成员,则生成布尔值 TRUE,若集合为空,则生成 FALSE。 诸如 author/degree 的表达式表示一个“从集合到布尔值”的转换函数,如果存在 <author> 元素并带有名为 <degree> 的子元素,该函数就计算为 TRUE。

注意,在表达式的给定级别可以出现任意数目的筛选器。 不允许使用空筛选器。

筛选器总是针对上下文进行计算。 也就是说,表达式 book[author] 意味着对于每个找到的 <book> 元素,都要测试它是否有 <author> 子元素。 同样,book[author = 'Bob'] 意味着对于每个找到的 <book> 元素,都要测试它是否有带有 Bob 值的 <author> 子元素。 还可以使用句点 (.) 字符检查上下文的值。 例如,book[. = 'Trenton'] 意味着,对当前上下文中找到的每一本书,测试值是否为 Trenton。

示例

Expression

引用

book[excerpt]

所有包含至少一个 <excerpt> 元素的 <book> 元素。

book[excerpt]/title

<book> 元素内所有包含至少一个 <excerpt> 元素的 <title> 元素。

book[excerpt]/author[degree]

所有包含至少一个 <degree> 元素并且在包含至少一个 <excerpt> 元素的 <book> 元素之内的 <author> 元素。

book[author/degree]

所有包含至少一个 <author> 元素并且这个元素有至少一个 <degree> 子元素的 <book> 元素。

book[excerpt][title]

至少包含一个 <excerpt> 元素以及至少包含一个 <title> 元素的所有 <book> 元素。

请参见

参考

XPath 示例

概念

XPath 语法的示例 XML 文件 (inventory.xml)