xslt plan prezentacji xsltpolak/wyklady/xml/xslt.pdfplan prezentacji wstęp zagadnienia podstawowe...
TRANSCRIPT
XSLT
XSLTPrzedmiot: XML i jego zastosowania
Dr inż. Stanisław Polak
Akademia Górniczo - Hutnicza w Krakowie, Katedra Informatyki
http://www.icsr.agh.edu.pl/~polak/
Dr inż. Stanisław Polak 1 Przedmiot: XML i jego zastosowania
XSLT
Plan prezentacji
Wstęp
Zagadnienia podstawowe
Przetwarzanie danych
Inne zagadnienia
XSLT 2.0
Dr inż. Stanisław Polak 2 Przedmiot: XML i jego zastosowania
Wstęp XSLT
XSLTOgólna charakterystyka
I XSLT (ang. XSL Transformations,Extensible Stylesheet LanguageTransformations)
I Przypomina języki funkcyjneI Szeroko stosowany przy tworzeniu
stron WWW
Dr inż. Stanisław Polak 3 Przedmiot: XML i jego zastosowania
Wstęp XSLT
Drzewo XML
1 <?xml version="1.0" encod ing="UTF -8"?>2 <pracown ik>3 <im i e>Jan</ im i e>4 <nazwi sko>Nowak</ nazwi sko>5 <da t a u r o d z e n i a>6 <rok>1969</ rok>7 <mi e s i a c>Maj</ m i e s i a c>8 <dz i e n>1</ dz i e n>9 </ da t a u r o d z e n i a>10 <!−− komentarz −−>11 <m i e j s c e p r a c y budynek="C1"/>12 </ pracown ik>
/
pracownik
imie
Jan
nazwisko
Nowak
data urodzenia
rok
1969
miesiac
Maj
dzien
1
komentarz miejsce pracy
budynek=”C1”
Dr inż. Stanisław Polak 4 Przedmiot: XML i jego zastosowania
Wstęp XSLT
Arkusz XSLTBudowa
1 <?xml version="1.0" encod ing="UTF -8" ?>2 <!−− Zamiast "xsl:stylesheet" można uż y ć "xsl:transform" −−>3 <x s l : s t y l e s h e e t version="1.0" xm l n s : x s l="http://www.w3.org /1999/ XSL/Transform"
xmlns="http://www.w3.org /1999/ xhtml">45 <!−− Szab lon −−>6 <x s l : template name="nazwa">7 . . .8 </ x s l : template>9 . . .10 <!−− Szab lon − d e f i n i ow a n i e regu ł y −−>11 <x s l : template match="wzorzec">12 Dane wynikowe13 </ x s l : template>14 . . .15 </ x s l : s t y l e s h e e t>
Dr inż. Stanisław Polak 5 Przedmiot: XML i jego zastosowania
Wstęp XSLT
Dołączanie arkusza XSLT
Zewnętrznego
1 <?xml version="1.0" encod ing="UTF -8"?>2 <?xml-stylesheet type="text/xsl" href="arkusz
.xsl"?>3 <elementG ł ówny>4 . . .5 </ elementG ł ówny>
Dokument XML
1 <?xml version="1.0" encod ing="UTF -8"?>2 <x s l : s t y l e s h e e t version="1.0" xm l n s : x s l=
"http://www.w3.org /1999/ XSL/Transform" xmlns="http://www.w3.org /1999/ xhtml">
3 . . .4 </ x s l : s t y l e s h e e t>
arkusz.xsl
Wewnętrznego
1 <?xml version="1.0"?>2 <?xml−s t y l e s h e e t type="text/xml" h r e f="#id(mojstyl )"?>3 <elementG ł ówny>4 <x s l : s t y l e s h e e t version="1.0" xm l n s : x s l="http://www.w3.org /1999/ XSL/Transform"
i d="mojstyl ">5 . . .6 </ x s l : s t y l e s h e e t>7 . . .8 </ elementG ł ówny>
Dr inż. Stanisław Polak 6 Przedmiot: XML i jego zastosowania
Zagadnienia podstawowe XSLT
Definiowanie szablonuElement template
1 <!−− Ka t e g o r i a : e l ement najwy ż szego poziomu ( top−l e v e l−e l ement ) −−>2 <x s l : t em p l a t e3 match = pa t t e r n4 name = qname5 priority = number6 mode = qname>7 <!−− Zawarto ś ć : ( x s l : p a r am ∗ , s z ab l on ) −−>8 </ x s l : t em p l a t e>
Składnia
1 <x s l : t em p l a t e match="/">2 <html>3 <x s l : a p p l y−t emp l a t e s />4 </html>5 </ x s l : t em p l a t e>
Definiowanie reguły
Dr inż. Stanisław Polak 7 Przedmiot: XML i jego zastosowania
Zagadnienia podstawowe XSLT
Aplikowanie regułInstrukcja apply-templates
1 <!−− Ka t e g o r i a : i n s t r u k c j a −−>2 <x s l : a p p l y−t emp l a t e s3 select = node−se t−e x p r e s s i o n4 mode = qname>5 <!−− Zawarto ś ć : ( x s l : s o r t | x s l : w i t h−param )∗ −−>6 </ x s l : a p p l y−t emp l a t e s>
Składnia
1 <x s l : t em p l a t e match="/">2 <html>3 <x s l : apply-templates/>4 </html>5 </ x s l : t em p l a t e>
Rekurencyjne przetwarzanie wszystkich dzieci węzła „/”
Dr inż. Stanisław Polak 8 Przedmiot: XML i jego zastosowania
Zagadnienia podstawowe XSLT
Pobieranie wartości węzłówInstrukcja value-of
1 <!−− Ka t e g o r i a : i n s t r u k c j a −−>2 <x s l : v a l u e−o f3 select = s t r i n g−e x p r e s s i o n4 disable-output-escaping = "yes" | "no"/>
Składnia
1 <x s l : t em p l a t e match="pracownik">2 <x s l : value-of select="imie"/>3 <x s l : t e x t> </ x s l : t e x t>4 <x s l : value-of select="nazwisko"/>5 </ x s l : t em p l a t e>
Pobranie imienia i nazwiska
Dr inż. Stanisław Polak 9 Przedmiot: XML i jego zastosowania
Zagadnienia podstawowe XSLT
Wstawianie danych testowychInstrukcja text
1 <!−− Ka t e g o r i a : i n s t r u k c j a −−>2 <x s l : t e x t3 d i s a b l e−output−e s c ap i n g = "yes" | "no"4 <!−− Zawarto ś ć : #PCDATA −−>5 </ x s l : t e x t>
Składnia
1 <x s l : t em p l a t e match="pracownik">2 <x s l : v a l u e−o f s e l e c t="imie"/>3 <x s l : text> </ x s l : text>4 <x s l : v a l u e−o f s e l e c t="nazwisko"/>5 </ x s l : t em p l a t e>
Wstawienie spacji pomiędzy imię a nazwisko
Dr inż. Stanisław Polak 10 Przedmiot: XML i jego zastosowania
Zagadnienia podstawowe XSLT
Sterowanie formatem wyprowadzanego wynikuElement output
1 <!−− Ka t e g o r i a : Element najwy ż szego poziomu −−>2 <x s l : o u t p u t3 method = "xml" | "html" | "text" | qname−but−not−ncname4 version = nmtoken5 encod ing = s t r i n g6 omit−xml−d e c l a r a t i o n = "yes" | "no"7 standalone = "yes" | "no"8 doctype−p u b l i c = s t r i n g9 doctype−system = s t r i n g10 cdata−s e c t i o n−e l ement s = qnames11 i n d en t = "yes" | "no"12 media−t ype = s t r i n g />
1 <x s l : o u t p u t method="xml" version="1.0" standalone="yes" encod ing="UTF -8" omit−xml−d e c l a r a t i o n="no" doctype−p u b l i c=" -//W3C//DTD HTML 4.01 Transitional //EN" doctype−system="http://www.w3.org/TR/html4/loose.dtd" i n d en t="yes" media−t ype="text/xml"/>
2 . . .
Arkusz XSLT
1 <?xml version="1.0" encod ing="UTF -8" standalone="yes"?>2 <! DOCTYPE html PUBLIC " -//W3C//DTD HTML 4.01 Transitional //EN" "http: //www.w3.
org/TR/html4/loose.dtd ">3 . . .
Wynikowy dokument XML
Dr inż. Stanisław Polak 11 Przedmiot: XML i jego zastosowania
Zagadnienia podstawowe XSLT
Sterowanie formatem wyprowadzanego wynikuMetody wyprowadzania wyniku
1 <x s l : o u t p u t method="html"/>2 <x s l : t em p l a t e match="/">3 <html>4 <x s l : p r o c e s s i n g−i n s t r u c t i o n name=’php’>echo (123)</ x s l : p r o c e s s i n g−i n s t r u c t i o n>5 <br xmlns="http://www.agh.edu.pl/"/>6 <br />7 <j />8 <s c r i p t type="text/javascript" l anguage="JavaScript 1.5">9 alert (12 > 6) ;10 </ s c r i p t>11 </html>12 </ x s l : t em p l a t e>
1 <?xml version="1.0"?>2 <html><?php echo (123) ?><br xmlns="http://www.agh.edu.pl/"/><br /><j /><s c r i p t type="text/javascript" l anguage
="JavaScript 1.5">3 alert (12 > ; 6) ;4 </ s c r i p t></html>
method=”xml”
1 <html>2 <?php echo (123)><br xmlns="http://www.agh.edu.pl/"></ br><br><j></ j><s c r i p t type="text/javascript" l anguage=
"JavaScript 1.5">3 alert (12 > 6) ;4 </ s c r i p t>5 </html>
method=”html”
12 alert (12 > 6) ;
method=”text”
Dr inż. Stanisław Polak 12 Przedmiot: XML i jego zastosowania
Przetwarzanie danych XSLT
Metody konwersji dokumentu XML
I Dokument XML oraz XSL na kliencie1
I Klient— przekształacanie i wyświetlanie przekształconego dokumentu(Firefox 1.0.2, Opera 9, IE 6, Netscape 8, Mozilla 1.7.8)
I Dokument XML oraz XSL na serwerzeI Serwer— przekształcanie (PHP, Apache Cocoon, . . . )I Klient—wyświetlanie przekształconego dokumentu
I Dokument przekształcany przez odrębny program, np.:I SAXON—obsługuje XSLT 1.0, 2.0 oraz 3.0I AltovaXML— obsługuje XSLT 1,0 oraz 2.0I Apache Xalan— obsługuje XSLT 1.0I xsltproc— obsługuje XSLT 1.0
1Przeglądarki obsługują XSLT 1.0, a po zainstalowaniu Saxon-CE, również XSLT 2.0
Dr inż. Stanisław Polak 13 Przedmiot: XML i jego zastosowania
Przetwarzanie danych XSLT
Reguły domyślne
1 <x s l : t em p l a t e match="*|/">2 <x s l : a p p l y−t emp l a t e s />3 </ x s l : t em p l a t e>45 <x s l : t em p l a t e match="*|/" mode="m">6 <x s l : a p p l y−t emp l a t e s mode="m"/>7 </ x s l : t em p l a t e>
Elementów
1 <x s l : t em p l a t e match="text()|@*">2 <x s l : v a l u e−o f s e l e c t="."/>3 </ x s l : t em p l a t e>
Atrybutów i węzłów tekstowych
1 <x s l : t em p l a t e match="processing -instruction ()|comment ()"/>
Instrukcji przetwarzania i komentarzy
Dr inż. Stanisław Polak 14 Przedmiot: XML i jego zastosowania
Przetwarzanie danych XSLT
Ogólny algorytm przetwarzania danych
Utwórz drzewo reprezentujące dokument XMLDołącz reguły domyślneRozpocznij rekurencyjne przetwarzanie drzewa XMLZnajdź najlepiej pasującą regułę i wstaw do drzewa wynikowowego danezawarte w treści regułyif W treści reguły znajduje się <apply-templates/> then
Rozpocznij rekurencyjne przetwarzanie drzewa XML od wskazanegomiejsca (gdy wyspecyfikowano wartość atrybutu ’select’) lub wszystkichelementów potomnych (gdy brak ’select’)end if
Dr inż. Stanisław Polak 15 Przedmiot: XML i jego zastosowania
Przetwarzanie danych XSLT
Ogólny algorytm wybierania reguł
if Nie istnieje reguła dla danego kontekstu thenzastosuj regułę domyślnąreturnend ifif Istnieje dokładnie jedna reguła dla danego kontekstu then
zastosuj tę regułęreturnend ifif Istnieje kilka reguł dla danego kontekstu then
zastosuj regułę o najwyższym prioryteciereturnend ifif Istnieje kilka reguł dla danego kontekstu o jednakowym priorytecie then
zastosuj tę z nich, która występuje najpóźniej w arkuszu XSLTreturnend if
Dr inż. Stanisław Polak 16 Przedmiot: XML i jego zastosowania
Przykłady Przetwarzanie danych XSLT
Wejściowy dokument XML
1 <?xml version="1.0" encod ing="UTF -8"?>2 <pracown ik>3 <im i e>Jan</ im i e>4 <nazwi sko>Nowak</ nazwi sko>5 <da t a u r o d z e n i a>6 <rok>1969</ rok>7 <mi e s i a c>Maj</ m i e s i a c>8 <dz i e n>1</ dz i e n>9 </ da t a u r o d z e n i a>10 <!−− komentarz −−>11 <m i e j s c e p r a c y budynek="C1"/>12 </ pracown ik>
Dr inż. Stanisław Polak 17 Przedmiot: XML i jego zastosowania
Przykłady Przetwarzanie danych XSLT
Przykład 1Użycie reguł domyślnych
1 <x s l : s t y l e s h e e t version=’1.0’xm l n s : x s l=’http://www.w3.org /1999/ XSL/Transform ’>
2 </ x s l : s t y l e s h e e t>
Arkusz XSLT
/
pracownik
imie
Jan
nazwisko
Nowak
data urodzenia
rok
1969
miesiac
Maj
dzien
1
komentarz miejsce pracy
budynek=”C1”
1 <?xml version="1.0"?>23 Jan4 Nowak56 19697 Maj8 1
Wynikowy dokument XML
Dr inż. Stanisław Polak 18 Przedmiot: XML i jego zastosowania
Przykłady Przetwarzanie danych XSLT
Przykład 2Użycie własnych reguł
1 <?xml version="1.0"?>2 <x s l : s t y l e s h e e t xm l n s : x s l="http://www.w3.org /1999/ XSL/Transform" version="1.0">34 <x s l : o u t p u t method="html" i n d en t="yes" encod ing="iso -8859 -2"/>56 <x s l : t em p l a t e match="/">7 <html>8 <x s l : a p p l y−t emp l a t e s />9 </html>10 </ x s l : t em p l a t e>1112 <x s l : t em p l a t e match="text()"/>1314 <x s l : t em p l a t e match="pracownik">15 <head>< t i t l e><x s l : v a l u e−o f s e l e c t="imie"/> <x s l : t e x t> </ x s l : t e x t><x s l : v a l u e−
o f s e l e c t="nazwisko"/></ t i t l e></head>16 <body>17 <h1><x s l : v a l u e−o f s e l e c t="imie"/> <x s l : t e x t> </ x s l : t e x t><x s l : v a l u e−o f
s e l e c t="nazwisko"/> </h1>18 <x s l : a p p l y−t emp l a t e s />19 </body>20 </ x s l : t em p l a t e>2122 <x s l : t em p l a t e match="data urodzenia"> Urodzony: <x s l : t e x t> </ x s l : t e x t>23 <x s l : v a l u e−o f s e l e c t="dzien"/><x s l : t e x t> </ x s l : t e x t> <x s l : v a l u e−o f s e l e c t="
miesiac"/>24 <x s l : t e x t> </ x s l : t e x t> <x s l : v a l u e−o f s e l e c t="rok"/> <br />25 </ x s l : t em p l a t e>2627 <x s l : t em p l a t e match="miejsce pracy"> Pracuje w budynku: <x s l : v a l u e−o f s e l e c t="
@budynek"/> <br /> </ x s l : t em p l a t e>2829 </ x s l : s t y l e s h e e t>
Arkusz XSLT
/
pracownik
imie
Jan
nazwisko
Nowak
data urodzenia
rok
1969
miesiac
Maj
dzien
1
komentarz miejsce pracy
budynek=”C1”
1 <html>2 <head>3 <meta http−equ i v="Content -Type" content="text/html; charset=iso -8859 -2">4 <title>Jan Nowak</title>5 </head>6 <body>7 <h1>Jan Nowak</h1> Urodzony : 1 Maj 1969<br> Pracuje w budynku : C1<br>8 </body>9 </html>
Wynikowy dokument HTML
Dr inż. Stanisław Polak 19 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
Przetwarzanie zbioru elementów po koleiInstrukcja for-each
1 <x s l : t em p l a t e match="/">2 <html>3 <head><t i t l e>Customers</ t i t l e></head>4 <body>5 <t a b l e>6 <tbody>7 <x s l : for-each select="customers/customer">8 <t r>9 <th><x s l : a p p l y−t emp l a t e s s e l e c t="name"/></ th>10 <x s l : for-each select="order">11 <td><x s l : a p p l y−t emp l a t e s /></ td>12 </ x s l : for-each>13 </ t r>14 </ x s l : for-each >15 </ tbody>16 </ t a b l e>17 </body>18 </html>19 </ x s l : t em p l a t e>
Arkusz XSLT
1 <cus tomer s>2 <customer>3 <name> . . .</name>4 <o r d e r> . . .</ o r d e r>5 <o r d e r> . . .</ o r d e r>6 </ customer>7 <customer>8 <name> . . .</name>9 <o r d e r> . . .</ o r d e r>10 <o r d e r> . . .</ o r d e r>11 </ customer>12 </ cus tomer s>
Wejściowy dokument XML
1 <html xmlns="http ://www.w3.org /1999/ xhtml">2 <head>3 <meta http−equ i v="Content -Type" content="text/html; charset=
UTF -8">4 <title>Customers</title>5 </head>6 <body>7 <table>8 <tbody>9 <tr><th> . . .</th><td> . . .</td><td> . . .</td></tr>10 <tr><th> . . .</th><td> . . .</td><td> . . .</td></tr>11 </tbody>12 </table>13 </body>14 </html>
Wynikowy dokument HTML
Dr inż. Stanisław Polak 20 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
Tworzenie elementów i atrybutówInstrukcje element oraz attribute
1 <x s l : t em p l a t e match="/">2 <x s l : element name="QQQ">
3 <x s l : element name="{//BBB}" namespace="http://www.agh.edu.pl/">
4 <x s l : attribute name = "{//CCC}" >a
5 b</ x s l : attribute>6 <XXX><x s l : attribute name="b" namespace="
http://www.agh.edu.pl/">a</ x s l :attribute></XXX>
7 </ x s l : element>8 </ x s l : element>9 </ x s l : t em p l a t e>
Arkusz XSLT
1 <AAA>2 <BBB>bbb</BBB>3 <CCC>ccc</CCC>4 </AAA>
Wejściowy dokument XML
1 <?xml version="1.0"?>2 <QQQ>
3 <bbb xmlns="http://www.agh.edu.pl/" ccc="a b">
4 <XXX xmlns="" xm l n s : n s 1="http://www.agh.edu.pl/" n s 1 : b="a"/>
5 </bbb>6 </QQQ>
Wynikowy dokument XML
Dr inż. Stanisław Polak 21 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
Definiowanie zbioru atrybutówElement attribute-set
1 <x s l : t em p l a t e match="chapter/heading">2 <f o : b l o c k quadding="start" x s l : use-attribute-sets="title -style">3 <x s l : a p p l y−t emp l a t e s />4 </ f o : b l o c k>5 </ x s l : t em p l a t e>6 <x s l : attribute-set name="title -style">7 <x s l : attribute name="font -size">12pt</ x s l : a t t r i b u t e>8 <x s l : attribute name="font -weight">bold</ x s l : a t t r i b u t e>9 </ x s l : attribute-set>
Definiowanie nazwanego zbioru atrybutów
Dr inż. Stanisław Polak 22 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
Tworzenie instrukcji przetwarzania i komentarzyInstrukcje processing-instruction oraz comment
1 <x s l : processing-instruction name="xml -stylesheet">href="a.css" type="text/css"</ x s l : processing-instruction>
2 <x s l : processing-instruction name="php">3 echo ( "<a b="1">c</a>" )4 </ x s l : processing-instruction>5 <x s l : processing-instruction name="php">echo ( "?>" )6 </ x s l : processing-instruction><!−− Komunikat b ł ę du : "
xsl:processing -instruction: ’?>’ notallowed within PI content" −−>
78 <x s l : comment>This file is automatically
generated . Do not edit !</ x s l : comment>9 <x s l : comment>−−</ x s l : comment><!−− Komunikat b ł ę
du : "xsl:comment : ’--’ or ending ’-’ notallowed in comment" −−>
Arkusz XSLT
1 <?xml−s t y l e s h e e t h r e f="a.css" type="text/css"?>2 <?php3 echo ( "c" )4 ?>56 <!−−This f i l e i s a u t oma t i c a l l y g ene r a t ed . Do not
e d i t !−−>7
Wynikowy dokument XML
Dr inż. Stanisław Polak 23 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
Zliczanie węzłówInstrukcja number
1 <x s l : t em p l a t e match="items">2 <x s l : f o r−each s e l e c t="item">3 <x s l : s o r t s e l e c t="."/>4 <p>5 <x s l : number value="position ()"
format="1. "/>6 <x s l : v a l u e−o f s e l e c t="."/>7 </p>8 </ x s l : f o r−each>9 </ x s l : t em p l a t e>
Arkusz XSLT
1 <i t ems>2 <i t em>a</ i tem>3 <i t em>b</ i tem>4 </ i t ems>
Wejściowy dokument XML
1 <p>1 . a</p>2 <p>2 . b</p>
Wynikowy dokument HTML
Dr inż. Stanisław Polak 24 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
ZmienneInstrukcja variable
1 <!−− Zmienna g l o b a l n a −−>2 <x s l : variable name="para -font -size">12pt</ x s l : variable>3 <x s l : v a r i a b l e name="para -font -size">10pt</
x s l : v a r i a b l e><!−− Komunikat b ł ę du : "redefinition of global variable para -font -size" −−>
45 <x s l : t em p l a t e match="/">6 <!−− Zmienne l o k a l n e −−>7 <x s l : variable name ="para -font -size">10pt</ x s l : variable>8 <x s l : variable name ="para -font -size">8pt</ x s l : variable>
<!−− Komunikat b ł ę du : "XSLT -variable:Redefinition of variable ’para -font -size ’."−−>
9 <x s l : v a r i a b l e name ="value" select="count (/)"/>10 <f o : b l o c k font−s i z e="{$para-font-size}"><x s l : v a l u e−o f
s e l e c t="$value"/>11 </ f o : b l o c k>12 </ x s l : t em p l a t e>
Arkusz XSLT
1 <f o : b l o c k font−s i z e="10pt">1</ f o : b l o c k>
Wynikowy dokument XML
Dr inż. Stanisław Polak 25 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
Makrodefinicje
1 <x s l : template name ="numbered -block">2 <x s l : param name="format">1 . </ x s l : param>3 <f o : b l o c k>4 <x s l : numbe r fo rmat="{$format}"/>5 <x s l : a p p l y−t emp l a t e s />6 </ f o : b l o c k>7 </ x s l : template>89 <x s l : t em p l a t e match="//ol/li">10 <x s l : call-template name="numbered -block">11 <x s l : with-param name="format">a . </ x s l : with-
param>12 </ x s l : call-template>13 </ x s l : t em p l a t e>1415 <x s l : t em p l a t e match="//ul/li">16 <x s l : call-template name="numbered -block"/>17 </ x s l : t em p l a t e>
Arkusz XSLT
1 <body>2 <o l>3 < l i>aaa</ l i>4 < l i>bbb</ l i>5 </ o l>6 <u l>7 < l i>ccc</ l i>8 < l i>ddd</ l i>9 </ u l>10 </body>
Wejściowy dokument XML
1 <f o : b l o c k>a . aaa</ f o : b l o c k>2 <f o : b l o c k>b . bbb</ f o : b l o c k>345 <f o : b l o c k>1 . ccc</ f o : b l o c k>6 <f o : b l o c k>2 . ddd</ f o : b l o c k>
Wynikowy dokument XML
Dr inż. Stanisław Polak 26 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
Kopiowanie węzłówInstrukcja copy oraz copy-of
1 <Name>2 <Fami ly>Smith</ Fami ly>3 <Given>John</Given>4 </Name>
Wejściowy dokument XML
1 <x s l : t em p l a t e match="Name">2 <x s l : copy/>3 </ x s l : t em p l a t e>4 </ x s l : s t y l e s h e e t>
Arkusz XSLT
1 <Name/>
Wynikowy dokument XML
1 <x s l : t em p l a t e match="Name">2 <x s l : copy-of select="."/>3 </ x s l : t em p l a t e>4 </ x s l : s t y l e s h e e t>
Arkusz XSLT
1 <Name>2 <Fami ly>Smith</ Fami ly>3 <Given>John</Given>4 </Name>
Wynikowy dokument XML
Dr inż. Stanisław Polak 27 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
SortowanieInstrukcja sort
1 <x s l : t em p l a t e match="employees">2 <u l>3 <x s l : a p p l y−t emp l a t e s s e l e c t="employee">4 <x s l : sort select="name/family"/>5 <x s l : sort select="name/given"/>6 </ x s l : a p p l y−t emp l a t e s>7 </ u l>8 </ x s l : t em p l a t e>910 <x s l : t em p l a t e match="employee">11 < l i>12 <x s l : v a l u e−o f s e l e c t="name/given"/>13 <x s l : t e x t></ x s l : t e x t>14 <x s l : v a l u e−o f s e l e c t="name/family"/>15 </ l i>16 </ x s l : t em p l a t e>17 </ x s l : s t y l e s h e e t>
Szablon XSLT
1 <employees>2 <employee>3 <name>4 <g i v en>John</ g i v en>5 <f am i l y>Doe</ f am i l y>6 </name>7 </ employee>8 <employee>9 <name>10 <g i v en>James</ g i v en>11 <f am i l y>Clark</ f am i l y>12 </name>13 </ employee>14 </ employees>
Wejściowy dokument XML
1 <ul>2 <li>James Clark</li>3 <li>John Doe</li>4 </ul>
Wynikowy dokument HTML
Dr inż. Stanisław Polak 28 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
Przetwarzanie warunkoweInstrukcja if oraz choose
1 <name l i s t>2 <name>Kowalski</name>3 <name>Nowak</name>4 <name>Smith</name>5 <name>Doe</name>6 </ n ame l i s t>
Wejściowy dokument XML
1 <x s l : t em p l a t e match="namelist/name">2 <x s l : a p p l y−t emp l a t e s />3 <x s l : if test="not(position ()=last() -1)">, </ x s l : if>4 </ x s l : t em p l a t e>
Arkusz XSLT
1 Kowalski ,2 Nowak ,3 Smith ,4 Doe
Dokument wynikowy
1 <o r d e r e d l i s t>2 <l i s t i t e m>Kowalski</ l i s t i t e m>3 <o r d e r e d l i s t>4 <l i s t i t e m>Nowak</ l i s t i t e m>5 <o r d e r e d l i s t>6 <l i s t i t e m>Polak</ l i s t i t e m>7 <l i s t i t e m>Smith</ l i s t i t e m>8 </ o r d e r e d l i s t>9 </ o r d e r e d l i s t>10 </ o r d e r e d l i s t>
Wejściowy dokument XML
1 <x s l : t em p l a t e match="orderedlist/listitem">2 <x s l : v a r i a b l e name="level" s e l e c t="count(ancestor::orderedlist)
mod 3"/>3 <x s l : choose>4 <x s l : when t e s t=’$level=1’>5 <x s l : numbe r fo rmat="i"/>6 </ x s l : when>7 <x s l :when t e s t=’$level =2’>8 <x s l : numbe r fo rmat="a"/>9 </ x s l :when>10 <x s l : otherwise>11 <x s l : numbe r fo rmat="1"/>12 </ x s l : otherwise>13 </ x s l : choose>14 <x s l : t e x t>. </ x s l : t e x t>15 <x s l : a p p l y−t emp l a t e s />16 </ x s l : t em p l a t e>
Arkusz XSLT
1 i . Kowalski2 a . Nowak3 1 . Polak4 2 . Smith
Dokument wynikowy
Dr inż. Stanisław Polak 29 Przedmiot: XML i jego zastosowania
Inne zagadnienia XSLT
Importowanie oraz dołączanie arkuszyInstrukcja import oraz include
1 <examples>2 <example>Polak</ example>3 <example>Nowak</ example>4 <example>Kowalski</ example>5 </ examples>
Wejściowy dokument XML
1 <x s l : t em p l a t e match="example">2 <pre><x s l : a p p l y−t emp l a t e s /></ pre>3 </ x s l : t em p l a t e>
Arkusz „doc.xsl”
1 <x s l : import h r e f="doc.xsl"/>23 <x s l : t em p l a t e match="example">4 <d i v s t y l e="border: solid red">5 <x s l : apply-imports/>6 </ d i v>7 </ x s l : t em p l a t e>
Główny arkusz XSLT
1 <div style="border: solid red"><pre>Polak</pre></div>2 <div style="border: solid red"><pre>Nowak</pre></div>3 <div style="border: solid red"><pre>Kowalski</pre></
div>
Wynikowy dokument HTML
1 <x s l : include h r e f="doc.xsl"/>23 <x s l : t em p l a t e match="example">4 <d i v s t y l e="border: solid red">5 <x s l : a p p l y−impo r t s />6 </ d i v>7 </ x s l : t em p l a t e>
Główny arkusz XSLT
1 <div style="border: solid red"></div>2 <div style="border: solid red"></div>3 <div style="border: solid red"></div>
Wynikowy dokument HTML
Dr inż. Stanisław Polak 30 Przedmiot: XML i jego zastosowania
XSLT 2.0 XSLT
XSLT 2.0Ogólna charakterystyka
I Używa XPath 2.0I Obsługuje drzewa tymczasoweI Pozwala na grupowanie węzłów i iteracyjne przetwarzanie grup —
instrukcja for-each-groupI Można definiować własne funkcje dla wyrażeń ścieżkowychI Możliwość generowania wielu dokumentów wyjściowych — instrukcjaxsl:result-document
I Możliwość przeszukiwania tekstu z zastosowaniem wyrażeń regularnych —instrukcja analyze-string
I XHTML — nowy format wyjściowy dla xsl:outputI Ulepszone opcje sortowaniaI Możliwość wczytywania plików tekstowych — funkcja unparsed-text()I . . .
Dr inż. Stanisław Polak 31 Przedmiot: XML i jego zastosowania
XSLT 2.0 XSLT
Obsługa z poziomu przeglądarki WWW
I Saxon-CE (Client Edition) — darmowa implementacja XSLT 2.0 w językuJavaScript
I http://www.saxonica.com/ce/index.xml
Dr inż. Stanisław Polak 32 Przedmiot: XML i jego zastosowania
Przykłady XSLT 2.0 XSLT
Przetwarzanie drzewa tymczasowego
1 <x s l : s t y l e s h e e t version="2.0" xm l n s : x s l="http://www.w3.org /1999/ XSL/Transform">2 <x s l : o u t p u t method="xml" i n d en t="yes"/>34 <x s l : t em p l a t e match="/">5 <x s l : v a r i a b l e name="temp">6 <x s l : e l em e n t name="root">7 <x s l : e l em e n t name="a">pierwszy</ x s l : e l em e n t>8 <x s l : e l em e n t name="a">drugi</ x s l : e l em e n t>9 </ x s l : e l em e n t>10 </ x s l : v a r i a b l e>11 <wynik><x s l : v a l u e−o f s e l e c t="$temp/root/a[1]"/></wynik>12 </ x s l : t em p l a t e>1314 </ x s l : s t y l e s h e e t>
Arkusz XSLT
1 <?xml version="1.0" encod ing="UTF -8"?>2 <wynik>pierwszy</wynik>
Wynikowy dokument XML
Dr inż. Stanisław Polak 33 Przedmiot: XML i jego zastosowania
Przykłady XSLT 2.0 XSLT
Grupowanie węzłów1 <x s l : s t y l e s h e e t xm l n s : x s l="http://www.w3.org /1999/ XSL/Transform" version="2.0">2 <x s l : o u t p u t method="html" i n d en t="yes"/>34 <x s l : t em p l a t e match="/">5 <t a b l e>6 <x s l : for-each-group select="cities/city" group-by="@country">7 <t r>8 <td><x s l : v a l u e−o f s e l e c t="@country"/></ td>9 <td><x s l : v a l u e−o f s e l e c t="current-group()/@name" s e p a r a t o r=", "/></ td>10 <td><x s l : v a l u e−o f s e l e c t="sum(current-group()/@pop)"/></ td>11 </ t r>12 </ x s l : for-each-group>13 </ t a b l e>14 </ x s l : t em p l a t e>15 </ x s l : s t y l e s h e e t>
Arkusz XSLT
1 <c i t i e s>2 <c i t y name="milan" coun t r y="italy" pop="5"/>3 <c i t y name="paris" coun t r y="france" pop="7"/>4 <c i t y name="munich" coun t r y="germany" pop="4"/>5 <c i t y name="lyon" coun t r y="france" pop="2"/>6 <c i t y name="venice" coun t r y="italy" pop="1"/>7 </ c i t i e s>
Wejściowy dokument XML
1 <? xml v e r s i o n="1.0" encod ing="UTF -8"?>2 <table>3 <tr>4 <td>italy</td>5 <td>milan , venice</td>6 <td>6</td>7 </tr>8 <tr>9 <td>france</td>10 <td>paris , lyon</td>11 <td>9</td>12 </tr>13 <tr>14 <td>germany</td>15 <td>munich</td>16 <td>4</td>17 </tr>18 </table>
Wejściowy dokument HTML
Dr inż. Stanisław Polak 34 Przedmiot: XML i jego zastosowania
Przykłady XSLT 2.0 XSLT
Definiowanie funkcji użytkownika
1 <x s l : s t y l e s h e e t version="2.0"2 xm l n s : x s l="http://www.w3.org /1999/ XSL/Transform"3 xm l n s : l o c="http:// cokolwiek">45 <x s l : function name=" loc:silnia ">6 <x s l : param name="n"/>7 <x s l : sequence s e l e c t="if($n<=1)8 then 19 else10 $n * loc:silnia ($n - 1)"/>11 </ x s l : function>1213 <x s l : t em p l a t e match="/">14 Silnia 10 wynosi <x s l : v a l u e−o f s e l e c t=" loc:silnia (10)"/>15 </ x s l : t em p l a t e>16 </ x s l : s t y l e s h e e t>
Arkusz XSLT
1 Silnia 10 wynosi 3628800
Dokument wynikowy
Dr inż. Stanisław Polak 35 Przedmiot: XML i jego zastosowania
Przykłady XSLT 2.0 XSLT
Generowanie wielu dokumentów wyjściowych
1 <?xml version="1.0" encod ing="UTF -8"?>2 <x s l : s t y l e s h e e t xm l n s : x s l="http://www.w3.org /1999/ XSL/
Transform" version="2.0">3 <x s l : o u t p u t method="html" i n d en t="yes" name="html"/>45 <x s l : t em p l a t e match="/">6 <x s l : f o r−each s e l e c t="// testrun">7 <x s l : v a r i a b l e name="filename" s e l e c t="concat(’
output1/’,@run ,’.html ’)" />8 <x s l : v a l u e−o f s e l e c t="$filename" />9 <x s l : result-document href="{$ filename}" fo rmat="html">10 <html>11 <body><x s l : v a l u e−o f s e l e c t="@run"/></body>12 </html>13 </ x s l : result-document>14 </ x s l : f o r−each>15 </ x s l : t em p l a t e>16 </ x s l : s t y l e s h e e t>
Arkusz XSLT
1 <?xml version="1.0" encod ing="UTF -8"?>2 <t e s t s>3 <t e s t r u n run="test1">4 <t e s t name="foo" pas s="true" />5 <t e s t name="bar" pas s="true" />6 <t e s t name="baz" pas s="true" />7 </ t e s t r u n>8 <t e s t r u n run="test2">9 <t e s t name="foo" pas s="true" />10 <t e s t name="bar" pas s="false" />11 <t e s t name="baz" pas s="false" />12 </ t e s t r u n>13 <t e s t r u n run="test3">14 <t e s t name="foo" pas s="false" />15 <t e s t name="bar" pas s="true" />16 <t e s t name="baz" pas s="false" />17 </ t e s t r u n>18 </ t e s t s>
Wejściowy dokument XML
1 <html>2 <body>test1</body>3 </html>
output1/test1.html
1 <html>2 <body>test2</body>3 </html>
output1/test2.html
1 <html>2 <body>test3</body>3 </html>
output1/test3.html
Dr inż. Stanisław Polak 36 Przedmiot: XML i jego zastosowania
XSLT 3.0 XSLT
XSLT 3.0Ogólna charakterystyka
I Working draft. Poprzednia nazwa: XSLT 2.1I Używa XPath 3.0I Rozszerzona składnia wzorców w regułachI Obsługa błędów — instrukcje try / catchI Wyrażenia XPath — instrukcja evaluateI Wsparcie dla przetwarzania strumieniowegoI . . .
Dr inż. Stanisław Polak 37 Przedmiot: XML i jego zastosowania
XSLT 3.0 XSLT
Obsługa błędów
1 <x s l : r e s u l t−document h r e f="out.xml">2 <x s l : v a r i a b l e name="result">3 <x s l : c a l l−t emp la t e name="construct -output"/>4 </ x s l : v a r i a b l e>5 <xsl:try>6 <x s l : c o p y−o f s e l e c t="$result" v a l i d a t i o n="strict"/>7 <xsl:catch>8 <x s l :m e s s a g e>Warning: validation of result document failed:9 Error code: <x s l : v a l u e−o f s e l e c t="$err:code"/>10 Reason: <x s l : v a l u e−o f s e l e c t="$err:description"/>11 </ x s l :m e s s a g e>12 <x s l : s e q u e n c e s e l e c t="$result"/>13 </xsl:catch>14 </xsl:try>15 </ x s l : r e s u l t−document>
Dr inż. Stanisław Polak 38 Przedmiot: XML i jego zastosowania
XSLT 3.0 XSLT
Ewaluacja wyrażeń XPath
1 <x s l : p a r am name="sortkey" as="xs:string" s e l e c t="’@name ’"/>2 . . .34 <x s l : s o r t>5 <xsl:evaluate xpath="$sortkey" as="xs:string"/>6 </ x s l : s o r t>
Dr inż. Stanisław Polak 39 Przedmiot: XML i jego zastosowania
XSLT 3.0 XSLT
Przetwarzanie strumieniowe
1 <?xml version="1.0"?>2 <x s l : s t y l e s h e e t version="3.0"3 xm l n s : x s l="http://www.w3.org /1999/ XSL/Transform">45 <x s l : t em p l a t e match="/">6 <xsl:stream h r e f="books.xml">7 <xsl:iterate s e l e c t="/books/book">8 <x s l : r e s u l t−document h r e f="{concat(’book ’, position () ,’.xml ’)}">9 <x s l : c o p y−o f s e l e c t="."/>10 </ x s l : r e s u l t−document>11 <x s l : n e x t−i t e r a t i o n />12 </xsl:iterate>13 </xsl:stream>14 </ x s l : t em p l a t e>15 </ x s l : s t y l e s h e e t>
Dr inż. Stanisław Polak 40 Przedmiot: XML i jego zastosowania
Źródła XSLT
Źródła I
Patryk Czarnik.XML i nowoczesne technologie zarządzania treścią.http://www.mimuw.edu.pl/~czarnik/.
Jack Herrington.Tip: Create multiple files in XSLT 2.0.http://www.ibm.com/developerworks/xml/library/x-tipmultxsl/index.html.
Evan Lenz.How XSLT Works.http://lenzconsulting.com/how-xslt-works/.
stylusstudio.com.Introduction to XSLT 3.0.http://www.stylusstudio.com/tutorials/intro-xslt-3.html.
W3C.XSL Transformations (XSLT) Version 1.0.http://www.w3.org/TR/xslt.
Dr inż. Stanisław Polak 41 Przedmiot: XML i jego zastosowania
Źródła XSLT
Źródła II
W3C.XSL Transformations (XSLT) Version 2.0.http://www.w3.org/TR/xslt20/.
W3C.XSL Transformations (XSLT) Version 3.0.http://www.w3.org/TR/xslt-30/.
Fundacja Wikipedia.Wolna encyklopedia Wikipedia.http://pl.wikipedia.org/.
Zvon.Tutorial XSLT.http://zvon.org/xxl/XSLTutorial/Output_pol/.
Dr inż. Stanisław Polak 42 Przedmiot: XML i jego zastosowania