name() Function |
Returns the qualified name of a node. The qualified name includes the appropriate namespace prefix. For information on the namespace URI (not the prefix), XPath provides the namespace-uri() function.
Inputs
An optional node-set. If no node-set is given, the name() function creates a node-set with the context node as its only member.
Output
The expanded name of the node. If the argument node-set is empty, or if the first node in the node-set does not have an expanded name, an empty string is returned.
Defined in
XPath section 4.1, Node Set Functions.
Example
Here is the XML document we'll use to demonstrate the name() function:
    <?xml version="1.0"?>
    <report>
      <title>Miles Flown in 2001</title>
      <month sequence="01">
        <miles-flown>12379</miles-flown>
        <miles-earned>35215</miles-earned>
      </month>
      <month sequence="02">
        <miles-flown>32857</miles-flown>
        <miles-earned>92731</miles-earned>
      </month>
      <month sequence="03">
        <miles-flown>19920</miles-flown>
        <miles-earned>76725</miles-earned>
      </month>
      <month sequence="04">
        <miles-flown>18903</miles-flown>
        <miles-earned>31781</miles-earned>
      </month>
    </report>
We'll use this stylesheet to output the value of the name() function for each node in the XML document:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:months="Lookup table for month names">

      <months:name sequence="12">December</months:name>
      <months:name sequence="01">January</months:name>
      <months:name sequence="02">February</months:name>
      <months:name sequence="03">March</months:name>
      <months:name sequence="04">April</months:name>
      <months:name sequence="05">May</months:name>
      <months:name sequence="06">June</months:name>
      <months:name sequence="07">July</months:name>
      <months:name sequence="08">August</months:name>
      <months:name sequence="09">September</months:name>
      <months:name sequence="10">October</months:name>
      <months:name sequence="11">November</months:name>

      <xsl:output method="text"/>

      <xsl:variable name="newline">
    <xsl:text>
    </xsl:text>
      </xsl:variable>

      <xsl:template match="/">
        <xsl:value-of select="$newline"/>
        <xsl:text>A test of the name() function:</xsl:text>

        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:for-each select="document('')//*">
          <xsl:text>name: </xsl:text>
          <xsl:value-of select="name()"/>
          <xsl:value-of select="$newline"/>
        </xsl:for-each>
      </xsl:template>

    </xsl:stylesheet>
When we transform the XML document with this stylesheet, here are the results:
    A test of the name() function:

    name: xsl:stylesheet
    name: months:name
    name: months:name
    name: months:name
    name: months:name
    name: months:name
    name: months:name
    name: months:name
    name: months:name
    name: months:name
    name: months:name
    name: months:name
    name: months:name
    name: xsl:output
    name: xsl:variable
    name: xsl:text
    name: xsl:template
    name: xsl:value-of
    name: xsl:text
    name: xsl:value-of
    name: xsl:value-of
    name: xsl:for-each
    name: xsl:text
    name: xsl:value-of
    name: xsl:value-of