XML/XSLT stylesheet/name

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

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:stylesheet

Element name: P

Local part: P

Namespace URI:

ID:

Local part: stylesheet

Element name: P

Local part: P

Namespace URI:

ID:

Namespace URI: http://www.w3.org/1999/XSL/Transform

Element 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>