XML/XSLT stylesheet/name

Материал из Web эксперт
Перейти к: навигация, поиск

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>