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

    Annonce

    Forsvarsministeriets Materiel- og Indkøbsstyrelse

    Cyberdivisionen søger sektionschef til Systemafdelingen i Hvidovre

    Københavnsområdet

    BEC Financial Technologies

    Sr. Business Analyst for Accounting Data & Monitoring

    Region Sjælland

    Politiets Efterretningstjeneste

    Forretningsanalytiker til PET's IT-afdeling

    Københavnsområdet

    Forsvarsministeriets Materiel- og Indkøbsstyrelse

    Applikationsarkitekt til stor applikationstransformation i Forsvaret

    Københavnsområdet

    Event: Computerworld Summit 2027 - København

    Digital transformation | København

    Styrk din digitale strategi med konkret brug af AI og ny teknologi. Mød 250 it-professionelle, få indsigter, løsninger og netværk på én dag. Computerworld Summit i København viser hvordan teknologi skaber forretningsværdi – her og nu.

    20. maj 2027 | Gratis deltagelse

    Navnenyt fra it-Danmark

    Arctic Wolfs Network har pr. 1. september 2026 ansat Victor Dohlmann som Sales Director for Nordics. Nyt job

    Victor Dohlmann

    Arctic Wolfs Network

    Norriq Danmark A/S har pr. 1. juni 2026 ansat Ida Laursen som Junior Consultant. Hun skal især beskæftige sig med at understøtte vores konsulenter med praktiske og analytiske opgaver på diverse kundeprojekter. Hun kommer fra en stilling som Webassistent hos PWT Group A/S. Hun er uddannet bachelor i International Virksomhedskommunikation og er i gang med en kandidat i IT-ledelse. Hun har tidligere beskæftiget sig med kommunikation og webindhold. Nyt job

    Ida Laursen

    Norriq Danmark A/S

    Genetec har pr. 1. august 2026 ansat Jan Julin som Channel Account Executive. Han skal især beskæftige sig med styrke samarbejdet med partnere og kunder i Danmark, Finland og Baltikum. Han kommer fra en stilling som Senior Business Development Manager hos Dahua Technology. Han har tidligere beskæftiget sig med videoovervågning, adgangskontrol, sikkerhedsteknologi, salg og forretningsudvikling. Nyt job

    Jan Julin

    Genetec

    Netip A/S har pr. 14. september 2026 ansat Andreas Thorø Møller som Systemkonsulent ved netIP's kontor i Aarhus. Han kommer fra en stilling som Endpoint Consultant hos Fellowmind Denmark A/S. Han er uddannet Datatekniker. Nyt job