我刚开始修补XML,我有一个问题。
XML文件:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<bucket version="Root Version 1A2B3C">
</bucket>
XSL FILE
<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)
请让我知道它为什么不起作用。
由于
答案 0 :(得分:2)
来自http://www.w3.org/TR/xpath/#root-node
根节点是树的根。 除了as之外,不会发生根节点 树的根。元素节点 对于文档元素是一个孩子 根节点。根节点也有 作为儿童处理指导和 注释节点进行处理 发生的说明和评论 在序言和结束后 文件要素。
永远记住(来自http://www.w3.org/TR/xpath/#section-Introduction):
XPath在摘要上运行, XML文档的逻辑结构, 而不是它的表面语法。
因此,文档根/
表示整个文档的“逻辑”根。
答案 1 :(得分:2)
/
表示document-node() - 即整个文档。
在提供的XML中,bucket
元素是文档的顶部元素。它不是根节点。
顶级元素bucket
仍然可以有兄弟姐妹,例如处理说明或评论节点。 top元素及其兄弟元素都有一个父元素,这是/
- 文档的根节点。