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

Podobne dokumenty