XPath联合运算符和上下文

r7p*_*r7p 1 xml xslt xpath

我有以下内容:

    <xsl:for-each select="/ROOT_NODE/NODE_1/NODE_11/LOCALE[CO &gt;= 8] | 
NODE_2/NODE_22/OCA">

    </xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 我需要确认与上面的/ ROOT_NODE树相关的NODE_2的上下文是什么.我在想/ ROOT_NODE/NODE_1/NODE_11/NODE_2.它是否正确?
  2. 里面的上下文节点是<xsl:for-each>什么?

Tom*_*lak 6

XPath中的上下文节点是

  • 根节点,当XPath表达式是绝对的(以...开头/)
  • 或当前的XSLT节点(当表达式是相对的时)

在您的情况下,XPath联合的第二部分的上下文将是在当前之前的当前节点<xsl:for-each>.

在for-each中,上下文节点切换到正在迭代的每个节点.

对于XPath联合的结果,文档顺序是相关的.如果在文档/ROOT_NODE/NODE_1/NODE_11/LOCALE[CO &gt;= 8]之前NODE_2/NODE_22/OCA,那么第一部分将首先被处理,否则反过来.

但总的来说,依靠这种副作用并不是一个好主意.你应该声明sort order(<xsl:sort>),或者不迭代不同事物的联合(使用两个连续的<xsl:for-each>循环来使输出顺序固定明显).