XSL FO - fremtidens HTML

HTML har efterhånden mange år på bagen. Sproget, som ligger bag internettets utallige websider, har gennemgået mange forandringer, som har afspejlet forskellige tiders behov. Den næste generation af visuelle opmærkningssprog hedder XSL Formatting Objects, og det ligner absolut ikke HTML. Der er heldigvis endnu god tid til at lære sproget at kende.

Mere komplekst end HTML

HTML er efterhånden blevet en gammel sag, som har udviklet sig i zig-zag krus frem til de versioner af XHTML, som anvendes i dag. De første versioner af HTML specificerede ikke typografier, men derimod mening. Der var for eksempel ikke noget mærke (tag) til fed skrift, men til gengæld var der et mærke, der hed emphasis (fremhævning). Da World Wide Web brød igennem som massemedium, opfandt Netscape de typografiske formateringskoder, som endte med at blive til HTML3.2-standarden.

Problemet med HTML er, at det kun giver teksten mening i forbindelse med visuel aflæsning i en browser. Hvis vi opmærker en artikel, kan vi for eksempel sætte forfatter-navnet i fed skrift. Men vi kan så ikke senere aflæse eksempelvis overskrift, forfatter og brødtekst ud fra koden, da vi kun har en formateret tekst, og ikke oplysninger om, hvad de forskellige elementers betydning er.

XML løser problemet med mening. Med XML kan man definere sine egne mærker, og derudover kan man definere stil-elementer og layout for sig selv, således at indhold og præsentation separeres.

Formatering kan tilknyttes XML-dokumenter på to måder: Ved hjælp af Cascading Style Sheets (CSS), som kendes fra HTML, og ved hjælp af XSL Formatting Objects, som er den ene del af XSL-standarden (Extensible Stylesheet Language). Den anden del, XSLT, som transformerer XML-data til nye sæt af XML-data, har vi tidligere gennemgået i en række artikler. Standarden XSL Formatting Objects blev færdiggjort i oktober sidste år under World Wide Web-konsortiets regi.

CSS og XSL FO er fundamentalt forskellige måder at formatere indhold på. CSS deklarerer layout-specifikationer, såkaldte regler, uafhængigt af HTML- eller XHTML-koden. Ved at indsætte en Class-attribut i HTML-mærket forbindes en bestemt formatering sammen med den kode, som er indlejret under HTML-mærket. XSL FO går faktisk et skridt baglæns, og blander formatering med indhold, ligesom HTML3.2. Det kræver selvfølgelig en forklaring.

Ikke for mennesker
Et af målene for HTML var, at det skulle være muligt for mennesker at kode dokumenterne i hånden med et simpelt tekstbehandlingsprogram. XSL FO bryder afgørende med dette princip, og selv om det da er muligt at skrive XSL FO-baserede dokumenter på den gammeldags facon, så fokuserer standarden i højere grad på et stort udbud af funktionalitet og fleksibilitet.

Dette medfører en høj grad af kompleksitet, og derfor vil XSL FO-baserede dokumenter ofte være slutproduktet af en række behandlinger, som typisk vil benytte XML-data sammen med XSLT-skabeloner for at producere det færdige XSL FO-dokument, der så kan gengives i en menneskelig forståelig form. Det behøves ikke nødvendigvis betyde en browser som vi kender dem, men dækker også andre slutmedier, så som papirprint eller andre typer af enheder, som for eksempel lommecomputere.

Et simpelt eksempel

Et simpelt eksempel
Der er som nævnt mange elementer i XSL FO, så det følgende eksempel berører kun sprogets muligheder ganske overfladisk. Eksemplet bygger på firmaet RenderX's udmærkede introduktion til XSL FO, som kan findes på firmaets hjemmeside.

<?xml version="1.0" encoding="iso-8859-1"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="min-side">
      <fo:region-body margin="1in"/>
    </fo:simple-page-master>
  </fo:layout-master-set>

  <fo:page-sequence master-reference="min-side">
    <fo:flow flow-name="xsl-region-body">
      <fo:block>Hej verden.</fo:block>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

Rod-elementet i XSL FO hedder såmænd bare root, og XML-navnerummet (namespace) benytter oftest prefikset fo som det ses her. Det næste element, layout-master-set, indeholder et eller flere elementer, som definerer en såkaldt master-side, der virker som en skabelon for alle siderne i dokumentet. Her i eksemplet defineres skabelonen min-side med kun et område (region), som har en margin på en tomme.

