XSLT

Question: Kuka kehitti XML-kielen?

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-taulukolla:
<?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 saanti 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"
</xsl:text>
      <xsl:apply-templates select="henkilo"/>
   </xsl:template>

   <xsl:template match="henkilo">
      <xsl:value-of select="concat('"', @id, '","',
                    etunimi, '","', sukunimi, '"
')"/>
   </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
 Transclusion error: {{En}} is only for use in File namespace. Use {{lang-en}} or {{en icon}} instead.



Luokka:XML
Luokka:Ohjelmointikielet
Luokka:Merkintäkielet