是否可以通过其他方式访问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>
答案 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