Fleksibel XML med XSLT

Processering af XML-data udføres som regel med event-baseret læsning eller ved traversering af et dokument-træ. Men XSLT, XSL Transformations, kan løse en stor del af arbejdet og gør applikationerne fleksible. I den første del af tre artikler præsenterer vi XSLT.

XML og XSLT

XML betyder som bekendt eXtensible Markup Language. I 1998 blev standarden vedtaget af The World Wide Web Consortium. XML er en simpel version af SGML, Standard Generalized Markup Language, der er en ældre international standard fra 1986. Både SGML og XML er metasprog, hvilket betyder at de er et sprog om sprog.

XML er altså ikke er noget programmeringssprog. Det er et sprog for strukturerede data, som skrives i klar tekst. Derfor er det som udgangspunkt uafhængig af platformen. Vi har tidligere givet en generel indføring til XML her på PC World Online

Fra en implementeringsvinkel er styrken i XML at en genereliseret parser kan behandle alle typer af XML-data, så længe de blot følger standarden. I praksis har det betydet, af en stor del af parser-bibliotekerne alle bygger på englænderen James Clarks' kodebiblioteker. Når først koden er skrevet, kan den benyttes til alle typer af XML.

Anvendt XML

Anvendelser
Groft trukket op kan man opstille tre hovedanvendelser for XML:

  • XML på applikationsniveau
    Her anvendes XML som dataformat, som det kan ses i mange Office-pakker, medieformater som SVG, SMIL og så videre. Herudover ses også XML som erstatning for protokoller: I stedet for at definere en ny protokol, kan man benytte den eksisterende HTTP-protokol som forbindelsesmetode og XML som informationsbærer. Det ses i nye protokoller som SOAP og XML-implementeringen af EDIFact.

  • XML som middletier
    Ved at konvertere data fra et applikationsdefineret format til XML kan datakilder og applikationer udveksle data. Som tidligere nævnt er fordelene her, at kodebibliotekerne er skrevet på forhånd. Når et program i almindelighed skal importere et fremmed filformat, skal der kodes en binær parser, som er afhængig af formatet. Med XML er den interne organisation af data givet på forhånd, og det kan programmøren bruge til at udtrække de relevante datasæt.

  • XML som preprocessering
    Denne anvendelse er sværere at definere, da den på sin vis dækker de to tidligere anvendelser. Ideen er her, at nye datasæt nemt kan konstrueres udfra eksisterende XML-data. Det spændende er, at det er her XML rigtigt træder i karakter.

De to første anvendelsesområder er i og for sig blot økonomiske måder at løse gamle problemer på. Den rigtige spændende anvendelse af XML er til egentlig informationsprocessering. Indholdsstyret informationsbehandling er i stigende grad et fokusområde. Som eksempel kan nævnes datamining og knowlegde management.

Hvorfor XML

Hvorfor bruge XML
XML har her sin force, da det er designet til at håndtere strukturerede data. Kort sagt kan man sige, at XML giver data mening. I modsætning til andre typer af datahåndtering, er XML en blød måde at håndtere struktureret information.

Relationsdatabaser har hidtil været det eneste reelt brugbare alternativ til håndtering af struktureret information. Men relationsdatabaser er meget rigoristiske i deres dataorganisering. Databasedesign og applikationsdesign er nøje forbundet: valg truffet i den ene eller anden lejr påvirker modparten. For det første nedsætter det muligheden for at udvikle systemet uafhængigt af modparten. For det andet er der en meget lille grad af fleksibilitet. Selv små ændringer i datamodellen kan kræve store ændringer i databasen. Derefter skal applikationslaget også skrives om til at håndtere den nye datamodel.

Et andet problem er, at ordentligt databasedesign forudsætter normalisering, som kan gøre det svært at håndtere subtile datarelationer. Databaser har deres force i håndteringen af konkrete entiteter som telefonnumre, kontooplysninger, lageropgørelser med videre.

Man smider altså ikke lige bare et par ekstra tabeller og kolonner ind i basen, når behovet opstår. I XML har man derimod mulighed for strukturel fleksibilitet, hvor tilretning "on the fly" er muligt i langt større grad.

XML-processering

XML-processering
Der er tre måder at processere XML-data på:

  • Traversering af dokument-træet

  • De syntaktiske regler for XML gør, at et XML-dokument kan beskrives som et træ. Ved traversering forstås gennemvandring af træet og dets noder. I denne metode indlæses XML-data som et objekt i applikationen. En applikation kan dermed erhverve sig information om dokumentets struktur, og direkte tilgå enkelte noder, det vil sige specifikke tags og deres indhold.

  • Event-baseret parsing.
    Ved event-baseret parsing gennemløbes dokumentet kronologisk. Når parseren går ind i en specifik del af dokumentet, kaldes en brugerdefineret funktion. Event-baseret parsing gør det nemmere at se på tag-informationens kontekst.

  • XSLT
    Den tredie mulighed er XSLT. XSLT betyder XSL Transformations, og er den ene af de to komponenter i XSL-standarden. XSL er populært sagt style sheets til XML-dokumenter, og består udover XSLT af XSL Formatting Objects. XSL Formatting Objects er et XML-præsentationssprog beregnet til applikationsniveauet, på samme princip som Cascading Style Sheets relaterer sig til HTML.


Event-baseret XML-parsing. Parseren iværksætter en brugerdefineret funktion, når et givent tag parses.


Traversering af dokument-træet. Applikationen kan frit tilgå enkelte dele af træet.

Men hvor der normalt tænkes på præsentationslogik i forbindelse med style sheets, er XSLT beregnet til at transformere XML-data til nye sæt af XML-data med en anden struktur. Kort fortalt, er et XSLT-dokument en specifikation for transformering af XML-data til XML-data. Lad os se på et meget simpelt eksempel:

