Follow Us on Twitter

XSL-FO, Formatting Objects

september 2005 - XML, XSL en XSLT zijn inmiddels gemeengoed geworden. Met deze standaarden en technieken is het prima mogelijk om de meest uiteenlopende formaten zoals HTML pagina's te transformeren uit een XML bestand. Daarnaast is het met Cascading Stylesheets mogelijk om de layout van de HTML pagina aan te passen. Bij bijvoorbeeld rapportages, waar repeterende headers, footers en pagina nummers noodzakelijk zijn, schieten HTML en CSS tekort voor de layout tekort.

Met XSL-FO is het mogelijk geworden om met behulp van XML, XSL en XSLT een opgemaakte, gepagineerde layout te genereren voor bijvoorbeeld bedrijfsrapportages. In dit whitebook wordt dieper ingegaan op de mogelijkheden van XSL-FO.

Wat is XSL-FO?

XSL-FO, Extensible Stylesheet Language Formatting Objects voluit geschreven, is een manier om met behulp van XML een exacte pagina layout te definiëren. XSL-FO is sinds 15 oktober 2001 een officiële W3C recommendation en is onderdeel van de Extensible Stylesheet language documentatie te vinden op www.w3.org.

XSL-FO is zeer strak gedocumenteerd. Daardoor weten zowel de "formatting objects processor" als de schrijver van een XSL-FO document exact hoe het resultaat eruit komt te zien. Dit in tegenstelling tot HTML documenten en de verschillende browsers en browserversies. Elke browser interpreteert een HTML bestand net iets anders waardoor het uiteindelijke resultaat moeilijk is te voorspellen. Deze interpratieverschillen zijn er met XSL-FO niet. Dit maakt XSL-FO bijzonder geschikt voor bijvoorbeeld rapportages.

Hieronder een voorbeeld van een XSL-FO bestand en het resultaat in PDF formaat.

Gedeelte van XSL-FO document  
   
 Uitvoer in PDF  
   

Download de gebruikte bestanden in dit Whitebook

Formatting Objects Processer

Een Formatting Objects Processor, bijvoorbeeld het Apache FOP project (xml.apache.org/fop), leest het FO bestand in en genereert het output bestand in het formaat opgegeven in het XSL-FO document. Op dit moment is het mogelijk om een groot scala aan formaten te genereren, de belangrijkste op dit moment zijn PDF en SVG*. Primair wordt XSL-FO gebruikt om er Adobe PDF documenten mee te genereren.

*SVG staat voor Scalable Vector Images. Deze worden bijvoorbeeld gebruikt in de 10g Oracle Enterprise Manager.

XML

Wat XSL-FO zo krachtig maakt is het feit dat een XSL-FO document niets anders is dan een XML document. Met technieken zoals XSLT is het mogelijk om een XML document te transformeren in een ander XML document. Het is dus ook mogelijk om van een XML document een XSL-FO document te maken. Zoals eerder gezegd: Een XSL-FO document IS een XML document! Hierin schuilt de grote kracht achter XSL-FO.

Hoe werkt het?

De XSL-FO specificatie deelt een pagina in meerdere "regions". Deze regions worden dan weer opgedeeld in meerdere blokken waar gegevens in kunnen worden geplaatst. Doordat de eigenschappen van elk blok apart kunnen worden aangepast is het mogelijk om de layout nauwkeurig te bepalen.

De region-after wordt gevuld met het pagina nummer en in de region-body komt de tekst te staan "Voorbeeld XSL-FO".

Conclusie

XSL-FO wordt op dit moment nog heel erg onderschat. Ondanks het feit dat XSL-FO inmiddels al ruim 4 jaar bestaat wordt deze techniek nog weinig toegepast. Overigens is dit ook van toepassing geweest met XML zelf, ook XML bestaat al jaren en neemt nu pas een hoge vlucht.

Als meer mensen bekend raken met formatting objects, ofwel XSL-FO, dan kan XML op nog meer plekken zinvol worden ingezet. Wij zijn er van overtuigd dat XSL-FO veel vaker gebruikt gaat worden in projecten.

Referenties

 

Over de auteur
Martin Kleinman is Oracle/integratie consultant bij Whitehorses en heeft ruim 6 jaar ervaring in de IT. Hij heeft zich vanuit een Oracle developer achtergrond ontwikkeld tot een all-round integratiespecialist.

Waardering:
 
Tags:

Reacties

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Meer informatie over formaatmogelijkheden

CAPTCHA
Deze vraag is om te testen of u een persoon bent en om spam te voorkomen
Image CAPTCHA
Enter the characters shown in the image.