3

我刚刚开始修补 XML,我有一个问题。

XML 文件:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<bucket version="Root Version 1A2B3C">
</bucket>

XSL 文件

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:template match="bucket"> 
    <html>
       <body>
        <h3>
          <xsl:value-of select="@version"/>
        </h3>
      </body>
    </html>
  </xsl:template>
 </xsl:stylesheet>

我对 XSL 的第三行有疑问。如果我使用

<xsl:template match="bucket">- Root Version 1A2B3C被打印

<xsl:template match="/"> -

什么都没有打印 - 我认为"/"意味着根。我的理解是它应该打印“1.0”(<?xml version)或“Root Version 1A2B3C”(bucket version)

请让我知道为什么它不起作用。

谢谢

4

2 回答 2

2

来自http://www.w3.org/TR/xpath/#root-node

根节点是树的根。除了作为树的根之外,不会出现根节点。文档元素的元素节点是根节点的子节点。根节点还具有处理指令和注释节点作为子节点,用于处理出现在序言中和文档元素结尾之后的指令和注释。

永远记住(来自http://www.w3.org/TR/xpath/#section-Introduction):

XPath 在 XML 文档的抽象逻辑结构上运行,而不是在其表面语法上运行。

因此,文档根/表示整个文档的“逻辑”根。

于 2010-11-12T20:06:52.507 回答
2

/表示 document-node() - 即整个文档

在提供的 XML 中,bucket元素是文档的顶部元素。它不是根节点。

顶部元素bucket仍然可以有兄弟节点,例如处理指令或注释节点。顶部元素及其兄弟元素都有一个父节点,这是/文档的根节点。

于 2010-11-12T20:27:01.043 回答