XPath 表达式的上下文

XPath 表达式的计算取决于运算表达式所针对的上下文。 上下文包括计算表达式所针对的节点及其关联的环境,包括下列内容:

  • 上下文节点相对于同辈节点的位置(按文档顺序)。

  • 上下文的大小 — 即上下文节点的同辈节点数加 1。

  • 可以解析变量引用的变量绑定。

  • 函数库。

  • 表达式范围中的命名空间声明。

为了更好地评价上下文的概念,请考虑包含节点的树。 向树根请求所有名为 X 的节点时,将返回一个结果集,而向树枝请求这些节点时,将返回不同的结果集。 因此,表达式的结果取决于执行表达式所针对的上下文。

XPath 表达式可以在一个特定的上下文匹配特定的模式,返回结果,然后相对于所返回节点的上下文执行其他运算。 这样,在整个文档树中进行搜索时,使用 XPath 表达式非常灵活。

基本 XPath 表达式

以下是基本的 XPath 表达式类型。 每一类型都在下面进行了描述。

  • 当前上下文

  • 文档根

  • 根元素

  • 递归下降

  • 特定元素

ms256199.collapse_all(zh-cn,VS.120).gif示例

下面的示例显示一些基本的 XPath 表达式。 通过将这些简单的表达式组合在一起,并使用各种 XPath 运算符和特殊字符,可以生成更复杂的表达式。

  • 当前上下文
    以句点和正斜杠 (./) 作为前缀的表达式明确使用当前上下文作为上下文。 例如,下面的表达式引用当前上下文内的所有 <author> 元素:

    ./author
    

    注意,此表达式等效于以下表达式:

    author
    
  • 文档根
    以正斜杠 (/) 为前缀的表达式使用文档树的根作为上下文。 例如,下面的表达式引用此文档根处的 <bookstore> 元素:

    /bookstore
    
  • 根元素
    使用正斜杠后接星号 (/*) 的表达式将使用根元素作为上下文。 例如,以下表达式查找文档的根元素:

    /*
    
  • 递归下降
    使用双正斜杠 (//) 的表达式指示可以包括零个或多个层次结构级别的搜索。 如果此运算符出现在模式的开头,上下文相对于文档的根。 例如,下面的表达式引用当前文档内任何位置的所有 <author> 元素:

    //author
    

    .// 前缀指示上下文从层次结构中当前上下文所指示的级别开始。

  • 特定元素
    以元素名开头的表达式引用特定元素的查询,从当前上下文节点开始。 例如,下面的表达式引用当前上下文节点中 <images> 元素内的 <background.jpg> 元素:

    images/background.jpg
    

    下面的表达式引用当前上下文节点中 <bookstore> 元素内 <book> 元素的集合。

    bookstore/book
    

    下面的表达式引用当前上下文节点中所有的 <first.name> 元素:

    first.name
    

    备注

    元素名可以包括句点字符 (.)。这些名称的用法与任何其他名称一样。

DOM 中的上下文

在 Microsoft XML DOM 中使用 XPath 表达式时,上下文是调用其 selectNodes 方法或 selectSingleNode 方法的 Node 对象。

如果直接从 DOM 使用 XPath,应从特定节点定义上下文。

XSLT 中的上下文

如果直接从 XSLT 使用 XPath,应通过当前节点定义上下文。

其他资源

有关更多信息,请参见“XML Path Language (XPath) Version 1.0 (W3C Recommendation 16 November 1999)”(XML 路径语言 (XPath) 1.0 版(W3C 建议,1999 年 11 月 16 日)),网址为:www.w3.org/TR/xpath。