xslt plan prezentacji xsltpolak/wyklady/xml/xslt.pdfplan prezentacji wstęp zagadnienia podstawowe...

11

Click here to load reader

Upload: dotuong

Post on 01-Mar-2019

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

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

Page 2: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

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

Page 3: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

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 &gt ; 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

Page 4: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

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

Page 5: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

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

Page 6: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

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&#10; 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

Page 7: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

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

Page 8: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

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

Page 9: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

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&lt;=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

Page 10: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

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

Page 11: XSLT Plan prezentacji XSLTpolak/wyklady/XML/xslt.pdfPlan prezentacji Wstęp Zagadnienia podstawowe Przetwarzanie danych Inne zagadnienia XSLT 2.0 Dr inż. Stanisław Polak 2 Przedmiot:

Ź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