XML-transformering med XSLT

XSLT, XSL Transformations, er en hurtig og nem måde at behandle XML-data på. I forrige artikel så vi på anvendelsesmulighederne, og i denne artikel ser vi på, hvordan XSLT er opbygget.

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.

Klik her for at se eksemplet.

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.

Læses lige nu

    Event: Cyber Security Festival 2026

    Sikkerhed | København

    Mød Danmarks skrappeste it-sikkerhedseksperter og bliv klar til at planlægge og eksekvere en operationel og effektiv cybersikkerhedsstrategi, når vi åbner dørene for +1.700 it-professionelle. Du kan glæde dig til oplæg fra mere end 70 talere og møde mere end 50 leverandører over to dage.

    18 & 19 november 2026 | Gratis deltagelse

    Navnenyt fra it-Danmark

    Immeo har pr. 1. maj 2026 ansat Sofie Amalie Buur som Consultant. Hun kommer fra en stilling som Frontend Engineer & UI/UX Designer hos Valyrion. Hun er uddannet Cand.it. Softwaredesign ved ITU. Nyt job
    Steen Marquard,  Jabra, er pr. 15. juni 2026 udnævnt som Regional President for Norden og UK. Han er uddannet HD(O). Han beskæftiger sig med I sin nye rolle får Steen ansvar for at videreudvikle salget af virksomhedens professionelle lyd- og videoløsninger, samt styrke samarbejdet med channel teams og partnere på tværs af regionen. Udnævnelse
    SAP SuccessFactors Partner Pentos har pr. 1. marts 2026 ansat Plamena Cherneva som Seniorkonsulent indenfor SuccessFactors HCM. Hun skal især beskæftige sig med konfiguration og opsætning af SuccessFactors suiten, samt udvikle smarte løsninger til mellemstore danske virksomheder. Hun kommer fra en stilling som løsningsarkitekt indenfor HR IT hos LEO Pharma. Hun har tidligere beskæftiget sig med HR procesdesign, stamdata og onboarding. Nyt job

    Plamena Cherneva

    SAP SuccessFactors Partner Pentos

    Netip A/S har pr. 1. april 2026 ansat Claus Berg som Account Manager ved netIP's kontor i Esbjerg. Han kommer fra en stilling som Client Manager hos itm8. Nyt job

    Claus Berg

    Netip A/S