XPath或XML中的上下文概念是什么

时间:2015-06-16 14:20:28

标签: xml xpath

我在关于XPath的文档中经常阅读context这个词。我希望得到一个关于它的概念性想法,并将其与我对它的理解或它的一般含义进行比较。

目前,通过context,我想到了一组在XML的层次结构中创建范围的节点。

例如

<doc>
   <header>
   </header>
   <content>
      <section1>
           it is a good boy
      </section1>
      <section2>
          this good is for export
      </section2>
   </content>
   <footer>
   </footer>
</doc>

就我自己而言,例如//content/section1//*是一个上下文,其中“good”的含义与//content/section2//*

的上下文中的含义不同

我不知道它在XPath或XSLT的文档中与它的意义相对应,...

2 个答案:

答案 0 :(得分:1)

the docs

  

关于上下文发生表达式评估。 XSLT和XPointer分别指定如何为XSLT和XPointer中使用的XPath表达式确定上下文。上下文包括:

  • 节点(上下文节点)
  • 一对非零正整数(上下文位置和上下文大小)
  • 一组变量绑定
  • 功能库
  • 表达式
  • 范围内的名称空间声明集
  

上下文位置始终小于或等于上下文大小。

答案 1 :(得分:1)

这非常简单。 上下文是谓词位置步骤隐式引用的内容。

所以,例如:

  • <a>选择任何//a[@name = 'foo']元素。

  • <a>选择@name属性值为'foo'的任何<a>元素。

    • 此表达式中位置步骤的上下文也是根节点。
    • 谓词的上下文是任意选定的//a[@name = 'foo']
  • 等等。每个子表达式的上下文都不同。

//a[./@name = 'foo']相当于.,其中上下文通过./明确设置。隐含上下文允许您在每次想要引用您所指的节点时跳过写.//a

Unit选择当前节点下的所有节点。当前节点是存在于托管XPath的环境中的概念,例如XSLT或支持XPath的任何DOM API。当前节点可以用作路径初始步骤的上下文。