XSL — Extensible Stylesheet Language

Transkrypt

XSL — Extensible Stylesheet Language
. Extensible Stylesheet Language
.
.
XSL — Extensible Stylesheet Language
Extensible Stylesheet Language
aplikacja języka XML służąca do opisu formatowania dokumentu
Cezary Sobaniec
Składowe XSL
. Extensible Stylesheet Language Transformations (XSLT) —
opis transformacji
.2 XSL Formatting Objects (XSL-FO) — zestaw znaczników
Instytut Informatyki
Politechnika Poznańska
1
v2.10, 2012/05/17
reprezentujących obiekty formatujące dokument rozumiane
przez przeglądarkę
. XML Path Language (XPath) — specy kacje fragmentów
dokumentów
3
© 2005–2011 Cezary Sobaniec
. Prezentacja dokumentu XML
XSL — Extensible Stylesheet Language
[1/51]
. Formatowanie dokumentów — XSL-FO
XSL: bogatsze spojrzenie na dokument
CSS: podejście deklaratywne (ale efektywne)
XSL: również podejście proceduralne
Możliwość dokonywania transformacji dokumentów (XSLT)
CSS: praca z całymi elementami
XSL: odwołania do komentarzy, instrukcji przetwarzania
bardziej zaawansowana kontrola formatowania dokumentu
poprzez obiekty formatujące
XSL: składnia zgodna z XML
CSS: dokładna odpowiedniość elementów z dokumentu i
struktury obiektów formatujących
XSL: mała (w porównaniu do CSS) ilość narzędzi do
przeglądania/tworzenia dokumentów stosujących styl XSL
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[2/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[3/51]
. Zastosowania XSLT
. Możliwości języka XSLT
Generacja tekstu statycznego (np. „Rozdział …”)
Transformacja do HTML
Opuszczenie fragmentów dokumentu
Transformacja do innego dokumentu XML (+ CSS)
Przemieszczanie fragmentów tekstów, zmiana kolejności
Transformacja do dokumentu z Formatting Objects
Powielanie fragmentów (np. tytuły rozdziałów w spisie treści)
Sortowanie elementów
Obliczenia matematyczne
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[4/51]
. Działanie XSLT
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
. Przekształcanie dokumentów XML
XSLT przekształca jedno drzewo XML w inne drzewo XML (lub w
czysty tekst)
Kiedy i gdzie przekształcać?
Wynik nie musi być poprawnym dokumentem XML
U klienta:
dokument XML i styl XSL dostarczane są do przeglądarki, która
dokonuje transformacji i wyświetla wyniki
Drzewo jest przekształcane w drzewo — automatyczna
eliminacja niektórych błędów:
Na serwerze:
arkusz stylów stosowany jest do dokumentu źródłowego i wynik
przetwarzania wysyłany jest do klienta (np. w formacie HTML)
<b><i>fragment tekstu</b></i>
XSLT nie jest ogólnym językiem przetwarzania tekstów do
przekształcania dowolnych danych: dane wejściowe muszą być
dokumentem XML
Przed instalacją na serwerze:
przetwarzanie zewnętrznym programem; klient i serwer mają
do czynienia tylko z przetworzonym dokumentem
Wynikiem przekształceń może być inny język niż XML, np.: RTF,
PostScript, LATEX
© 2005–2011 Cezary Sobaniec
[5/51]
XSL — Extensible Stylesheet Language
[6/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[7/51]
. Drzewo przekształceń XSLT
. Działanie XSLT
Szablon XSLT
dokument XSL zwiera listę reguł
reguła składa się z wzorca i szablonu wyniku przekształcenia
wzorzec określa które fragmenty drzewa mają być
przekształcane (selektor)
szablon zawiera nowe dane i odwołania do oryginalnego drzewa
Operatory języka XSLT
operatory pozwalające wybierać poszczególne węzły drzewa
operatory szeregowania węzłów (np. sortowanie)
operatory wypisywania
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[8/51]
. Transformacja XSLT
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[9/51]
. Przykładowy dokument XML
<?xml version=”1.0” encoding=”utf-8”?>
<!DOCTYPE book SYSTEM ”ksiazka.dtd”>
<book>
<chapter id=”wstep”>
<title>Wstęp</title>
<section id=”temat”>
<title>Temat pracy</title>
<para>Pierwszy akapit.</para>
<para>Drugi akapit.</para>
</section>
<section id=”def”>
<title>Definicja problemu</title>
<para>Pierwszy akapit.</para>
</section>
</chapter>
<chapter id=”pods”>
<title>Podsumowanie</title>
<para>Koniec książki</para>
</chapter>
</book>
. Analiza drzewa dokumentu XML
2. Rekurencyjne przeszukiwanie drzewa wgłąb
1
. Porównanie każdego drzewa ze wzorcem każdej reguły w
arkuszu stylu
.4 Dopasowanie powoduje zastosowanie szablonu tej reguły
3
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[10/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[11/51]
. Dokument XSLT
. Przykład stylu XSLT
<?xml version=”1.0”?>
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
Elementy XSLT są częścią przestrzeni nazw
http://www.w3.org/1999/XSL/Transform
<xsl:template match=”book”>
<html><body>
<xsl:apply-templates/>
</body></html>
</xsl:template>
typowy pre x xsl
element główny <xsl:stylesheet> lub <xsl:transform>
(synonimy)
<xsl:template match=”title”>
<h1><xsl:apply-templates/></h1>
</xsl:template>
reguły: elementy <xsl:template>
szablony wynikowe: zawartość elementów <xsl:template>
elementy sterujące: np. <xsl:if>, <xsl:for-each>
<xsl:template match=”para”>
<p><xsl:apply-templates/></p>
</xsl:template>
</xsl:stylesheet>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[12/51]
. Budowa reguły XSL
© 2005–2011 Cezary Sobaniec
Wynik transformacji
<html>
<body>
<h1>Wstęp</h1>
<h1>Temat pracy</h1>
<p>Pierwszy akapit.</p>
<p>Drugi akapit.</p>
...
</body>
</html>
XSL — Extensible Stylesheet Language
[13/51]
. Selektory XPath
kierunek::test[predykat]
<xsl:template match=”selektor”>
szablon
</xsl:template>
Kierunek określa sposób patrzenia na elementy drzewa względem
bieżącego węzła
Selektor
Test
wyrażony standardem XPath
wskazuje na elementy drzewa, które mają podlegać
przetwarzaniu
Predykat test zawartości węzła (dowolne wyrażenie XPath)
Szablon
dowolny tekst lub poprawnie zagnieżdżony zestaw elementów
Selektory konstruowane są podobnie jak ścieżki w systemie plików
dodatkowe operatory XSLT (wywołania procedur)
selektor zaczynający się od „/” jest selektorem bezwzględnym
pozostałe selektory odnoszą się do bieżącego kontekstu
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[14/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[15/51]
. Selektory XPath
. Selektory XPath — predykaty
Predykaty numeryczne
/
dopasowanie do korzenia dokumentu
/E
dopasowanie do elementu głównego
//E
dowolne wystąpienie elementu E w dokumecie
E
elementu E będący bezpośrednim węzłem podrzędnym
bieżącego węzła
E1/E2
element E2 będący bezpośrednim potomkiem E1
E1//E2
E2 będący dowolnie zagnieżdżonym potomkiem E1
E[@atr]
element E z ustawionym atrybutem atr
E1/*/E2
wystąpienie elementu E2 posiadającego „dziadka” w
postaci elementu E1
E[@atr=”abc”]
element E z ustawionym atrybutem atr na
wartość abc
.//E
dowolne potomne wystąpienie elementu E względem
bieżącego węzła
E[@atr=”abc”][3]
trzeci element E z ustawionym atrybutem atr na
wartość abc
..
węzeł nadrzędny
E[3][@atr=”abc”]
trzeci element E o ile ma ustawiony atrybut atr
na wartość abc
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
E[3]
trzecie wystąpienie elementu potomnego E
E1/E2[2]
drugie wystąpienie elementu E2 w E1
Testy zawartości
[16/51]
. Selektory XPath — funkcje
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[17/51]
. Selektory XPath — inne wyrażenia
Funkcje obsługi zbiorów węzłów
position()
comment()
last()
processing-instruction()
dopasowanie do węzła będącego instrukcją sterującą
count(zbiór węzłów)
id(wartość)
E[position()=last()] element E będący ostatnim węzłem
potomnym
E[position()%2=0]
elementy E na parzystych pozycjach
potomnych
E[not(@id)]
element E bez ustawionego atrybutu id
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
dopasowanie do węzła będącego komentarzem
[18/51]
E1|E2
element E1 lub element E2
N:E
element E z przestrzeni nazw N
*
dowolny element potomny bieżącego węzła
@*
dowolny atrybut bieżącego elementu
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[19/51]
. XPath — kierunek przeszukiwania
ancestor
przodkowie bieżącego elementu
ancestor-or-self
przodkowie i bieżący element
attribute
atrybut elementu („@”)
descendant
potomek bieżącego elementu
. XPath — kierunek przeszukiwania
descendant-or-self potomek i bieżący element („//”)
following, following-sibling
elementy występujące za bieżącym
elementem w dokumencie
preceding, preceding-sibling
elementy występujące przed bieżącym
elementem w dokumencie
namespace
przestrzeń nazw bieżącego elementu
parent
rodzic bieżącego elementu („..”)
self
bieżący element („.”)
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[20/51]
. Selektory XPath — przykłady
XSL — Extensible Stylesheet Language
[21/51]
. Przykład zastosowania selektorów
section[title]
sekcja posiadająca zagnieżdżony
element title
section[title|para]
sekcja zawierająca tytuł lub akapit
section[para/@align]
sekcja z akapitem tekstu
posiadającym atrybut align
*[@id]
wszystkie elementy potomne z
ustawionym atrybutem id
section[title=’Wstęp’]
element section zawierający
element title z tekstem „Wstęp”
ancestor::table
element table będący przodkiem
bieżącego elementu
following-sibling::para/@id
atrybuty sąsiednich elementów
para za bieżącym
© 2005–2011 Cezary Sobaniec
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
Automatyczna numeracja akapitów
<xsl:template match=”para”>
<xsl:value-of select=”position()”/>
<xsl:apply-templates/>
</xsl:template>
Wersja rozbudowana (i z n)
<xsl:template match=”para”>
<xsl:value-of select=”position()”/> z
<xsl:value-of select=”count(../para)”/>
<xsl:apply-templates/>
</xsl:template>
[22/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[23/51]
. Przetwarzanie rekurencyjne
. Elementy potomne
Przykład dokumentu
<para>To jest przykład <span>dokumentu w
<span>którym</span> użyto zagnieżdżonego</span>
znacznika span.</para>
Selektywne przetwarzanie elementów potomnych
<xsl:template match=”chapter”>
<xsl:apply-templates select=”title”/>
</xsl:template>
Przykład
<xsl:template match=”span”>
<i><xsl:apply-templates/></i>
</xsl:template>
Domyślnie następuje przetwarzanie wszystkich elementów
potomnych
<xsl:template match=”span//span”>
<b><xsl:apply-templates/></b>
</xsl:template>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[24/51]
. Pobranie wartości
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[25/51]
. Tryby pracy
Element <xsl:value-of select=”...”/>
<xsl:template match=”book”>
<xsl:apply-templates mode=”toc”/>
<xsl:apply-templates/>
</xsl:template>
atrybut select określa dokładnie co ma zostać pobrane
wartość węzła jest zawsze napisem
napis jest połączeniem wszystkich przetwarzanych węzłów
tekstowych bez znaczników
<xsl:template match=”chapter”>
<xsl:apply-templates/>
</xsl:template>
Przykład
<xsl:template match=”chapter” mode=”toc”>
<xsl:apply-templates select=”title”/>
</xsl:template>
<xsl:template match=”chapter”>
<xsl:value-of select=”title”/>
</xsl:template>
Domyślna reguła
Wynik
<xsl:template match=”*|/” mode=”wartość”>
<xsl:apply-templates mode=”wartość”/>
</xsl:template>
Wstęp
Podsumowanie
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[26/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[27/51]
. Wyrażenia proceduralne: pętle
. Operatory
Element <xsl:value-of> można użyć tylko wtedy, gdy wiadomo, że
istnieje tylko jedno dziecko określonego typu.
Operatory porównania
=
<xsl:template match=”section”>
<xsl:for-each select=”para>
<xsl:value-of select=”.”/>
</xsl:for-each>
</xsl:template>
!=
<
>
<=
>=
Operatory < i <= zapisywane są jako &lt; i &lt;=
Operatory logiczne or, and, not(), true(), false(), lang(kod)
Spis treści
Przykłady
<xsl:template match=”book”>
<ol>
<xsl:for-each select=”chapter”>
<li><xsl:value-of select=”title”/></li>
</xsl:for-each>
</ol>
</xsl:template>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
para[position()=1]
para[position()=1 or position=last()]
para[position()=1 and position=last()]
section/para[not(position()=1 or position=last())]
[28/51]
. Operatory arytmetyczne
*
div
[29/51]
Element <xsl:if>
<xsl:template match=”ol/li”>
<xsl:if test=”position()>1”>, </xsl:if>
<xsl:apply-templates/>
<xsl:if test=”position()=last()”>.</xsl:if>
</xsl:template>
Operatory
-
XSL — Extensible Stylesheet Language
. Wyrażenia warunkowe
liczby reprezentowane są w postaci 64-bitowych liczb
zmiennoprzecinkowych
+
© 2005–2011 Cezary Sobaniec
mod
Inne funkcje
floor()
ceiling()
round()
Przykład
sum()
<ol>
<li>samochód</li>
<li>rower</li>
<li>kajak</li>
</ol>
Przykłady
<xsl:value-of
<xsl:value-of
<xsl:template
<xsl:template
<xsl:value-of
© 2005–2011 Cezary Sobaniec
select=”2+2”/>
select=”@width div @height/>
match=”img[@width > 2 * @height]”>
match=”para[position() mod 2 = 0]”>
select=”sum(img/@width) div count(img)”/>
XSL — Extensible Stylesheet Language
Wynik
samochód, rower, kajak.
To samo można uzyskać stosując odpowiednie reguły
[30/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[31/51]
. Złożona instrukcja warunkowa
. Zmienne
<xsl:template match=”para”>
<xsl:choose>
<xsl:when test=”@align=’left’”>
<p style=”text-align:left”>
<xsl:apply-templates/>
</p>
</xsl:when>
<xsl:when test=”@align=’center’”>
<p style=”text-align:center”>
<xsl:apply-templates/>
</p>
</xsl:when>
<xsl:otherwise>
<p>
<xsl:apply-templates/>
</p>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
Deklaracja zmiennych
<xsl:variable name=”tytul”>Wstęp</xsl:variable>
Odwołanie do zmiennej
. w tekście
1
<title><xsl:value-of select=”$tytul”/></title>
. jako wartość atrybutu
2
<para color=”{$kolor_tla}”>
[32/51]
. Makrode nicje
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[33/51]
. Łańcuchy tekstowe
<xsl:template name=”tytul”>
<h1><font face=”Arial,Helvetica” color=”blue”>
<xsl:value-of select=”.”/>
</font></h1>
</xsl:template>
Funkcje
starts-with(napis, pre ks)
contains(napis, tekst)
Wywołanie makrode nicji
substring(napis, pozycja, długość)
substring-before(napis, marker)
<xsl:template match=”chapter/title”>
<xsl:call-template name=”tytul”/>
</xsl:template>
substring-after(napis, marker)
string-length(napis)
translate(napis, z, na)
Makrode nicja z argumentami
concat(…)
<xsl:template name=”tytul”>
<xsl:param name=”url”>index.html</xsl:param>
<h1><a href=”{$url}”><xsl:value-of select=”.”/></a></h1>
</xsl:template>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
format-number(liczba, format, locale)
[34/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[35/51]
. Kopiowanie bieżącej zawartości węzła
. Numeracja węzłów — element <xsl:number>
<xsl:template match=”chapter”>
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match=”para”>
<p><xsl:number/>. <xsl:apply-templates/></p>
</xsl:template>
Odwołania do innych wartości
Przekształcenie tożsamościowe
<xsl:template match=”section/title”>
<h2><xsl:number count=”section”/>. <xsl:apply-templates/></h2>
</xsl:template>
<xsl:template match=”@*|node()”>
<xsl:copy>
<xsl:apply-templates select=”@*|node()”/>
</xsl:copy>
</xsl:template>
Numeracja hierarchiczna
<xsl:template match=”section/title”>
<h2><xsl:number level=”multiple”
count=”chapter|section” format=”1.1 ”>
<xsl:apply-templates/>
</h2>
</xsl:template>
Kopiowanie całych węzłów
<xsl:template match=”chapter”>
<xsl:copy-of select=”title”/>
</xsl:template>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[36/51]
. Sortowanie — element <xsl:sort>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[37/51]
. Białe znaki
Atrybut xsl:space
<xsl:template match=”section”>
<xsl:apply-templates>
<xsl:sort select=”para”/>
</xsl:apply-templates>
</xsl:template>
<h1 xsl:space=”preserve”>
Wprowadzenie
</h1>
Dopuszczalne wartości: preserve i default
Globalne ustawienia
Parametry sortowania
<xsl:strip-space elements=”h1 h2 h3”/>
<xsl:preserve-space elements=”*”/>
. Sortowanie wartości liczbowych
1
<xsl:sort data-type=”number” select=”szerokosc”/>
. Kierunek
Element <xsl:text>
2
<xsl:sort order=”descending” case-order=”upper-first”/>
<xsl:template match=”title”>
<xsl:text>Rozdział. </xsl:text>
<xsl:apply-templates/>
</xsl:template>
Uwzględniana jest wartość atrybutu xml:lang!
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[38/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[39/51]
. Translacja dokumentów XML
. Generowanie elementów
Wejście
Wyjście
Wejście
Wyjście
<figura typ=”kwadrat”
x=”100” y=”100”/>
<kwadrat szer=”100” wys=”100”/>
<figura typ=”kwadrat”
x=”100” y=”100”/>
<figura typ=”prostokąt”
x=”100” y=”200”/>
<kwadrat>
<szer>100</szer>
<wys>100</wys>
</kwadrat>
<prostokat>
<szer>100</szer>
<wys>200</wys>
</prostokat>
Rozwiązanie I (niepoprawne)
<xsl:template match=”figura[@typ=’kwadrat’]”>
<kwadrat szer=”<xsl:value-of select=”@x”/>”
wys=”<xsl:value-of select=”@y”/>”
/>
</xsl:template>
Rozwiązanie
<xsl:template match=”figura”>
<xsl:element name=”{@typ}”>
<szer><xsl:value-of select=”{@x}”/></szer>
<wys><xsl:value-of select=”{@y}”/></wys>
</xsl:element>
</xsl:template>
Rozwiązanie II
<xsl:template match=”figura[@typ=’kwadrat’]”>
<kwadrat szer=”{@x}” wys=”{@y}”/>
</xsl:template>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[40/51]
. Importowanie reguł z zewnętrznych źródeł
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[41/51]
. Wyprowadzanie wyniku
Nowe reguły nadpisują stare
Metody
<xsl:import href=”http://www.put.poznan.pl/put.xsl”/>
<xsl:import href=”http://www.cs.put.poznan.pl/cs.xsl”/>
XML
HTML
Odwołanie do importowanych reguł
czysty tekst
<xsl:apply-imports/>
Określenie metody
Wykorzystywane będą tylko reguły importowane.
<xsl:output method=”html” indent=”yes”/>
Włączanie
<xsl:template name=”tytul”>
<h1><apply-templates/></h1><hr/>
</xsl:template>
w dowolnym miejscu arkusza na najwyższym poziomie
reguły włączone mają ten sam priorytet co lokalne
<xsl:include href=”program.xsl”/>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[42/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[43/51]
. Formatowanie dokumentów — XSL-FO
. Język formatowania XSL
Przykłady obiektów formatujących
Rozszerzenia XSL-FO względem CSS
inne sposoby pisania niż europejskie
przypisy, adnotacje na marginesie
numery stron w odnośnikach
block
inline
float
page-number
inline-graphics
list-block
table
table-caption
table-cell
rozbudowane formatowanie list
różne układy stron w dokumencie
podział stron na wyróżnione obszary
model formatowania oparty jest na prostokątach (blokach)
bloki są puste, zawierają tekst lub inne obiekty formatujące
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[44/51]
. Rodzaje obiektów formatujących
[45/51]
Nazwy i wartości poszczególnych właściwości są analogiczne do CSS.
Przykład CSS
Obiekty blokowe
zawierają inne obiekty blokowe, obiekty wierszowe i treść.
Przykłady: akapit, pozycja listy.
p { font-family: Helvetica, sans-serif }
Przykład XSL
Obiekty wierszowe
zawierają inne obiekty wierszowe i treść. Przykłady: pojedynczy
znak, numer przypisu, nazwa.
XSL — Extensible Stylesheet Language
XSL — Extensible Stylesheet Language
. Właściwości elementów formatujących
Pojemniki
zawierają mniejsze pojemniki i obiekty blokowe. Przykłady:
strona, nagłówek, stopka, margines.
© 2005–2011 Cezary Sobaniec
© 2005–2011 Cezary Sobaniec
<fo:block font-family=”Helvetica sans-serif”>
...
</fo:block>
[46/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[47/51]
. Przykładowe drzewo obiektów formatujących
. Formatowanie dokumentu
<?xml version=”1.0” encoding=”utf-8”?>
<fo:root xmlns:fo=”http://www.w3.org/1999/XSL/Format”>
<fo:layout-master-set>
<fo:simple-page-master master-name=”strona”>
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference=”strona”>
<fo:flow flow-name=”xsl-region-body”>
<fo:block font-size=”18pt” font-family=”sans-serif”>
Wprowadzenie
</fo:block>
<fo:block font-size=”12pt” font-family=”serif”>
Akapit pierwszy...
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[48/51]
. Kompletny styl XSL (I)
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[49/51]
. Kompletny styl XSL (II)
<?xml version=”1.0” encoding=”utf-8”?>
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”
xmlns:fo=”http://www.w3.org/1999/XSL/Format”>
<xsl:template match=”book/title”>
<fo:block font-size=”18pt”
font-family=”sans-serif”
text-align=”center”>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match=”/”>
<fo:root xmlns:fo=”http://www.w3.org/1999/XSL/Format”>
<fo:layout-master-set>
<fo:simple-page-master master-name=”strona”>
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<xsl:template match=”chapter”>
<fo:block font-size=”16pt”
font-family=”sans-serif”>
<xsl:value-of select=”title”/>
</fo:block>
</xsl:template>
<fo:page-sequence master-reference=”strona”>
<fo:flow flow-name=”xsl-region-body”>
<xsl:apply-templates/>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
</xsl:stylesheet>
[50/51]
© 2005–2011 Cezary Sobaniec
XSL — Extensible Stylesheet Language
[51/51]

Podobne dokumenty