XSLT

XSLT () 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

<?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"&#10;</xsl:text>
      <xsl:apply-templates select="henkilo"/>
   </xsl:template>

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

XSLT:n ominaisuudet

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()

Katso myös
 XML
XPath
XSL-FO
XForms

Aiheesta muualla 
 W3Schools lyhyt opastus XSLT:hen 
 XSLT opetusohjelma 
 XSLT 2.0 viittaus 
 XSLT ja XPath viite  

XML
Ohjelmointikielet