The namespace axis contains the namespace nodes of the context node. Note that the axis is empty unless the context node is an element. An element has a namespace node for
Every attribute of the element whose name starts with xmlns:.
Every attribute of an ancestor element whose name starts xmlns: (unless, of course, the element itself or a nearer ancestor redeclares the namespace).
An xmlns attribute, if the element, or some ancestor, has an xmlns attribute.
In the following example, Im going to display the namespace of the <PLANETS> element in the result document, and Im setting that namespace to http://www.starpowder.com in the source document:
<?xml version="1.0"?> <?xml-stylesheet type="text/xml" href="planets.xsl"?> <PLANETS xmlns="http://www.starpowder.com"> <PLANET> <NAME>Mercury</NAME> <MASS UNITS="(Earth = 1)">.0553</MASS> <DAY UNITS="days">58.65</DAY> <RADIUS UNITS="miles">1516</RADIUS> <DENSITY UNITS="(Earth = 1)">.983</DENSITY> <DISTANCE UNITS="million miles">43.4</DISTANCE><!--At perihelion--> </PLANET> . . .
Heres the stylesheet, where I check the namespaces used in the <PLANETS> element:
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml"/> <xsl:template match="PLANETS"> <xsl:value-of select="namespace::*"/> </xsl:template> </xsl:stylesheet>
And heres the result document (note that this result may vary by XSLT processor):
<?xml version="1.0" encoding="UTF-8"?> http://www.starpowder.com