fo:block -
Transkrypt
fo:block -
XSL FO dr inż. Wioleta Szwoch 1 Dlaczego korzystamy z FO? • Potrzeba tworzenia profesjonalnie drukowanych dokumentów • Kontrola nad każdym aspektem wyglądu strony – – – – marginesy, nagłówki, czcionka, … 2 XSL FO - Formatting Objects • dokładny opis prezentacji danych, które są ujmowane w ramy strony o określonych wymiarach • poprawny dokument XML • struktura hierarchiczna • zorientowany na wydruk • brak oddzielenia treści od sposobu prezentacji • przestrzeń nazw: http://www.w3.org/1999/XSL/Format • standardowy prefiks: fo • 56 obiektów (znaczników) formatujących i 177 własności (atrybuty) • możliwość wizualizacji w pdf, rtf,… 3 Tworzenie dokumentów XSL FO • bezpośrednie utworzenie opisu prezentacji wraz z zawartymi danymi – mała ilość danych – trudności w przypadku dokonywania zmian – trudno wykorzystać inny zestaw danych • zastosowanie dokumentu transformacji – oddzielenie danych i sposobu prezentacji – możliwość wykorzystania do różnych zestawów danych 4 Przykłady … <fo:block font font--style="italic style="italic"" font font--family="Times family="Times"" font--size="28pt" font font font--weight="bold weight="bold"> "> Planeta: Merkury </fo:block </ fo:block> > <fo:block font font--style="italic style="italic"" font font--family="Times family="Times"" font--size="28pt" font font font--weight="bold weight="bold"> "> Planeta: Wenus </fo:block </ fo:block> > <fo:block font font--style="italic style="italic"" font font--family="Times family="Times"" font--size="28pt" font font font--weight="bold weight="bold"> "> Planeta: Ziemia </fo:block </ fo:block> > … 5 … <xsl:template match="PLANETA match="PLANETA/NAZWA"> /NAZWA"> <fo:block font font--weight="bold weight="bold"" fontfont-size="28pt" font--family="Times font family="Times"" font font--style="italic style="italic"> "> Planeta: <xsl:value xsl:value--of select select=".”/> =".”/> </fo:block </ fo:block> > </xsl:template </ xsl:template> > … 6 Budowa dokumentu FO deklaracja XML <?xml version="1.0" encoding="ISOencoding="ISO-8859 8859--2"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> ... <!– <!– Pełen dokument FO ---> > </fo:root> deklaracja przestrzeni nazw korzeń drzewa dokumentu 7 FO budowa dokumentu • Struktura dokumentu składa się: – Zarządcy układów stron (layout-master-set) • Opisów rodzajów stron, które mogą pojawić się w dokumencie – szablony stron(simple-page-master) • Sekwencji, w jakiej strony mogą się pojawiać (page-sequence-master) – Stron i ich zawartości (page-sequence) 8 FO struktura dokumentu <?xml version="1.0" encoding="UTF-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> …<!– Tutaj wszystkie szablony stron --> </fo:layout-master-set> <fo:page-sequence master-name="NazwaStrony"> …<!– Tutaj zawartość stron --> </fo:page-sequence> </fo:root> 9 FO struktura dokumentu • fo:layout-master-set – definiuje szablony określające własności tworzonych stron – wszystkie opisy nadrzędne dokumentu • fo:page-sequence – zawiera treść wraz ze sposobem prezentacji 10 FO struktura dokumentu • fo:layout-master-set – Zawiera wszystkie opisy nadrzędne dokumentu – fo:simple-page-master • Szablon mający niepowtarzalną nazwę • Opisuje układ i geometrię strony • Możliwe atrybuty – – – – – margin-left, … master-name page-height,… reference-orientation writing-mode • ma elementy potomne opisujące jeden lub więcej obszarów strony, dzięki czemu można szczegółowo opisać rozkład treści 11 FO struktura dokumentu <?xml version="1.0" encoding="UTF<?xml encoding="UTF-8"?> <fo:root xmlns:fo="http xmlns:fo="http://www.w3.org/1999/XSL/Format"> ://www.w3.org/1999/XSL/Format"> <fo:layout fo:layout--master master--set set> > <fo:simple fo:simple--page page--master margin margin--right="20mm" marginmargin-left="20mm" margin--bottom="10mm" marginmargin margin-top="10mm" pagepage-width="300mm" page--height="400mm" master page master--name="NazwaStronyNpOkladka name="NazwaStronyNpOkladka"> "> <fo:region fo:region--body margin margin--right="0mm" marginmargin-left="0mm" margin--bottom="10mm" marginmargin margin-top="0mm"/> <fo:region fo:region--after extent="10mm"/> </fo:simple--page </fo:simple page--master master> > </fo:layout </ fo:layout--master master--set set> > ... </fo:root </ fo:root> > 12 FO struktura dokumentu • fo:page-sequence-master – fo:repeatable-page-master-alternatives • Pozwala na definiowanie warunków przypisujących szablony do poszczególnych stron • fo:conditional-page-master-reference warunki – Pojedynczy warunek – master-name » Wskazuje szablon – page-position » first, last, rest, any – odd-or-even » odd, even (nieparzysta) – blank-or-not-blank » blank, not-blank 13 FO struktura dokumentu • fo:page-sequence – Umieszcza się tutaj • treść – tekst, obiekt graficzny • sposób prezentacji – fo:title • zawiera tekst reprezentujący tytuł dokumentu – fo:static-content • zawiera stały tekst, wyświetlany na wszystkich stronach – Nagłówek, stopka, … – fo:flow • występuje tylko raz • zawiera dane, które mają zostać wyświetlone 14 FO struktura dokumentu <?xml version="1.0" encoding="UTF<?xml encoding="UTF-8"?> <fo:root xmlns:fo="http xmlns:fo="http://www.w3.org/1999/XSL/Format"> ://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> … </fo:layout-master-set> <fo:page fo:page--sequence master master--name="NazwaStrony name="NazwaStrony"> "> … </fo:page </ fo:page--sequence sequence> > </fo:root </ fo:root> > 15 FO struktura dokumentu • flow-name – atrybut występujący w fo:title, fo:static-content, fo:flow – docelowe miejsce dla tekstu, określa przynależność do region-before wybranego regionu region-body – Przyjmowane wartości • • • • • xsl-region-before xsl-region-after xsl-region-start xsl-region-end xsl-region-body region-start region-after region-end 16 FO struktura dokumentu • fo:block – prostokątne obszary, w których wyświetlane są treści dokumentu – możliwość korzystania z wielu atrybutów • Charakterystyka czcionki – font-family, font-size, … • Obramowanie, wypełnienie, tło – background-image, background-repeat, border-before-color,… • Ustawienia związane z dzieleniem wyrazów – country, language,… – może zawierać paragrafy, listy, inne bloki 17 18 FO struktura dokumentu <?xml version="1.0" encoding="UTFencoding="UTF-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> … <fo:page--sequence master<fo:page master-name=„NazwaStrony"> <fo:flow flowflow-name="xsl name="xsl--region region--body"> <fo:block color="blue" fontfont-family="Times" line--height="48pt" fontline font-size="36pt" fontfont-weight="bold"> Tabela planet </fo:block> <fo:block fontfont-style="italic" fontfont-family="Times" line--height="48pt" fontline font-size="28pt" fontfont-weight="bold"> Planeta: Merkury </fo:block> 19 ... </fo:root> Obiekty inline reprezentują fragmenty większych obszarów (np. bloków) • • właściwości fo:inline – dotyczące danych • role, source-document – głosowe • azimuth, cue-after, cue-before, elevation, pause-after, pause-before, pitch, pitch-range, playduring, richness, speak, speak-header, speak-numeral, speak-punctuation, speech-rate, voicefamily, volume, stress – obramowanie, wypełnienie, tło • background-attachment, background-color, background-image, background-repeat, background-position-horizontal, background-position-vertical, border-after-color, border-afterstyle, border-after-width, border-before-color, border-before-style, border-before-width, border-bottom-color, border-bottom-style, border-bottom-width, border-end-color, border-endstyle, border-end-width, border-left-color, border-left-style, border-left-width, border-rightcolor, border-right-style, border-right-width, border-start-color, border-start-style, border-startwidth, border-top-color, border-top-style, border-top-width, padding-after, padding-before, padding-bottom, padding-end, padding-left, padding-right, padding-start, padding-top – definicje czcionek • font-family, font-selection-strategy, font-size, font-size-adjust, font-stretch, font-style, fontvariant, font-weight – właściwości marginesów • space-end, space-start – pozostałe 20 • alignment-adjust, alignment-baseline, baseline-shift, block-progression-dimension, bottom, color, dominant-baseline, height, id, inline-progression-dimension, keep-together, keep-withnext, keep-with-previous, left, line-height, margin-bottom, margin-left, margin-right, margintop, relative-position, right, text-decoration, top, visibility, width, wrap-option XSL FO - struktura strony margin-top region-before region-body margin-left region-end region-start margin-right block line region-after 21 margin-bottom inline FO tabele • fo:table – Obejmuje całą tabelę – fo:table-body • Opisuje treść tabeli • fo:table-row – fo:table-cell opisuje poszczególne komórki z danymi – Możliwość ustawienia różnorodnych atrybutów dla elementów • Dokładniejszy sposób prezentacji – atrybuty określające czcionkę, właściwości tekstu, justowanie, ramki • number-rows-spanned i number-columns-spanned – atrybuty należące do elementu fo:table-cell – pozwalają na łączenie wierszy oraz kolumn 22 <fo:table-row> <fo:table-cell number-columns-spanned="2" background-color="lightblue"> <fo:block text-align="center"> 1 - 2 </fo:block> </fo:table-cell> <fo:table-cell number-columns-spanned="3" background-color="lightgreen"> <fo:block text-align="center"> 3 - 5 </fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell number-columns-spanned="4" background-color="magenta" > <fo:block text-align="center" vertical-align="middle">1 - 2 - 3 – 4 </fo:block> </fo:table-cell> <fo:table-cell background-color="yellow" number-rows-spanned="2" > <fo:block text-align="center" vertical-align="top">5</fo:block> </fo:table-cell> </fo:table-row> 23 FO listy Tu umieszczona cała lista Poszczególne pozycje listy Dane umieszczane na liście Do wyróżnienia pozycji listy 24 FO listy <fo:flow flow-name=”xsl-region-body”> <fo:list-block> <fo:list-item> <fo:list-item-label><fo:block>1</fo:block></fo:list-item-label> <fo:list-item-body start-indent="1cm"> <fo:block>Pierwszy element listy</fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label><fo:block>2</fo:block></fo:list-item-label> <fo:list-item-body start-indent="1.5cm"> <fo:block>Drugi element listy</fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label><fo:block>*</fo:block></fo:list-item-label> <fo:list-item-body start-indent="2cm"> <fo:block>Trzeci element listy</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block> </fo:flow> 25 FO obiekty graficzne • Grafika standardowa (jpeg, gif) <fo:block texttext-align="center"> <fo:external--graphic src="file:grafika.jpg"/> <fo:external </fo:block> • Obiekty graficzne XML (SVG, MathML) <fo:block texttext-align="center"> <fo:instream--foreign <fo:instream foreign--object> <svg xmlns="http://www.w3.org/2000/svg" width="1.5cm" height="1cm"> <polygon style="fill:#FFCCCC" points="0,31 18,0 36,31"/> </svg> </fo:instream--foreign </fo:instream foreign--object> </fo:block> 26 FO linie rozdzielające • fo:leader – – – – – – – 27 leader-alignment leader-length leader-pattern leader-pattern-width rule-style rule-thickness typowe atrybuty: np. kolor <fo:page-sequence master-name="A4"> <fo:flow flow-name="xsl-region-body" font-size="36pt"> <fo:block text-align="center" font-size="24pt"> Tekst przed pierwszą linią rozdzielającą </fo:block> <fo:block> <fo:leader leader-length="297mm" leader pattern="rule" rule-thickness="2pt" color="green"/> </fo:block> <fo:block text-align="center" font-size="24pt"> Tekst między dwiema liniami rozdzielającymi </fo:block> <fo:block> <fo:leader leader-length="297mm" leader-pattern="dots" rule-thickness="4pt" color="red"/> </fo:block> </fo:flow> </fo:page-sequence> FO przypisy • <fo:footnote> – <fo:footnote-body> • treść przypisu • elementy te nie mają żadnych atrybutów 28 FO przypisy Procesor FO nie dodaje automatycznie do treści przypisów numerów, więc trzeba to robić samemu <fo:block font-size="24pt"> Ten <fo:footnote> <fo:inline>przypis <fo:inline font-size="16pt" vertical-align="super"> 1 </fo:inline> </fo:inline> <fo:footnote-body> <fo:block> 1. Treść pierwszego przypisu. </fo:block> </fo:footnote-body> </fo:footnote> dotyczy tekstu na dole strony. </fo:block> 29 Cechy interaktywne, dźwiękowe • W standardzie FO przewidywano różne media wyjściowe – ekran – wydruk – dźwięk • Standard zawiera elementy – służące do sterowania dźwiękiem • barwą lub natężeniem głosu, pauzami, ... – interaktywne • do definiowania łączników • Istniejące implementacje – dokumenty drukowane 30 Procesory XSL FO • FOP – http://xml.apache.org/fop • TeXML – Konwertuje dokumenty XML do TeX • UFO – procesor napisany w C++; potrafi generować dokument wyjściowy między innymi w formacie pdf, PostScript • SAXESS Wave – konwertuje z XML do Showave/Flash • PassiveTeX – z XML FO do pdf 31 XSL FO dokument XML procesor XSLT Dokument XSL:FO Dokument XSLT procesor XSL:FO Dokument PDF 32 Transformacja do formatu PDF • FOP (Formatting Object to PDF) • Tworzenie pliku PDF – bezpośrednio • Fop -fo linie.fo -pdf linie.pdf – pośrednio • Fop -xsl planety.xsl -xml planety.xml -pdf planety.pdf • Polskie znaki diakrytyczne 33