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.

Computerworld Events

Vi samler hvert år mere end 6.000 deltagere på mere end 70 events for it-professionelle.

Ekspertindsigt – Lyt til førende specialister og virksomheder, der deler viden om den nyeste teknologi og de bedste løsninger.
Netværk – Mød beslutningstagere, kolleger og samarbejdspartnere på tværs af brancher.
Praktisk viden – Få konkrete cases, værktøjer og inspiration, som du kan tage direkte med hjem i organisationen.
Aktuelle tendenser – Bliv opdateret på de vigtigste dagsordener inden for cloud, sikkerhed, data, AI og digital forretning.

It-løsninger | København Ø

Automatisering med Copilot & Agentic AI

Høst viden og erfaringer fra andre om, hvordan Copilot og Agentic AI i praksis kan skabe værdi og fleksibilitet i din organisation.

Sikkerhed | Online

Erfaringer fra frontlinjen: Sådan ændrer trusselsbilledet sig

Kort og fokuseret digitalt event: Erfaren frontkæmper fra den digitale sikkerhedsverden giver dig overblik og konkrete anbefalinger til det aktuelle trusselsbillede.

Andre events | Valby

CIO Challenges: Teknologi, transformation og ledelse der flytter forretningen

Hvordan moderniseres en it-platform uden legacy? Hvordan skaber man nye AI‑ og cloud‑drevne forretningsmodeller – uden at miste medarbejdere eller brugere undervejs? På CIO Challenges 2025 får du hands‑on erfaringer fra fire danske CIO’er, der...

Se alle vores events inden for it

Navnenyt fra it-Danmark

Norriq Danmark A/S har pr. 1. september 2025 ansat Alexander Bendix som Consultant. Han skal især beskæftige sig med tilføre nye, friske perspektiver og værdifuld viden til NORRIQS Data & AI-afdeling. Nyt job

Alexander Bendix

Norriq Danmark A/S

Norriq Danmark A/S har pr. 1. oktober 2025 ansat Rasmus Stage Sørensen som Operations Director. Han kommer fra en stilling som Partner & Director, Delivery hos Impact Commerce. Han er uddannet kandidat it i communication and organization på Aarhus University. Han har tidligere beskæftiget sig med med at drive leveranceorganisationer. Nyt job

Rasmus Stage Sørensen

Norriq Danmark A/S

Signifly har pr. 1. august 2025 ansat Morten Eskildsen som UX Lead. Han skal især beskæftige sig med styrke bureauets kompetencer inden for UX og digital strategi i konsulentteamet og arbejde på tværs af alle afdelinger. Han kommer fra en stilling som CDO, UX & Digital Strategy Consultant hos Zupa. Nyt job

Morten Eskildsen

Signifly