XML Tutorial/XSLT stylesheet/import

Материал из Web эксперт
Версия от 08:26, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Call template from another file

File: Data.xml
<?xml version="1.0"?>
<PopulationChange segment="Top 3">
 <State>
  <Name>California</Name>
  <Population>35116033</Population>
  <Rank>1</Rank>
  <Increase>515570</Increase>
  <PercentChange>1.5</PercentChange> 
 </State>
 <State>
  <Name>Texas</Name>
  <Population>21779893</Population>
  <Rank>2</Rank>
  <Increase>408910</Increase>
  <PercentChange>1.9</PercentChange> 
 </State>
</PopulationChange>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:import href="wspace.xsl" />
  <xsl:template match="State">
    <xsl:text>Rank:</xsl:text>
    <xsl:call-template name="sp1" />
    <xsl:value-of select="Rank" />
    <xsl:call-template name="n1" />
    <xsl:text>State:</xsl:text>
    <xsl:call-template name="sp1" />
    <xsl:value-of select="Name" />
    <xsl:call-template name="n2" />
  </xsl:template>
</xsl:stylesheet>

File:  wspace.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template name="sp1">
    <xsl:text>&#32;</xsl:text>
  </xsl:template>
  <xsl:template name="sp2">
    <xsl:text>&#32;</xsl:text>
    <xsl:text>&#32;</xsl:text>
  </xsl:template>
  <xsl:template name="sp3">
    <xsl:text>&#32;</xsl:text>
    <xsl:text>&#32;</xsl:text>
    <xsl:text>&#32;</xsl:text>
  </xsl:template>
  <xsl:template name="n1">
    <xsl:text>&#10;</xsl:text>
  </xsl:template>
  <xsl:template name="n2">
    <xsl:text>&#10;</xsl:text>
    <xsl:text>&#10;</xsl:text>
  </xsl:template>
  <xsl:template name="n3">
    <xsl:text>&#10;</xsl:text>
    <xsl:text>&#10;</xsl:text>
    <xsl:text>&#10;</xsl:text>
  </xsl:template>
</xsl:stylesheet>


xsl:import example

File: Data.xml
<?xml version = "1.0"?>
<?xml:stylesheet type = "text/xsl" href = "Transform.xslt"?>
<book isbn = "999-99999-9-X">
   <title>XML</title>
   <author>
      <firstName>Paul</firstName>
      <lastName>Deitel</lastName>
   </author>
   <chapters>
      <preface num = "1" pages = "2">Welcome</preface>
      <chapter num = "1" pages = "4">Easy XML</chapter>
      <chapter num = "2" pages = "2">XML Elements?</chapter>
      <appendix num = "1" pages = "9">Entities</appendix>
   </chapters>
   <media type = "CD"/>
</book>
File: Transform.xslt
<?xml version = "1.0"?>
<xsl:stylesheet version = "1.0" 
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
   <xsl:import href = "usage2.xsl"/>
   <xsl:template match = "title">
      <h2>
         <xsl:value-of select = "."/>
      </h2>
   </xsl:template>
</xsl:stylesheet>

File: usage2.xsl
<?xml version = "1.0"?>
<xsl:stylesheet version = "1.0" 
       xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
   <xsl:template match = "book">
      <html>
         <body>
            <xsl:apply-templates/>
         </body>
      </html>
   </xsl:template>
   <xsl:template match = "title">
      <xsl:value-of select = "."/>
   </xsl:template>
   <xsl:template match = "author">
      <br/>
      <paragraph>Author:
         <xsl:value-of select = "lastName"/>,
         <xsl:value-of select = "firstName"/>
      </p>
   </xsl:template>
   <xsl:template match = "*|text()"/>
</xsl:stylesheet>