XSLT-standarden
I den forrige artikel, Fleksibel XML med XSLT, så vi hvilke fordele, XSLT har i forhold til programmatisk behandling af XML-data. Et af problemerne ved den store succes, XML har fået, er at der er en stor mængde af DTD-definitioner at forholde sig til, og her kan XSLT hjælpe til ved at omforme XML-data til nye sæt af XML-data, der så kan behandles i en eksisterende applikation.
Som regel vil en XSLT-transformering foregå i to skridt. Det første trin er at omstrukturere data, og det andet trin er at formatere data. Formatere behøves ikke at betyde HTML-koder - det kan også være et nyt sæt af XML-tags, der benyttes.
XSLT-standarden er stor og favner bredt, og det vil være for stor en mundfuld at gennemgå alle mulighederne her. Til sidst i artiklen giver vi en række links i stigende sværhedsgrad, der tilsammen kan udgøre en god indføring.
Her berører vi overfladisk de grundlæggende elementer i XSLT.
Et eksempel
Det grundlæggende er at definere en template, en skabelon, udfra et givent tag. Lad os først se et meget simpelt eksempel:
<artikel>
En lille artikel om XML.
</artikel>
<xsl:template match="artikel">
<html><body>
<xsl:value-of />
</body></html>
</xsl:template>
Her vil XSLT-processoren matche alle forekomster af artikel. I resultat-træet, som er navnet for output, vil der først blive indsat "<html><body>", efterfulgt af indholdet i <artikel>-tagget, som er teksten "En lille artikel om XML.", og derefter "</body></html>".
Template-match er det grundlæggende element i XSLT. XSLT-dokumenter skal starte med elementet
<xsl:template match="/">
som betyder, at alle skabeloner i dokumentet skal behandles. Derefter kan der tilføjes skabeloner for indlejrede elementer, som for eksempel
<xsl:template match="overskrift">
<p><font face="arial,helvetica" size="3"><b>
<xsl:value-of />
</b></font></p>
</xsl:template>
Alle elementer af typen
<overskrift>XSLT redder dagen for webudvikler</overskrift>
vil nu blive indkapslet af html-koderne i eksemplet.
Blandt de elementer, man oftest støder på er: apply-templates, for-each og value-of.
Elementet value-of substituerer indholdet i et element. Det kan bruges med attributten select, som kan udtrække underelementer.
Apply-templates fortæller XSLT-processoren, at efterfølgende elementer skal behandles med de templates, der er defineret i XSLT-dokumentet.
For-each elementet giver mulighed for at gennemløbe en række af elementer.
Udover de her nævnte, er der en mængde andre elementer i XSLT.
Lad os se på et større eksempel, der kan give et bedre indtryk af rækkevidden i XSLT. Brugere af Internet Explorer 5 kan se det genereret, mens andre må nøjes med en skærmdump.
Man skal dog ikke prøve på at skrue en XML-datakilde ind i en intrikat formatering med vold og magt. Som vi bemærkede i den forrige artikel, skal XSLT ses som et supplement til en programmeringsmæssig behandling, og ikke som et ekskluderende alternativ.
Videre læsning
Et lille link-kursus
Der er ikke så mange ressourcer på nettet om XSLT, men her har vi fundet nogle gode steder.
Kapitel 1 af bogen XSLT Programmers guide giver en glimrende indføring i baggrunden for XSLT.
Understanding XSLT - et lille men gennembearbejdet introduktionseksempel fra Webmonkey.
Kapitel 14 af the XML Bible: XSL Transformations - en god, praktisk og letforståelig gennemgang af XSLT på omkring 65 sider.
En lille tutorial fra Edinburgh University, om at løse ofte forekommende problemer ved udforming af XSLT-dokumenter, der skal omstrukturere XML-data.
XSLTs websted på W3.org - links til ressourcer, og selve specifikationen, der kan være tung læsning, og skal gemmes til sidst.
I den næste og sidste artikel om XML med XSLT, kigger vi på programmeringseksempler med Open Source XSLT-processoren Sablotron, der findes til de fleste platforme.