Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
XSL-FO  Formatting Objects  Ett XML-baserat sidlayoutspråk
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
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
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
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
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>
XSL-FO:Exempel <fo:root  xmlns:fo=&quot;http://www.w3.org/1999/Format&quot;> <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>
<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.
<fo:layout-master-set> Exempel <fo:layout-master-set> <fo:simple-page-master margin-right=&quot;3cm&quot; margin-left=&quot;3cm&quot; margin-bottom=&quot;4cm&quot; margin-top=&quot;2cm&quot; page-width=&quot;20cm&quot; page-height=&quot;27.7cm&quot; master-name=&quot;foobar”/> </fo:layout-master-set>
Regioner Det finns dessutom 5 regioner: before, after, start, end och body (se tidigare, ”Sidmodell”). Alla utom body kan tilldelas ett attribut &quot;extent”. Storleken på ”body” är det som blir över efter att marginaler och regioner bestämts.
Regioner <fo:layout-master-set> <fo:simple-page-master master-name=&quot;foo&quot;> <fo:region-before extent=&quot;1cm&quot;/> <fo:region-after extent=&quot;1cm&quot;/> <fo:region-start extent=&quot;1cm&quot;/> <fo:region-end extent=&quot;1cm&quot;/> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set>
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.
Att flöda innehåll på en sida Exempel <fo:page-sequence master-reference=&quot;banan&quot;> <fo:flow> <fo:block> En banan </fo:block> <fo:block> En tomat </fo:block> </fo:flow> </fo:page-sequence>
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
Properties CSS-exempel CSS dish { display:block; font-family: Helvetica, Arial, sans-serif; font-size: 20pt; font-weight: bold; text-align: center }
Properties: Motsvarande XSL-FO-exempel XSL-FO <xsl:template match=&quot;dish&quot;> <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;> <xsl:apply-templates/> </fo:block> </xsl:template>
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> &#x2022; </fo:list-item-label> <fo:list-item-body> En banan </fo:list-item-body> </fo:list-item> </fo:list-block>
Tabeller -  Liknar html <fo:table> <fo:table-column column-width=”80pt&quot;/> <fo:table-column column-width=&quot;90pt&quot;/> <fo:table-body> <fo:table-row> <fo:table-cell> <fo:block>Hej</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>Hopp</fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table>
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.
Ett dokument, olika sidlayouter <fo:page-sequence> <fo:sequence-specification> <fo:sequence-specifier-alternating page-master-first=&quot;banan&quot; page-master-odd=&quot;tomat&quot; page-master-even=&quot;gurka&quot;/> </fo:sequence-specification> </fo:page-sequence> Där banan, tomat och gurka tidigare har specificerats som fo:simple-page-master
Exempel xslt->xsl-fo <xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; xmlns:fo=&quot;http://www.w3.org/1999/XSL/Format&quot;> <xsl:template match=&quot;/&quot;> <fo:root> <fo:layout-master-set> <fo:simple-page-master margin-right=&quot;1in&quot; master-name=&quot;first&quot;> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference=&quot;first&quot;> <fo:flow flow-name=&quot;xsl-region-body&quot;> <fo:block> <xsl:apply-templates/> </fo:block> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> <!-- m.fl. templates som gor XSL-FO-markning --> </xsl:stylesheet>
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

More Related Content

XSL-FO

  • 1. XSL-FO Formatting Objects Ett XML-baserat sidlayoutspråk
  • 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 &quot;serialisera&quot; 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=&quot;http://www.w3.org/1999/Format&quot;> <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.
  • 9. <fo:layout-master-set> Exempel <fo:layout-master-set> <fo:simple-page-master margin-right=&quot;3cm&quot; margin-left=&quot;3cm&quot; margin-bottom=&quot;4cm&quot; margin-top=&quot;2cm&quot; page-width=&quot;20cm&quot; page-height=&quot;27.7cm&quot; master-name=&quot;foobar”/> </fo:layout-master-set>
  • 10. Regioner Det finns dessutom 5 regioner: before, after, start, end och body (se tidigare, ”Sidmodell”). Alla utom body kan tilldelas ett attribut &quot;extent”. Storleken på ”body” är det som blir över efter att marginaler och regioner bestämts.
  • 11. Regioner <fo:layout-master-set> <fo:simple-page-master master-name=&quot;foo&quot;> <fo:region-before extent=&quot;1cm&quot;/> <fo:region-after extent=&quot;1cm&quot;/> <fo:region-start extent=&quot;1cm&quot;/> <fo:region-end extent=&quot;1cm&quot;/> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set>
  • 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=&quot;banan&quot;> <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
  • 15. Properties CSS-exempel CSS dish { display:block; font-family: Helvetica, Arial, sans-serif; font-size: 20pt; font-weight: bold; text-align: center }
  • 16. Properties: Motsvarande XSL-FO-exempel XSL-FO <xsl:template match=&quot;dish&quot;> <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;> <xsl:apply-templates/> </fo:block> </xsl:template>
  • 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> &#x2022; </fo:list-item-label> <fo:list-item-body> En banan </fo:list-item-body> </fo:list-item> </fo:list-block>
  • 18. Tabeller - Liknar html <fo:table> <fo:table-column column-width=”80pt&quot;/> <fo:table-column column-width=&quot;90pt&quot;/> <fo:table-body> <fo:table-row> <fo:table-cell> <fo:block>Hej</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>Hopp</fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table>
  • 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=&quot;banan&quot; page-master-odd=&quot;tomat&quot; page-master-even=&quot;gurka&quot;/> </fo:sequence-specification> </fo:page-sequence> Där banan, tomat och gurka tidigare har specificerats som fo:simple-page-master
  • 21. Exempel xslt->xsl-fo <xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; xmlns:fo=&quot;http://www.w3.org/1999/XSL/Format&quot;> <xsl:template match=&quot;/&quot;> <fo:root> <fo:layout-master-set> <fo:simple-page-master margin-right=&quot;1in&quot; master-name=&quot;first&quot;> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference=&quot;first&quot;> <fo:flow flow-name=&quot;xsl-region-body&quot;> <fo:block> <xsl:apply-templates/> </fo:block> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> <!-- m.fl. templates som gor XSL-FO-markning --> </xsl:stylesheet>
  • 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