XSLT

Wikipediasta
Siirry navigaatioon Siirry hakuun

XSLT (lyhenne sanoista Extensible Stylesheet Language Transformations) on XML-pohjainen merkintäkieli XML-tiedostojen muunnoksiin. Kielen perusperiaatteisiin kuuluu, että alkuperäistä dokumenttia (tässä tapauksessa XML-dokumenttia) ei muuteta, vaan pikemminkin pinnoitetaan aivan kuten Cascading Style Sheets tekee hypertekstille (HTML- ja XHTML-dokumenteille). XSLT-kuvauskieli ei ota myöskään kantaa ulosantiin, jolloin yhdestä ja samasta XML-dokumentista on mahdollista saada ulos niin HTML-taittoinen, ihmisluettava sivu kuin konekielinen, esimerkiksi CSV-tiedostokin.

World Wide Web Consortium kehitti XSLT:n aikaisemman, Extensible Stylesheet Languagen seuraajaksi vuosien 1998 ja 1999 aikana. Tuolloin kehitettiin myös XSL Formatting Objects sekä XPath. Nykyisin yleisimmin käytössä on versio 1.0, mutta 3. lokakuuta 2005 W3C myönsi alustavan suosituksen XSLT 2.0:lle.

XML-dokumentin muuntaminen

[muokkaa | muokkaa wikitekstiä]
<?xml version="1.0" encoding="iso-8859-1"?>
<henkilot>
   <henkilo id="1234-A">
      <etunimi>Matti</etunimi>
      <sukunimi>Meikäläinen</sukunimi>
   </henkilo>
   <henkilo id="5678-C">
      <etunimi>Maija</etunimi>
      <sukunimi>Meikäläinen</sukunimi>
   </henkilo>
</henkilot>

Yllä oleva dokumentti sisältää siis kaksi henkilöä, Matti Meikäläisen sekä Maija Meikäläisen. Kun mietitään selkokielisempää esitystapaa, voitaisiin dokumentti esittää esimerkiksi HTML-taulukkona XSL-tyylisivun kautta:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
        xmlns="http://www.w3.org/1999/xhtml">

   <xsl:output method="xml" indent="yes" encoding="iso-8859-1"
       doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
       doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
    
   <!-- XHTML-dokumentin ylätunniste --> 
   <xsl:template match="/">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi" lang="fi">
         <head>
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8951-1" />
            <title>Meikäläiset</title>
         </head>
         <body>
            <xsl:apply-templates/>
         </body>
      </html>
   </xsl:template>
    
   <!-- taulukko -->
   <xsl:template match="henkilot">
      <h1>Henkilöt</h1>
      <table>
         <tr>
            <th>id</th>
            <th>Etunimi</th>
            <th>Sukunimi</th>
         </tr>
         <xsl:apply-templates/>
      </table>
   </xsl:template>

   <!-- henkilörivit -->
   <xsl:template match="henkilo">
      <tr>
         <td><xsl:value-of select="@id"/></td>
         <td><xsl:value-of select="etunimi"/></td>
         <td><xsl:value-of select="sukunimi"/></td>
      </tr>
   </xsl:template>
    
</xsl:stylesheet>

Toisaalta CSV-tiedoston tuottaminen samasta tiedostosta tapahtuisi taas:

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

   <xsl:output method="text"/> 

   <xsl:template match="/henkilot">
      <xsl:text>"id","Etunimi","Sukunimi"&amp;#10;</xsl:text>
      <xsl:apply-templates select="henkilo"/>
   </xsl:template>

   <xsl:template match="henkilo">
      <xsl:value-of select="concat('&amp;quot;', @id, '&amp;quot;,&amp;quot;',
                    etunimi, '&amp;quot;,&amp;quot;', sukunimi, '&amp;quot;&amp;#10;')"/>
   </xsl:template>
   
</xsl:stylesheet>

XSLT:n ominaisuudet

[muokkaa | muokkaa wikitekstiä]

XSLT sisältää valintalauseissa täydellisen tuen XPath:lle, ja sisältää itsessään seuraavat valitsimet:

  • <xsl:template>
    • Käytetään mallineiden luomiseen
  • <xsl:value-of>
    • Käytetään tietojen noutamiseen xml-tagista
  • <xsl:for-each>
    • Käytetään tietojen läpikäymiseen moniulotteisessa xml-datataulukossa
  • <xsl:sort>
    • Käytetään lajittelemaan moniulotteisen xml-datataulukon tietoja
  • <xsl:if>
    • Käytetään toteuttamaan tietyn ehdon täyttävä kohde
  • <xsl:choose> ja <xsl:otherwise>
    • Käytetään toteuttamaan moniulotteinen JA-TAI ehtolauseke

Valitsimien lisäksi XSLT:lla on joitakin omia funktioita. Näitä ovat:

  • current()
  • document()
  • element-available()
  • format-number()
  • function-available()
  • generate-id()
  • key()
  • system-property()
  • unparsed-entity-uri()

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]