I've just begun to tinker with XML, and I have a question.
XML File:
<?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>
开发者_C百科 <body>
<h3>
<xsl:value-of select="@version"/>
</h3>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
I have questions regarding the third line of the XSL. If I use
<xsl:template match="bucket">
- Root Version 1A2B3C
is printed
<xsl:template match="/">
-
nothing is printed - I thought "/"
means the root.
My understanding is that it should either print "1.0" (<?xml version
) or "Root Version 1A2B3C" (bucket version)
Please let me know why it is not working.
Thanks
/
denotes the document-node() -- that is the whole document.
In the provided XML the bucket
element is the top element of the document. It isn't the root node.
The top element bucket
can still have siblings, such as processing instructions or comment nodes. The top element together with its siblings all have a single parent and this is /
-- the root node of the document.
From http://www.w3.org/TR/xpath/#root-node
The root node is the root of the tree. A root node does not occur except as the root of the tree. The element node for the document element is a child of the root node. The root node also has as children processing instruction and comment nodes for processing instructions and comments that occur in the prolog and after the end of the document element.
Always remember that (from http://www.w3.org/TR/xpath/#section-Introduction):
XPath operates on the abstract, logical structure of an XML document, rather than its surface syntax.
So, document root /
means the "logical" root of the whole document.
精彩评论