XSL-FO  Formatting Objects  Ett XML-baserat sidlayoutspråk
Inledning <ul><li>XSL-FO är en XML-vokabulär för att på detaljnivå kunna skapa sid-layout, idag främst för papper men på s...
Implementationer <ul><li>Idag finns några implementationer av delar av XSL-FO-specifikationen, t.ex. FOP från Apaches Coco...
XML+XSLT ->XSL-FO <ul><li>Vanligtvis skapar man inte XSL-FO-dokument direkt. </li></ul><ul><li>Istället transformeras vanl...
Sidmodell When shall we  three meet again In thunder, lightning  or in rain... Macbeth... 1. margin-top region-before marg...
XSL-FO:Syntax <ul><li>Namespacen för XSL-FO är  http://www.w3.org/1999/XSL/Format </li></ul><ul><li>Prefixet brukar vara f...
XSL-FO:Exempel <ul><li><fo:root  xmlns:fo=&quot;http://www.w3.org/1999/Format&quot;> </li></ul><ul><li><fo:layout-master-s...
<fo:layout-master-set> <ul><li><fo:layout-master-set>  innehåller information ett eller flera element  <fo:simple-page-mas...
<fo:layout-master-set> Exempel <ul><li><fo:layout-master-set> </li></ul><ul><li><fo:simple-page-master </li></ul><ul><li>m...
Regioner <ul><li>Det finns dessutom 5 regioner: before, after, start, end och body (se tidigare, ”Sidmodell”). </li></ul><...
Regioner <ul><li><fo:layout-master-set> </li></ul><ul><li><fo:simple-page-master master-name=&quot;foo&quot;> </li></ul><u...
Att flöda innehåll på en sida <ul><li>I en <fo:page-sequence> stoppas själva innehållet. </li></ul><ul><li>En <fo:page-seq...
Att flöda innehåll på en sida Exempel <ul><li><fo:page-sequence master-reference=&quot;banan&quot;> </li></ul><ul><li><fo:...
Properties <ul><li>De flesta properties som kan sättas i CSS kan även sättas på ungefär motsvarande sätt i XSL-FO. </li></...
Properties CSS-exempel <ul><li>CSS </li></ul><ul><li>dish { </li></ul><ul><li>display:block; </li></ul><ul><li>font-family...
Properties: Motsvarande XSL-FO-exempel <ul><li>XSL-FO </li></ul><ul><li><xsl:template match=&quot;dish&quot;> </li></ul><u...
Listor <ul><li>Vissa properties från CSS matchas mot element istället för attribut, t.ex. listor. </li></ul><ul><li><fo:li...
Tabeller -  Liknar html <ul><li><fo:table> </li></ul><ul><li><fo:table-column column-width=”80pt&quot;/> </li></ul><ul><li...
Olika sidlayouter <ul><li>Ofta vill man ha olika sidlayout på högersidor, vänstersidor och förstasidor. </li></ul><ul><li>...
Ett dokument, olika sidlayouter <ul><li><fo:page-sequence> </li></ul><ul><li><fo:sequence-specification> </li></ul><ul><li...
Exempel xslt->xsl-fo <ul><li><xsl:stylesheet version=&quot;1.0&quot; </li></ul><ul><li>xmlns:xsl=&quot;http://www.w3.org/1...
Mer information om FO <ul><li>XSL-FO är en omfattande specifikation, av vilken vi bara skummat på ytan. </li></ul><ul><li>...
Upcoming SlideShare
Loading in …5
×

XSL-FO

2,552 views

Published on

XSL-FO

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,552
On SlideShare
0
From Embeds
0
Number of Embeds
31
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

XSL-FO

  1. 1. XSL-FO Formatting Objects Ett XML-baserat sidlayoutspråk
  2. 2. Inledning <ul><li>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. </li></ul><ul><li>Till skillnad från CSS är XSL-FO helt XML-baserat. </li></ul><ul><li>Kan göra samma saker som CSS + mycket till. </li></ul><ul><li>Version 1.1 rekommendation sedan 2006-12-05 </li></ul>
  3. 3. Implementationer <ul><li>Idag finns några implementationer av delar av XSL-FO-specifikationen, t.ex. FOP från Apaches Cocoonprojekt. </li></ul><ul><li>Ett fåtal program kan rendera XSL-FO-dokument direkt, t.ex. X-Smiles. </li></ul><ul><li>Ett alternativ är att först generera XSL-FO, och sedan &quot;serialisera&quot; det till pdf. </li></ul>XSL-FO pdf FOP
  4. 4. XML+XSLT ->XSL-FO <ul><li>Vanligtvis skapar man inte XSL-FO-dokument direkt. </li></ul><ul><li>Istället transformeras vanligen en XML-struktur till XSL-FO via XSLT-transformer. </li></ul>XSL-FO pdf FOP XML XSLT XSLT- processor FO -läsare (X-Smiles) png rtf
  5. 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. 6. XSL-FO:Syntax <ul><li>Namespacen för XSL-FO är http://www.w3.org/1999/XSL/Format </li></ul><ul><li>Prefixet brukar vara fo: </li></ul><ul><li>Root-elementet är <fo:root> </li></ul><ul><li><fo:root> innehåller två underelement; <fo:layout-master-set> och <fo:page-sequence> </li></ul>
  7. 7. XSL-FO:Exempel <ul><li><fo:root xmlns:fo=&quot;http://www.w3.org/1999/Format&quot;> </li></ul><ul><li><fo:layout-master-set> </li></ul><ul><li><!-- mallar med info om marginaler, </li></ul><ul><li>sidformat etc för olika sidtyper--> </li></ul><ul><li></fo:layout-master-set> </li></ul><ul><li><fo:page-sequence> </li></ul><ul><li><!-- Själva innehållet --> </li></ul><ul><li></fo:page-sequence> </li></ul><ul><li></fo:root> </li></ul>
  8. 8. <fo:layout-master-set> <ul><li><fo:layout-master-set> innehåller information ett eller flera element <fo:simple-page-master> </li></ul><ul><li>Dessa innehåller information om sidstorlek och marginaler, samt har ett attribut master-name för att kunna refereras till. </li></ul><ul><li>Flera simple-page-masters kan användas för samma dokument, t.ex. förstasida, index, brödtext mm. </li></ul>
  9. 9. <fo:layout-master-set> Exempel <ul><li><fo:layout-master-set> </li></ul><ul><li><fo:simple-page-master </li></ul><ul><li>margin-right=&quot;3cm&quot; </li></ul><ul><li>margin-left=&quot;3cm&quot; </li></ul><ul><li>margin-bottom=&quot;4cm&quot; </li></ul><ul><li>margin-top=&quot;2cm&quot; </li></ul><ul><li>page-width=&quot;20cm&quot; </li></ul><ul><li>page-height=&quot;27.7cm&quot; </li></ul><ul><li>master-name=&quot;foobar”/> </li></ul><ul><li></fo:layout-master-set> </li></ul>
  10. 10. Regioner <ul><li>Det finns dessutom 5 regioner: before, after, start, end och body (se tidigare, ”Sidmodell”). </li></ul><ul><li>Alla utom body kan tilldelas ett attribut &quot;extent”. </li></ul><ul><li>Storleken på ”body” är det som blir över efter att marginaler och regioner bestämts. </li></ul>
  11. 11. Regioner <ul><li><fo:layout-master-set> </li></ul><ul><li><fo:simple-page-master master-name=&quot;foo&quot;> </li></ul><ul><li><fo:region-before extent=&quot;1cm&quot;/> </li></ul><ul><li><fo:region-after extent=&quot;1cm&quot;/> </li></ul><ul><li><fo:region-start extent=&quot;1cm&quot;/> </li></ul><ul><li><fo:region-end extent=&quot;1cm&quot;/> </li></ul><ul><li><fo:region-body/> </li></ul><ul><li></fo:simple-page-master> </li></ul><ul><li></fo:layout-master-set> </li></ul>
  12. 12. Att flöda innehåll på en sida <ul><li>I en <fo:page-sequence> stoppas själva innehållet. </li></ul><ul><li>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 </li></ul><ul><li><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. </li></ul>
  13. 13. Att flöda innehåll på en sida Exempel <ul><li><fo:page-sequence master-reference=&quot;banan&quot;> </li></ul><ul><li><fo:flow> </li></ul><ul><li><fo:block> </li></ul><ul><li>En banan </li></ul><ul><li></fo:block> </li></ul><ul><li><fo:block> </li></ul><ul><li>En tomat </li></ul><ul><li></fo:block> </li></ul><ul><li></fo:flow> </li></ul><ul><li></fo:page-sequence> </li></ul>
  14. 14. Properties <ul><li>De flesta properties som kan sättas i CSS kan även sättas på ungefär motsvarande sätt i XSL-FO. </li></ul><ul><li>Font-family, font-weight, text-align mm </li></ul>
  15. 15. Properties CSS-exempel <ul><li>CSS </li></ul><ul><li>dish { </li></ul><ul><li>display:block; </li></ul><ul><li>font-family: Helvetica, Arial, sans-serif; </li></ul><ul><li>font-size: 20pt; </li></ul><ul><li>font-weight: bold; </li></ul><ul><li>text-align: center </li></ul><ul><li>} </li></ul>
  16. 16. Properties: Motsvarande XSL-FO-exempel <ul><li>XSL-FO </li></ul><ul><li><xsl:template match=&quot;dish&quot;> </li></ul><ul><li><fo:block font-family=&quot;Helvetica, Arial, sans-serif&quot; font-size=&quot;20pt&quot; font-weight=&quot;bold&quot; text-align=&quot;center&quot;> </li></ul><ul><li><xsl:apply-templates/> </li></ul><ul><li></fo:block> </li></ul><ul><li></xsl:template> </li></ul>
  17. 17. Listor <ul><li>Vissa properties från CSS matchas mot element istället för attribut, t.ex. listor. </li></ul><ul><li><fo:list-block> </li></ul><ul><li><fo:list-item> </li></ul><ul><li><fo:list-item-label> </li></ul><ul><li>• </li></ul><ul><li></fo:list-item-label> </li></ul><ul><li><fo:list-item-body> </li></ul><ul><li>En banan </li></ul><ul><li></fo:list-item-body> </li></ul><ul><li></fo:list-item> </li></ul><ul><li></fo:list-block> </li></ul>
  18. 18. Tabeller - Liknar html <ul><li><fo:table> </li></ul><ul><li><fo:table-column column-width=”80pt&quot;/> </li></ul><ul><li><fo:table-column column-width=&quot;90pt&quot;/> </li></ul><ul><li><fo:table-body> </li></ul><ul><li><fo:table-row> </li></ul><ul><li><fo:table-cell> </li></ul><ul><li><fo:block>Hej</fo:block> </li></ul><ul><li></fo:table-cell> </li></ul><ul><li><fo:table-cell> </li></ul><ul><li><fo:block>Hopp</fo:block> </li></ul><ul><li></fo:table-cell> </li></ul><ul><li></fo:table-row> </li></ul><ul><li></fo:table-body> </li></ul><ul><li></fo:table> </li></ul>
  19. 19. Olika sidlayouter <ul><li>Ofta vill man ha olika sidlayout på högersidor, vänstersidor och förstasidor. </li></ul><ul><li>Detta kan lösas genom elemetet fo:sequence-specification som är ett barnelement till fo:page-sequence </li></ul><ul><li>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. </li></ul>
  20. 20. Ett dokument, olika sidlayouter <ul><li><fo:page-sequence> </li></ul><ul><li><fo:sequence-specification> </li></ul><ul><li><fo:sequence-specifier-alternating </li></ul><ul><li>page-master-first=&quot;banan&quot; </li></ul><ul><li>page-master-odd=&quot;tomat&quot; </li></ul><ul><li>page-master-even=&quot;gurka&quot;/> </li></ul><ul><li></fo:sequence-specification> </li></ul><ul><li></fo:page-sequence> </li></ul><ul><li>Där banan, tomat och gurka tidigare har specificerats som fo:simple-page-master </li></ul>
  21. 21. Exempel xslt->xsl-fo <ul><li><xsl:stylesheet version=&quot;1.0&quot; </li></ul><ul><li>xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; </li></ul><ul><li>xmlns:fo=&quot;http://www.w3.org/1999/XSL/Format&quot;> </li></ul><ul><li><xsl:template match=&quot;/&quot;> </li></ul><ul><li><fo:root> </li></ul><ul><li><fo:layout-master-set> </li></ul><ul><li><fo:simple-page-master margin-right=&quot;1in&quot; master-name=&quot;first&quot;> </li></ul><ul><li><fo:region-body/> </li></ul><ul><li></fo:simple-page-master> </li></ul><ul><li></fo:layout-master-set> </li></ul><ul><li><fo:page-sequence master-reference=&quot;first&quot;> </li></ul><ul><li><fo:flow flow-name=&quot;xsl-region-body&quot;> </li></ul><ul><li><fo:block> </li></ul><ul><li><xsl:apply-templates/> </li></ul><ul><li></fo:block> </li></ul><ul><li></fo:flow> </li></ul><ul><li></fo:page-sequence> </li></ul><ul><li></fo:root> </li></ul><ul><li></xsl:template> </li></ul><ul><li><!-- m.fl. templates som gor XSL-FO-markning --> </li></ul><ul><li></xsl:stylesheet> </li></ul>
  22. 22. Mer information om FO <ul><li>XSL-FO är en omfattande specifikation, av vilken vi bara skummat på ytan. </li></ul><ul><li>Specifikationen och många bra länkar finns på http://www.w3.org/Style/XSL/ </li></ul><ul><li>Kapitlet om XSL-FO från XML Bible finns på http://www.ibiblio.org/xml/books/bible2/chapters/ch18.html </li></ul>

×