In Michael Kay's book, XSLT Programmer's Reference - 2nd Edition, the top of
page 75 says that the pattern "/" matches the root node. I have always been
baffled by this, because I have never seen "/" match the root node when
using <xsl:template match="/">.
For instance, just using this XLM:
<root>
</root>
and the following XSL
----------------------------------------
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
Match = "/" -
<xsl:value-of select="name()"/>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-16"?>
Match = "/" -
----------------------------------------
and
----------------------------------------
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
Match = "/*"
<xsl:value-of select="name()"/>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-16"?>
Match = "/*"
root
----------------------------------------
This would appear to me that an implicit root node of
<?xml version="1.0" encoding="UTF-16"?> is actually the root.
What am I missing?
By the way, this is using MSXML4 and .NET XslTransform