<opskrift>
  <navn>Varm kakao</navn>
  <indgredienser>
    <emne>Kakako-pulver</emne>
    <emne>Mælk</emne>
    <emne>Lidt vand</emne>
  </indgredienser>
</opskift>

Ved hjælp af et XSLT-dokument kunne XML-dokumentet transformeres til

<artikel>  
  <overskrift>Varm kakao</overskrift>
  <liste>
    Kakako-pulver<br />
    Mælk<br />
    Lidt vand<br />
  </liste>
</artikel>

Det er selvfølgelig kun et principielt eksempel. I den næste artikel gennemgår vi konkrete eksempler med XML og XSLT i praksis.

Hvorfor XSLT

Hvorfor bruge XSLT
I modsætning til de to parser-baserede tilgange til XML-processering, har XSLT nogle indlysende fordele. Hvor de parser-baserede metoder er specifikt programmeret til XML-dokumentets Document Type Definition (DTD), kræver XSLT ingen kodning. En ændring i DTD'en kræver blot en omskrivning af XSTL-dokumentet.

Det kan måske være svært at se anvendelsesmulighederne i XSLT, når man ser bort fra præsentationslogik. Men som tidligere nævnt har XML sin styrke i behandlingen af "bløde" data. Her er styrkerne ved XSLT at det kan benyttes som led i processer, der udfører kontekst-afhængig integration af data, og filtrering af data.

Man kunne tro at XSLT ikke kan bruges, når XML anvendes som dataformat. Data vil om regel kun give mening i en applikationskontekst, Men også her kan man benytte XSLT.

Lad os som eksempel forestille os, at en virksomhed eller organisation har store mængder information liggende som tekstbehandlings-dokumenter i XML-format. Hvis medarbejdere i virksomheden benytter en fælles skabelon til dokumentformatering, kunne man udtrække kontekst-specifikke elementer. På den måde kunne yderligere information udtrækkes. Her er altså tale om en simpel indgang til datamining. Det smarte er, at det ikke kræver en omfangsrig konvertering af den eksisterende viden, eller introduktion af nye systemer.

Anvendelsesmuligheder og begrænsninger
XSLT kan ikke bruges til alt. Der er ikke tale om et programmeringssprog, men det er jo også samtidigt styrken i standarden. Men XSLT kan klare en stor del af opgaverne. Man kan så kombinere med parsing, og man kan omskive sine DTD'er så det er nemmere at benytte XSLT på sine datasæt.

På denne måde kan XSLT løse et af problemerne ved XML's store succes: Nemlig den vildtvoksende skov af DTD'er. Med XSLT kan eksisterende XML-kilder transformeres til nye XML-data, der kan behandles i de eksisterende applikationer.

I den næste artikel kigger vi på et konkret eksempel på anvendelse af XSLT, og i en tredie artikel kigger vi på praktiske kodeeksempler.

Læses lige nu

    Annonce

    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.

    Sikkerhed | Online

    Det du glemmer i Azure - men aldrig on-prem: Sådan genfinder du kontrollen

    Undgå dyre fejl i Azure. Få styr på udfasede services, skjulte omkostninger og governance. Lær, hvordan Reserved Instances, Azure Hybrid Benefit og de rette styringsmekanismer giver mere værdi, lavere omkostninger og en mere robust Azure-platform....

    Infrastruktur | Nyborg

    IBM Infrastructure Days

    Hvordan skaber du en sikker, robust og moderne IT-infrastruktur i en tid, hvor AI, cloud og nye sikkerhedskrav ændrer spillereglerne?

    Se alle vores events inden for it

    Navnenyt fra it-Danmark

    Elbek & Vejrup A/S har pr. 15. august 2026 ansat Anne-Sofie Andreasen som Project Manager i Projekt & Service. Hun skal især beskæftige sig med ledelse og koordinering af projekter og serviceopgaver. Hun kommer fra en stilling som konsulent med fokus på digitale løsninger hos XFLow. Hun er uddannet cand.it. i IT, Kommunikation og Organisation. Hun har tidligere beskæftiget sig med analyse, udvikling, test og implementering af løsninger samt udarbejdelse af brugervejledninger. Nyt job

    Anne-Sofie Andreasen

    Elbek & Vejrup A/S

    Netip A/S har pr. 11. august 2026 ansat Emil Kristoffersen som IT-Supporterelev ved netIP's kontor i Thisted. Han er uddannet Fisker, - Emil har dermed valgt et karriereskifte. Nyt job

    Emil Kristoffersen

    Netip A/S

    Netip A/S har pr. 1. august 2026 ansat Ronni Randrup som Seniorkonsulent ved netIP's kontor i Aalborg. Han kommer fra en stilling som Operations Consultant hos Complea. Nyt job

    Ronni Randrup

    Netip A/S

    Arctic Wolf Networks har pr. 3. august 2026 ansat Johnny Krogsboll som Head of Sales Engineering for Norden.Med base i Stockholm får han ansvaret for Arctic Wolfs samlede Sales Engineering-organisation i den nordiske region.<br /><br />Johnny Krogsboll skal være med til at udbygge Arctic Wolfs tilstedeværelse i Norden og hjælpe virksomheder og organisationer med at stå stærkere over for et stadig mere komplekst cybertrusselsbillede. Det skal blandt andet ske i tæt samarbejde med Arctic Wolfs vigtigste kanalpartnere i regionen.<br /><br />Gennem sin karriere har Johnny Krogsboll arbejdet med og rådgivet virksomheder hos blandt andre Hewlett-Packard, Trend Micro og Palo Alto Networks med fokus på at skabe konkret værdi af deres teknologiinvesteringer. Nyt job

    Johnny Krogsboll

    Arctic Wolf Networks