Xml – How to get tag name of root element in an XML document w/ XSLT


I'm interested in assigning the tag name of the root element in an xml document to an xslt variable. For instance, if the document looked like (minus the DTD):

<foo xmlns="http://.....">

and I wanted to assign the string 'foo' to an xslt variable. Is there a way to reference that?

Thanks, Matt

Best Solution

I think you want to retrieve the name of the outermost XML element. This can be done like in the following XSL sample:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:variable name="outermostElementName" select="name(/*)" />

  <xsl:template match="/">
    <xsl:value-of select="$outermostElementName"/>

Please note that there is a slight difference in XPath terminology:

The top of the tree is a root node (1.0 terminology) or document node (2.0). This is what "/" refers to. It's not an element: it's the parent of the outermost element (and any comments and processing instructions that precede or follow the outermost element). The root node has no name.

See http://www.dpawson.co.uk/xsl/sect2/root.html#d9799e301

Related Question