XML/XSLT stylesheet/name
Element name: <xsl:value-of select="name()"/>
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="utf-8"?> <pp>
Element name: xsl:stylesheet
Local part: stylesheet
Namespace URI: http://www.w3.org/1999/XSL/Transform
ID:
</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="*">
Element name: <xsl:value-of select="name()"/>
Local part: <xsl:value-of select="local-name()"/>
Namespace URI: <xsl:value-of select="namespace-uri()"/>
ID: <xsl:value-of select="id(.)"/>
<xsl:apply-templates /> </xsl:template>
</xsl:stylesheet> Output:
<?xml version="1.0" encoding="UTF-8"?>Element name: pp
Local part: pp
Namespace URI:
ID:
Element name: P
Local part: P
Namespace URI:
ID:
Element name: xsl:stylesheetElement name: P
Local part: P
Namespace URI:
ID:
Local part: stylesheetElement name: P
Local part: P
Namespace URI:
ID:
Namespace URI: http://www.w3.org/1999/XSL/TransformElement name: P
Local part: P
Namespace URI:
ID:
ID:</source>
name(.) dot
<source lang="xml">
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 </source>
Use name() function to get attribute name
<source lang="xml">
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>
</source>