2. Inledning XSL-FO är en XML-vokabulär för att på detaljnivå kunna skapa sid-layout, idag främst för papper men på sikt även för bildskärmar. Till skillnad från CSS är XSL-FO helt XML-baserat. Kan göra samma saker som CSS + mycket till. Version 1.1 rekommendation sedan 2006-12-05
3. Implementationer Idag finns några implementationer av delar av XSL-FO-specifikationen, t.ex. FOP från Apaches Cocoonprojekt. Ett fåtal program kan rendera XSL-FO-dokument direkt, t.ex. X-Smiles. Ett alternativ är att först generera XSL-FO, och sedan "serialisera" det till pdf. XSL-FO pdf FOP
4. XML+XSLT ->XSL-FO Vanligtvis skapar man inte XSL-FO-dokument direkt. Istället transformeras vanligen en XML-struktur till XSL-FO via XSLT-transformer. XSL-FO pdf FOP XML XSLT XSLT- processor FO -läsare (X-Smiles) png rtf
5. Sidmodell When shall we three meet again In thunder, lightning or in rain... Macbeth... 1. margin-top region-before margin-left region-start region-after margin-bottom region-body region-end margin-right
6. XSL-FO:Syntax Namespacen för XSL-FO är http://www.w3.org/1999/XSL/Format Prefixet brukar vara fo: Root-elementet är <fo:root> <fo:root> innehåller två underelement; <fo:layout-master-set> och <fo:page-sequence>
7. XSL-FO:Exempel <fo:root xmlns:fo="http://www.w3.org/1999/Format"> <fo:layout-master-set> <!-- mallar med info om marginaler, sidformat etc för olika sidtyper--> </fo:layout-master-set> <fo:page-sequence> <!-- Själva innehållet --> </fo:page-sequence> </fo:root>
8. <fo:layout-master-set> <fo:layout-master-set> innehåller information ett eller flera element <fo:simple-page-master> Dessa innehåller information om sidstorlek och marginaler, samt har ett attribut master-name för att kunna refereras till. Flera simple-page-masters kan användas för samma dokument, t.ex. förstasida, index, brödtext mm.
10. Regioner Det finns dessutom 5 regioner: before, after, start, end och body (se tidigare, ”Sidmodell”). Alla utom body kan tilldelas ett attribut "extent”. Storleken på ”body” är det som blir över efter att marginaler och regioner bestämts.
12. Att flöda innehåll på en sida I en <fo:page-sequence> stoppas själva innehållet. En <fo:page-sequence> binds till en simple-page-master via attributet ”master-reference” vars värde ska motsvara en ”master-name” för en page-master <fo:page-sequence> innehåller ett element <fo:flow> som i sin tur kan innehålla ett antal <fo:block> där slutligen innehållet finns.
13. Att flöda innehåll på en sida Exempel <fo:page-sequence master-reference="banan"> <fo:flow> <fo:block> En banan </fo:block> <fo:block> En tomat </fo:block> </fo:flow> </fo:page-sequence>
14. Properties De flesta properties som kan sättas i CSS kan även sättas på ungefär motsvarande sätt i XSL-FO. Font-family, font-weight, text-align mm
17. Listor Vissa properties från CSS matchas mot element istället för attribut, t.ex. listor. <fo:list-block> <fo:list-item> <fo:list-item-label> • </fo:list-item-label> <fo:list-item-body> En banan </fo:list-item-body> </fo:list-item> </fo:list-block>
19. Olika sidlayouter Ofta vill man ha olika sidlayout på högersidor, vänstersidor och förstasidor. Detta kan lösas genom elemetet fo:sequence-specification som är ett barnelement till fo:page-sequence En sådan är en sammansatt page-master, med olika kriterier för vilken page-master som ska användas t.ex. för udda/jämna sidor.
20. Ett dokument, olika sidlayouter <fo:page-sequence> <fo:sequence-specification> <fo:sequence-specifier-alternating page-master-first="banan" page-master-odd="tomat" page-master-even="gurka"/> </fo:sequence-specification> </fo:page-sequence> Där banan, tomat och gurka tidigare har specificerats som fo:simple-page-master
22. Mer information om FO XSL-FO är en omfattande specifikation, av vilken vi bara skummat på ytan. Specifikationen och många bra länkar finns på http://www.w3.org/Style/XSL/ Kapitlet om XSL-FO från XML Bible finns på http://www.ibiblio.org/xml/books/bible2/chapters/ch18.html