XML/XSLT stylesheet/self — различия между версиями

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

Текущая версия на 11:26, 26 мая 2010

self::node()

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="Transform.xslt" type="text/xsl"?> <employees xmlns="http://www.domain.ru/namespace/employee">

 <title>Employee Data File</title>
 <employee eid="1" dept="programming">
   <contact addInfo="info1">
     <name>
       <firstName>Joe</firstName>
       <middleName int="B">Brian</middleName>
       <lastName>Smith</lastName>
     </name>
     <address>
       <street>1 Drive</street>
       <city>Vancouver</city>
       <state>BC</state>
       <zipcode>80210</zipcode>
     </address>
     <phone>
       <tel type="wk">111-1111111</tel>
       <tel type="hm">222-222222</tel>
       <fax>303-4667357</fax>
     </phone>
     <email>a@a.ru</email>
   </contact>
   <hireDate>2008-10-29</hireDate>
 </employee>

</employees>

File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:output method="html" indent="yes" />
  <xsl:template match="/">
     <html>
        <head>
           <title>Employee Data Output</title>
        </head>
        <body>
           <xsl:apply-templates select="employees/employee" />
        </body>
     </html>
  </xsl:template>
  <xsl:template match="employee">

<xsl:value-of select="parent::node()/title" />

<xsl:for-each select="self::node()"> </xsl:for-each>
Number Email
                 <xsl:number />
                 <xsl:value-of select="contact/email" />
  </xsl:template>

</xsl:stylesheet> Output: <html>

  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <title>Employee Data Output</title>
  </head>
  <body></body>

</html>

</source>
   
  


test="self::para[@fontsize="agate"]"

   <source lang="xml">

File: Data.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="Transform.xslt"?> <advertisement action="create">

   asdf

</advertisement> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0">
 <xsl:output method="text" indent="no" />
 <xsl:variable select="advertisement/text" name="path" />
 <xsl:template match="/">
   <xsl:apply-templates select="$path" />
 </xsl:template>
 <xsl:template match="text">
   <xsl:apply-templates />
 </xsl:template>
 <xsl:template match="headline">
   <xsl:text>\F4</xsl:text>
   <xsl:value-of select="text()" />
 </xsl:template>
 <xsl:template match="para">
   <xsl:if test="self::para[@fontsize="agate"]">
     <xsl:text>&#13;\F1</xsl:text>
     <xsl:value-of select="text()" />
   </xsl:if>
   <xsl:if test="self::para[@justify="flushleft"]">
     <xsl:text><</xsl:text>
   </xsl:if>
 </xsl:template>

</xsl:stylesheet>

</source>
   
  


value-of select="self::node()"

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="Transform.xslt" type="text/xsl"?> <employees>

 <head:header xmlns:head="http://www.domain.ru/namespace/header">
   <title>Employee Data File</title>
   <maintainer>developer 1</maintainer>
 </head:header>
 <employee eid="1" dept="programming">
   <contact addInfo="info1">
     <name>
       <firstName>Joe</firstName>
       <middleName int="B">Brian</middleName>
       <lastName>Smith</lastName>
     </name>
     <address>
       <street>1 Drive</street>
       <city>Vancouver</city>
       <state>BC</state>
       <zipcode>80210</zipcode>
     </address>
     <phone>
       <tel type="wk">111-1111111</tel>
       <tel type="hm">222-222222</tel>
       <fax>303-4667357</fax>
     </phone>
     <email>a@a.ru</email>
   </contact>
   <hireDate>2008-10-29</hireDate>
 </employee>

</employees> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0">
 <xsl:output method="html" indent="yes" />
 <xsl:template match="/">
   <html>
     <head>
       <title>Employee Output</title>
     </head>
     <body>
<xsl:apply-templates select="employees/employee" />
Number Email
     </body>
   </html>
 </xsl:template>
 <xsl:template match="employee">
   <tr>
     <td>
       <xsl:number />
     </td>
     <xsl:apply-templates select="contact/email" />
   </tr>
 </xsl:template>
 <xsl:template match="contact/email">
   <td>
     <xsl:value-of select="self::node()" />
   </td>
 </xsl:template>

</xsl:stylesheet> Output: <html>

  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <title>Employee Output</title>
  </head>
  <body>
Number Email
1 a@a.ru
  </body>

</html>

</source>