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.




Brancheguiden
Brancheguide logo
Opdateres dagligt:
Den største og
mest komplette
oversigt
over danske
it-virksomheder
Hvad kan de? Hvor store er de? Hvor bor de?
Alfapeople Nordic A/S
Rådgivning, implementering, udvikling og support af software og it-løsninger indenfor CRM og ERP.

Nøgletal og mere info om virksomheden
Skal din virksomhed med i Guiden? Klik her

Kommende events
Computerworld Cloud & AI Festival 2025

Med den eksplosive udvikling indenfor cloud & AI er behovet for at følge med og vidensdeling større end nogensinde før. Glæd dig til to dage, hvor du kan netværke med over 2.400 it-professionelle, møde mere end 50 it-leverandører og høre indlæg fra +90 talere. Vi sætter fokus på emner som AI; infrastruktur, compliance, sikkerhed og løsninger for både private og offentlige organisationer.

17. september 2025 | Læs mere


IT og OT i harmoni: Sikring uden at gå på kompromis med effektiviteten

IT og OT smelter sammen – men med risiko for dyre fejl. Få metoder til sikker integration med ERP, kundesystemer og produktion. Tilmeld dig og få styr på forskellene og faldgruberne.

24. september 2025 | Læs mere


NIS2: Vi gør status efter tre måneder og lærer af erfaringerne

Vær med, når vi deler oplevelser med implementering af NIS2 og drøfter, hvordan du undgår at gentage erfaringerne fra GDPR – og særligt undgår kostbar overimplementering.

30. september 2025 | Læs mere