XML/XSLT stylesheet/name
Element name: <xsl:value-of select="name()"/>
File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<pp>
<P>Element name: xsl:stylesheet</P>
<P>Local part: stylesheet</P>
<P>Namespace URI: http://www.w3.org/1999/XSL/Transform</P>
<P>ID:</P>
</pp>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
<P>Element name: <xsl:value-of select="name()"/></P>
<P>Local part: <xsl:value-of select="local-name()"/></P>
<P>Namespace URI: <xsl:value-of select="namespace-uri()"/></P>
<P>ID: <xsl:value-of select="id(.)"/></P>
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?><P>Element name: pp</P><P>Local part: pp</P><P>Namespace URI: </P><P>ID: </P>
<P>Element name: P</P><P>Local part: P</P><P>Namespace URI: </P><P>ID: </P>Element name: xsl:stylesheet
<P>Element name: P</P><P>Local part: P</P><P>Namespace URI: </P><P>ID: </P>Local part: stylesheet
<P>Element name: P</P><P>Local part: P</P><P>Namespace URI: </P><P>ID: </P>Namespace URI: http://www.w3.org/1999/XSL/Transform
<P>Element name: P</P><P>Local part: P</P><P>Namespace URI: </P><P>ID: </P>ID:
name(.) dot
File: Data.xml
<poem xmlns:red="http://www.wbex.ru/red"
xmlns:blue="http://www.wbex.ru/blue">
<red:title>From Book IV</red:title>
<blue:verse>line 1</blue:verse>
<red:verse>line 2</red:verse>
<blue:verse>line 3</blue:verse>
<verse>line 4</verse>
</poem>
File: Transform.xslt
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:red="http://www.wbex.ru/red"
xmlns:blau="http://www.wbex.ru/blue" version="1.0">
<xsl:output method="text" />
<xsl:template match="poem">
Namespace nodes:
<xsl:for-each select="namespace::*">
<xsl:value-of select="name()" />
<xsl:text> </xsl:text>
</xsl:for-each>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="blau:verse">
Found a blue verse. name
<xsl:value-of select="name()" />
local-name
<xsl:value-of select="local-name()" />
namespace-uri
<xsl:value-of select="namespace-uri()" />
contents
<xsl:apply-templates />
</xsl:template>
<xsl:template match="red:*">
Found a red node: name
<xsl:value-of select="name(.)" />
local-name
<xsl:value-of select="local-name(.)" />
namespace-uri
<xsl:value-of select="namespace-uri(.)" />
contents
<xsl:apply-templates />
</xsl:template>
<xsl:template match="verse">
Found a verse element from the default namespace: name
<xsl:value-of select="name(.)" />
local-name
<xsl:value-of select="local-name(.)" />
namespace-uri
<xsl:value-of select="namespace-uri(.)" />
contents
<xsl:apply-templates />
</xsl:template>
<xsl:template match="*" />
</xsl:stylesheet>
Output:
Namespace nodes:
xml blue red
Found a red node: name
red:title
local-name
title
namespace-uri
http://www.wbex.ru/red
contents
From Book IV
Found a blue verse. name
blue:verse
local-name
verse
namespace-uri
http://www.wbex.ru/blue
contents
line 1
Found a red node: name
red:verse
local-name
verse
namespace-uri
http://www.wbex.ru/red
contents
line 2
Found a blue verse. name
blue:verse
local-name
verse
namespace-uri
http://www.wbex.ru/blue
contents
line 3
Found a verse element from the default namespace: name
verse
local-name
verse
namespace-uri
contents
line 4
Use name() function to get attribute name
File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<cars>
<manufacturer name="Chevrolet">
<car>Cavalier</car>
<car>Corvette</car>
<car>Impala</car>
<car>Malibu</car>
</manufacturer>
<manufacturer name="Ford">
<car>Pinto</car>
<car>Mustang</car>
<car>Taurus</car>
</manufacturer>
<manufacturer name="Volkswagen">
<car>Beetle</car>
<car>Jetta</car>
<car>Passat</car>
<car>Touraeg</car>
</manufacturer>
</cars>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.wbex.ru"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
version="1.0">
<xsl:output method="xml"/>
<xsl:template match="*">
<xsl:element name="{name(.)}">
<xsl:for-each select="@*">
<xsl:if test="name(.) = "minOccurs"">
<xsl:if test=". != "1"">
<xsl:attribute name="{name(.)}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="name(.) = "maxOccurs"">
<xsl:if test=". != "1"">
<xsl:attribute name="{name(.)}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:if>
</xsl:if>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?><cars xmlns="http://www.wbex.ru">
<manufacturer>
<car>Cavalier</car>
<car>Corvette</car>
<car>Impala</car>
<car>Malibu</car>
</manufacturer>
<manufacturer>
<car>Pinto</car>
<car>Mustang</car>
<car>Taurus</car>
</manufacturer>
<manufacturer>
<car>Beetle</car>
<car>Jetta</car>
<car>Passat</car>
<car>Touraeg</car>
</manufacturer>
</cars>