xslt:有什么方法可以引用根节点吗?

时间:2018-10-01 13:27:43

标签: xslt xslt-1.0

是否可以通过其他方式访问ROOT节点?

上面的例子只是为了说明我的意图。无需使用'../../ ..'就可以访问ROOT_NODE,因为xml中的更改可能会破坏该类型的选择器。

XSLT

<div class="column">
  <xsl:for-each select="languages/server/elem">
    <!-- Context is ELEM node -->
    <div>
      <!-- How can I get access to the ROOT_NODE ?-->
      <span class="text"><xsl:value-of select="ROOT_NODE/@title"/></span>
      <!-- Print ELEM text -->
      <span class="text"><xsl:value-of select="current()"/></span>
    </div>
  </xsl:for-each>
</div>

2 个答案:

答案 0 :(得分:3)

表达式“ /”选择包含上下文节点的树的根目录处的文档节点。 (1.0中的所有树都以文档节点为根。)

在XSLT 2.0中,root()选择包含上下文节点的树的根,无论该根是否是文档节点。

要获得主要源文档的根,即使上下文节点是不同树中的节点,请绑定全局变量

<xsl:variable name="principal-root" select="/"/>

,您可以在任何地方将其称为$principal-root

哦,正如Mads Hansen所指出的那样,如果用“根节点”实际上是指与文档节点不同的最外层元素节点,那么通常将使用“ /*”。

答案 1 :(得分:2)

root node是XML树的根,是文档元素上方的空间。由于XML文档还可以将注释和处理指令作为顶级节点,因此它也使您能够选择它们。

http://www.w3.org/TR/1999/REC-xpath-19991116/#location-paths

  

/选择文档根(始终是文档元素的父级)

听起来好像您要引用"root element", also known as the "document element",以便获得其值@title

您可以使用以下XPath进行选择:

/*/@title