Efter elementet layout-master-set kommer page-sequence. Sider i dokumentet er grupperet i sekvenser (sequences). Den layout-skabelon, som skal anvendes, specificeres med attributten master-reference, som refererer til en skabelon, der er defineret i det tidligere element layout-master-set.

Det næste element, flow, indeholder selve de elementer, som skal vises. Alle de elementer, som er indlejret under flow-elementet, bliver formateret i den region, som er angivet ved attributten flow-name.

Elementet block, som følger efter, minder om DIV-mærket i HTML. Det er nødvendigt her, fordi tekst ikke kan placeres direkte under flow-elementet.

Eksemplet her giver kun en lille smagsprøve på XSL FO, som indeholder et stort antal elementer og attributter. En anden god engelsksproget introduktion findes på websitet XML.com

Rendering
XSL FO er en forholdsvis ny standard, så der er ikke mange så mange renderings­applikationer endnu. En af de få eksisterende er Fop, som er udviklet af Apache-gruppens XML-projekt. Fop skulle ifølge gruppen være den første XSL FO-renderingsmaskine. Det er en open source Java-applikation, som kan generere uddata i så forskellige formater som PDF, PostScript, SVG, Print og TXT-filer.

FOP benyttes i den finske eksperimentalbrowser X-Smiles. En række andre implementeringer kan findes på World Wide Web-konsortiets hjemmeside for XSL, hvor der også findes en række links til introducerende artikler og andet referencemateriale.

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger Business Relationship Manager

Københavnsområdet

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger Entreprise Arkitekt

Københavnsområdet

AP Pension

AP Pension søger erfaren Product Owner

Københavnsområdet

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 | Højbjerg, Aarhus

Cyber Security Summit 2026 - Aarhus

Lær om organisationers evne til at modstå, håndtere og komme videre efter alvorlige digitale hændelser, herunder ledelsesansvar, forretningskritiske afhængigheder og de valg, der afgør, om plan B holder, når systemer eller leverandører svigter.

Digital transformation | Aarhus

AI i det offentlige - Aarhus

Hør hvordan offentlige AI-løsninger skaleres til stabil drift med reel effekt. Få erfaringer, arkitekturvalg og styringsgreb fra frontløbere. Lær at bygge fælles AI-infrastruktur med ansvarlighed, sikkerhed og compliance.

Digital transformation | Køge

Derfor skal du videre fra Dynamics AX – og sådan gør du

Computerworld giver klar viden om vejen videre fra Dynamics AX. Du ser forskellen mellem AX og moderne cloud-ERP og får et konkret beslutningsgrundlag for næste skridt. Tilmeld dig og få styr på skiftet til Dynamics 365 FO eller BC.

Se alle vores events inden for it

Navnenyt fra it-Danmark

Trafikstyrelsen har pr. 1. maj 2026 ansat Nihad Hodzic som IT og Digitaliseringschef. Han skal især beskæftige sig med med IT-projekter og digital transformation, herunder især det strategiske løft af Trafikstyrelsens digitale niveau. Han kommer fra en stilling som Kontorchef hos Udviklings og Forenklingsstyrelsen. Han er uddannet i statskundskab og har en lederuddannelse fra MIT Sloan, samt en igangværende Master i IT-Ledelse. Han har tidligere beskæftiget sig med IT-udvikling og større projekter på momsområdet, hvor han har ledet et projekt- og udviklingskontor. Nyt job

Nihad Hodzic

Trafikstyrelsen

IFS Danmark A/S har pr. 2. marts 2026 ansat Marlene Gudman som HR Business Partner. Hun skal især beskæftige sig med HR i Danmark og Norden og lede udvalgte internationale HR-projekter. Hun kommer fra en stilling som Nordic Lead HR Business Partner hos Salesforce. Hun har tidligere beskæftiget sig med international HR med fokus på udvikling af og udfordringer i HR ud fra et forretningsperspektiv. Nyt job

Marlene Gudman

IFS Danmark A/S

Netip A/S har pr. 1. maj 2026 ansat Ida Hyllested Friis som Key Account Manager ved netIP's kontor i Thisted. Hun kommer fra en stilling som Key Account Manager hos Københavns erhvervshus. Nyt job
Tinne Schjoldan Gyllich, Director, CX & Services (Customer Adoption) hos TDC Erhverv, er pr. 1. juni 2026 forfremmet til Senior Director, Head of Partnerships. Tinne skal fremover især beskæftige sig med at drive strategiske partnerskaber, styrke økosystemet og skabe vækst gennem partnerbaseret omsætning. Forfremmelse