METAJĘZYKI. Politechnika Koszalińska Wydział Elektroniki i Informatyki Katedra Inżynierii Komputerowej



Podobne dokumenty
Plan prezentacji. Krótko o XML Arkusze stylów XSLT XSL XSL Path Przegląd konstrukcji języka i przykłady Narzędzia Podsumowanie Literatura

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

Język XSLT. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

XML Path Language (XPath)

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

Kurs WWW Język XML, część II

Języki formatowania dokumentów strukturalnych. XSL przekształcenia XML-a. XSL a XSLT. XSL części składowe. Zasada działania przekształcenia XSLT

Prezentacja i transformacja

XML extensible Markup Language 3

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Osie (axes) Location paths

XML materiały dydaktyczne - Kurs Podstawowy XSL - wprowadzenie. XSL warstwa przekształcania (XSLT) oraz prezentacji informacji (XSL FO).

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Słowem wstępu. Standard: W3C XPath razem XSLT 1.0. XPath razem z XQuery 1.0 i XSLT 2.0. XPath trwają prace nad XPath 3.

Extensible Markup Language III

Wprowadzenie do XSLT

Wprowadzenie do standardu XSL

METAJĘZYKI. Politechnika Koszalińska Wydział Elektroniki i Informatyki Katedra Inżynierii Komputerowej

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

Języki i Techniki Programowania II. Wykład 13. TRaX, Applety, Java Security

Aplikacje internetowe laboratorium XML, DTD, XSL

Rodzaje przetwarzania XSLT (1)

Przetwarzanie dokumentów XML za pomocą XSLT ( r.)

Prezentacja i transformacja

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Przetwarzanie dokumentów XML za pomocą procesora XSLT (Zajęcia r.

XML extensible Markup Language. część 3

XSL, tj. XSLT i XSL-FO czyli jak przekształcać i ładnie wyświetlać XML-e. Kuba Pochrybniak

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

Służy do wybierania/wyszukiwania fragmentów dokumentu XML. Przypomina trochę ścieżki w systemie operacyjnym. Niech będzie dany dokument XML:

XPath XML Path Language. XSL Extensible Stylesheet Language. Wyrażenia XPath. XPath data model. Location paths. Osie (axes)

XML extensible Markup Language. część 8

Prezentacja dokumentów XML

Przykładowy dokument XML

Języki XPath i XQuery

XML & XSLT. Programowanie w Javie 2

Bazy Danych i Usługi Sieciowe

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 04

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Wprowadzenie do standardu XSL

Języki XPath i XQuery

XML extensible Markup Language. część 6

Właściwości i metody obiektu Comment Właściwości

<meta:wartosc> </meta:identyfikator> <meta:rodzajrelacji>maczesc</meta:rodzajrelacji>

Technologie internetowe

HTML (HyperText Markup Language) hipertekstowy język znaczników

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop Spis treści

Witryny i aplikacje internetowe

Odsyłacze. Style nagłówkowe

XSLT. Patryk Czarnik. Instytut Informatyki UW. XML i nowoczesne technologie zarzadzania treścia 2007/08

UCHWAŁA NR II/17/2014 RADY GMINY PRZODKOWO. z dnia 30 grudnia 2014 r.

Wprowadzenie do języka HTML

Języki XPath i XQuery

Drzewa DOM. Maciej Zakrzewicz.

Egzamin z przedmiotu Projektowanie języków XML imię i nazwisko. Zadanie Suma Punkty Max Punkty

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 03

2. Projektowanie stron WWW podstawowe informacje

Prezentacja dokumentów XML

XQuery. sobota, 17 grudnia 11

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

XSLT. Patryk Czarnik. XML i nowoczesne technologie zarzadzania treścia 2007/08

Podstawowe znaczniki języka HTML.

XHTML - Extensible Hypertext Markup Language, czyli Rozszerzalny Hipertekstowy Język Oznaczania.

Technologie Informacyjne

λ parametry. wartość funkcji suma = λ x y. x + y kwadrat = λ x. x * x K.M. Ocetkiewicz, 2008 WETI, PG 2 K.M. Ocetkiewicz, 2008 WETI, PG 3

Cw.12 JAVAScript w dokumentach HTML

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

XML extensible Markup Language. część 4

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

JAVAScript w dokumentach HTML (1)

Elektroniczna wymiana danych (EDI) jest to: - wymiana informacji pomiędzy komputerami, z użyciem powszechnie akceptowanych standardów

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

I. Program II. Opis głównych funkcji programu... 19

Podstawy (X)HTML i CSS

UKŁAD INFORMACJI I POWIĄZAŃ MIĘDZY NIMI W INFORMACJI W SPRAWIE PODATKU LEŚNEGO (IL-1) W FORMACIE DANYCH XML

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

1. Narzędzia główne: WORD 2010 INTERFEJS UŻYTKOWNIKA. wycinamy tekst, grafikę

XML extensible Markup Language. Paweł Chodkiewicz

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Young Programmer: HTML+PHP. Dr inż. Małgorzata Janik, Zajęcia #2

Przykładowy dokument XML

Krótki kurs JavaScript

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

XQuery. XQuery. Przykład. dokument XML. XQuery (XML Query Language) XQuery 1.0: An XML Query Language. W3C Recommendation

Tworzenie raportów XML Publisher przy użyciu Data Templates

Przestrzenne bazy danych Podstawy języka SQL

I. Dlaczego standardy kodowania mailingów są istotne?

Dziedziczenie. Dziedziczenie i kaskadowość. Dodał Administrator środa, 10 marzec :00. Tematy: Dziedziczenie Kaskadowość

JĘZYKI WYSZUKIWANIA W DOKUMENTACH XML

1.Formatowanie tekstu z użyciem stylów

XSLT. Patryk Czarnik. XML i nowoczesne technologie zarządzania treścią 2008/09. Instytut Informatyki UW

używane skróty: HTTP - protokół do transferu tekstu, hipertekstu, zbiorów binarnych URL - jednolity lokalizator zasobów

Podstawy JavaScript ćwiczenia

Podstawy obsługi arkusza kalkulacyjnego Excel

Przedmiot: Grafika komputerowa i projektowanie stron WWW

Ćwiczenia laboratoryjne nr 8 Podstawy języka XML.

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

XPath i XQuery. Patryk Czarnik. XML i nowoczesne technologie zarządzania treścią 2011/12. Wprowadzenie Status Model danych XPath

1. Zaczynamy! (9) 2. Edycja dokumentów (33)

Transkrypt:

4 dr inż. Robert Berezowski e-mail: beny@ie.tu.koszalin.pl Ul. Śniadeckich 2 Pokój 223A Politechnika Koszalińska Wydział Elektroniki i Informatyki Katedra Inżynierii Komputerowej 1

XPath nawigacja i wyszukiwanie Dokument XML budowa strukturalna - drzewko Nazwy znaczników opisują dane Znaczenie elementów zależy od kontekstu (tytuł publikacji, tytuł naukowy) Dla szybkich przekształceń niezbędne jest wsparcie dodatkowymi aplikacjami potrzeba opisu dostępu do elementów -XPath XPath - język deklaratywny służący wskazywaniu elementów, atrybutów, lub całych fragmentów dokumentu XML (wyszukiwaniu informacji) 2

XPath nawigacja i wyszukiwanie Zwięzła nie-xml-owa składnia, przyjęta w celu umożliwienia umieszczania wyrażeń XPath w wartościach atrybutów oraz w URI. Zastosowanie: różne technologie związane z XML: W transformacjach XSLT W odsyłaczach Xlink W wyrażeniach Xpointer W schematach XMLSchema W pytaniach Xquery 3

XPath - właściwości Wyrażenie XPath składa się z: kroków (step), które tworzą ścieżkę (path). krok Element, atrybut, funkcja Kroki rozdzielane są symbolem / Kolejne kroki (ścieżka) ograniczają wybierany obszar /root/step/finger /auto/fiat/uno/2004/lipiec /dysk/katalog/podkatalog/plik Wyrażenia XPath mogą zwracać następujące wartości: Wartość logiczna boolean; Liczba number; Łańcuch tekstowy string; Zbiór węzłów node-set. 4

XPath - właściwości Wyrażenia danego kroku uzależnione są od poprzednich kroków lub od ROOT Na kontekst składają się: Bieżący węzeł (tzw. context node); Dwie dodatnie liczby naturalne (pozycja kontekstu - context position oraz rozmiar kontekstu - context size); Wiązania zmiennych; Biblioteka dostępnych funkcji; Zadeklarowane przestrzenie nazwowe widoczne w zakresie wyrażenia. Można podawać alternatywne ścieżki w postaci tzw. wzorca (pattern). Poszczególne ścieżki są wówczas porozdzielane symbolami. 5

XPath węzeł cały element wraz z podelementami, tekstami, komentarzami. /kantor/notowanie[2] /kantor/notowanie/data/ kantor Zależności pomiędzy węzłami: root - korzeń ancestor - przodek parent rodzic self bieżący sibling rodzeństwo preceding poprzednik following - następnik descendant potomek child - dziecko notowanie notowanie wydarzenie data kursy dzien rok korona miesiac hrywna dolar euro funt 6

PROGRAM TV 7

XPath dostęp do węzłów Bezpośredni dostęp (ścieżka od korzenia): /kantor/notowanie[2]/data /kantor/notowanie/kursy/euro dostęp do węzłów w zależności od ich położenia względem węzła odniesienia (instrukcje języka XPath): notowanie/kursy child węzły dzieci descendant węzły potomkowie parent węzeł rodzic ancestor węzły przodkowie preceding wszystkie poprzednie węzły following wszystkie kolejne węzły preceding-sibling poprzedniki na tym samym poziomie following-sibling następniki na tym samym poziomie self bieżący descendant-or-self suma decendant i self ancestor-or-self suma ancestor i self 8

XPath dostęp do węzłów Bezpośredni dostęp (ścieżka od korzenia): /kantor/notowanie[2]/data /kantor/notowanie/kursy/euro dostęp do węzłów w zależności od ich położenia względem węzła odniesienia (instrukcje języka XPath): child węzły dzieci /program/child::* /program/kanal/child::* /program/child::* 9

/program/kanal[3]/audycja/parent::* /program/descendant ::* 10 /program/kanal[3]/audycja/ancestor::*

/program/kanal[3]/audycja[3]/following::* /program/kanal[3]/audycja[3]/preceding::* 11 /program/kanal[3]/audycja[3]/following-sibling::* /program/kanal[3]/audycja[3]/preceding-sibling::*

XPath dostęp do węzłów Użycie instrukcji języka XPath: Instrukcja::nazwa elementu lub Instrukcja::funkcja funkcje: o node() wyszukanie węzła o text() wyszukanie tekstu (treści) o comment() wyszukanie komentarza o processing-instruction() wyszukanie instrukcji przetwarzającej Przykład: preceding::data following-sibling::text() Skróty instrukcji języka XPath: child:: parent::node().. descendant-or-self::node() // self::node(). attribute:: @ [position()=5] - [5] tzw. predykat 12

XPath - predykaty Wyszukiwanie węzłów o określonej zawartości tekstowej./data[dzien>12], //kursy[funt=5.99], //data[miesiac=1] Operatory porównania i logiczne: Równy - = Nierówny -!= Większy od - > Większy lub równy - >= Mniejszy od - < Mniejszy lub równy - <= Iloczyn - and Alternatywa - or Zaprzeczenie - not Operatory matematyczne Dodawanie - + Odejmowanie - - Mnożenie - * Dzielenie - div modulo - mod 13

XPath funkcje tekstowe Operacje dotyczące tekstu: concat(tekst1,tekst2..) łączenie tekstów contains(tekst, wzór) sprawdzenie czy tekst zawiera wzór) normalize-space(tekst) usuwa zbędne spacje starts-with(tekst,wzór)- sprawdzenie czy tekst zaczyna sięod wzoru string-length(tekst)- obliczenie długości tekstu substring(tekst,początek,długość) wycina z tekstu od wskazanego miejsca określona ilość znaków substring-after(tekst, wzor)- zwraca tekst po wystąpieniu określonego wzorca substring-before(tekst, wzor)- zwraca tekst występujący przed wzorcem translate(tekst, stare, nowe) zamienia w tekście stare znaki na nowe 14

XPath - funkcje Operacje dotyczące liczb: ceiling(liczba) zwraca liczbę całkowitą większą bądź równą danej liczbie floor(liczba) - zwraca liczbę całkowitą mniejszą bądź równą danej liczbie round(liczba) zwraca najbliższą liczbę całkowitą sum(zbiór.węzłów) sumuje wartości węzłów Pozostałe operacje: count(element) zwraca liczbę wystąpień elementów position() podaje pozycję elementu last() podaje pozycję ostatniego elementu name() podaje nazwę elementu 15

<kantor> <notowanie data="2005.01.16"> <kursy><dolar>3.82</dolar><funt>6.02</funt><euro>4.18</euro><hrywna>0.62</hrywna></kursy> </notowanie> <notowanie data="2004.01.17"> <kursy><dolar>3.90</dolar><funt>6.06</funt><euro>4.14</euro><hrywna>0.66</hrywna></kursy> </notowanie> <notowanie data="2005.07.15"> <kursy><dolar>3.90</dolar><funt>6.00</funt><euro>4.22</euro><hrywna>0.68</hrywna></kursy> </notowanie> <notowanie data="2004.03.12"> <kursy><dolar>4.02</dolar><funt>5.96</funt><euro>4.24</euro><hrywna>0.70</hrywna></kursy> </notowanie> </kantor> kantor/notowanie[2]/*/*[position()=3] kantor/notowanie[2]/*/*[position()=last()] kantor/notowanie[2]/*/*[position()>2] kantor/notowanie[1]/*/*[position()<last()] translate(kantor/notowanie[1]/@data,'.','-') kantor/notowanie[substring(@data,1,4)=2004]/kursy/dolar 16

17 6,02 4,18 0,62 3,90 6,06 4,14 0,66 3,90 6,00 4,22 0,68 4,02 5,96 4,24 0,70 kantor notowanie notowanie notowanie notowanie kursy kursy kursy kursy dolar hrywna funt euro dolar funt euro hrywna dolar funt euro hrywna dolar funt euro hrywna @data 2005.01.16 @data 2005.01.16 @data 2005.01.16 @data 2005.01.16 3,82 sum(//dolar) div count(//dolar) //*[name()='dolar'] kantor/notowanie[2]/preceding-sibling::* kantor/notowanie[3]/kursy/dolar/following-sibling::* kantor/notowanie[2]/*/*[2]/preceding-sibling::*

Rozszerzalny język stylów XSL XSL (extensible Style Language) kompletna i oficjalna propozycja języka do przekształcania i wyświetlania dokumentów XML XSLT język przekształceń; Polega na analizie dokumentu XML i podejmowaniu decyzji w zależności od napotkanych elementów; Można użyć m.in. do zmiany układu danych, pokazania tylko wybranych elementów, przekształceniu xml na różne formaty (html, tekst, latex) XSL-FO język formatujący obiekty; Nie jest jeszcze obsługiwany przez przeglądarki; XSL XML XSL Procesor HTML (or XML or text) 18

Procesory XSLT Uruchamiane w linii poleceń (fizyczne stworzenie pliku wynikowego): xalan - darmowy, Java - http://www.apache.org xt - darmowy, Java - http://www.jclark.com saxon - darmowy, Java http://users.iclway.co.uk/mhkay/saxon utx darmowy, DOS, Unicorn Enterprises S.A. msxsl dostarczany przez Microsoft Przekształcanie XSLT w IE6 lub Netscape7 (efekty przekształcenia widoczne w oknie przeglądarki) <?xml version="1.0"?> <?xml-stylesheet href="kantor.xsl" type="text/xsl"?> <kantor> <notowanie>... </kantor> 19

Przekształcenie XSLT Wyszukiwanie w arkuszu styli XSLT reguł-instrukcji dotyczących przetwarzania; XSLT jest językiem deklaratywnym opartym na tzw. regułach przekształceń; Reguły składają się z: Szablonu, który określa jakich węzłów dotyczy dana reguła; Instrukcji opisujących przekształcenie węzła; 20

Przykładowy dokument xml <?xml-stylesheet href="kantor.xsl" type="text/xsl"?> <kantor> <notowanie kolor="yellow"> <data> <dzien>11</dzien> <miesiac>03</miesiac> <rok>2004</rok> </data> <kursy> <dolar>3.79</dolar> <funt>5.99</funt> <euro>4.22</euro> <hrywna>0.55</hrywna> <korona>0.88</korona> </kursy> </notowanie> <notowanie kolor= orange"> <data> <dzien>11</dzien> <miesiac>03</miesiac> <rok>2004</rok> </data> <kursy> <dolar>3.73</dolar> <funt>6.03</funt> <euro>4.20</euro> <hrywna>0.51</hrywna> <korona>0.88</korona> </kursy> </notowanie> </kantor> 21

Tworzenie Arkusz Stylów XSLT Dołączenie pliku XSL deklaracja w pliku *.XML: <?xml-stylesheet type="text/xsl" href="historia.xsl"?> Definicja plik *.XSL: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> lub <xsl:stylesheet xmlns:xsl= http://www.w3.org/tr/wd-xsl > - IE5 <xsl:output method= text"/> typ wyniku <xsl:template match="/"> definicja reguły głównej Kantorek! <xsl:value-of select="kantor/notowanie/data"/> <xsl:template match= xxxxx">... </xsl:stylesheet> definicja kolejnej reguły (dla znacznika <xxxx>) Wynik w Notatniku: Kantorek! 11 03 2004 22

Tworzenie Arkusz Stylów XSLT Dołączenie pliku XSL deklaracja w pliku *.XML: <?xml-stylesheet type="text/xsl" href="historia.xsl"?> Definicja plik *.XSL: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> lub <xsl:stylesheet xmlns:xsl= http://www.w3.org/tr/wd-xsl > - IE5 <xsl:output method="html"/> typ wyniku <xsl:template match="/"> <HTML> <HEAD> <TITLE>Kantorek</TITLE> </HEAD> <BODY> Kantorek! <br/> <xsl:value-of select="kantor/notowanie/data"/> </BODY> </HTML> </xsl:stylesheet> Wynik w przeglądarce: definicja reguły głównej <HTML> <HEAD> <TITLE>Kantorek</TITLE> </HEAD> <BODY> Kantorek! <br> 11 03 2004 </BODY> </HTML> 23

Reguły (xsl:template) Reguły XSLT: <xsl:template match= (XPath)">... (treść) Ścieżka XPath okrśla węzły dla których reguła obowiązuje Treść (w przypadku uruchomienia reguły) określa jakie elementy zostaną wypisane na wyjście Mogą zostać użyte dodatkowe instrukcje XSLT Przetwarzanie rozpoczyna się od reguły głównej (match= / ) Ukośnik "/" jest wzorcem reprezentującym element przed elementem głównym (XPath); Kolejne reguły mogą rekurencyjnie wywoływać reguły dla innych węzłów Wywołanie kolejnych reguł odbywa się za pomocą instrukcji <xsl:apply-templates select= nazwa /> lub <xsl:apply-templates/> 24

Reguły (xsl:template) Wywołanie reguły odbywa się za pomocą instrukcji <xsl:apply-templates select= nazwa /> Jeżeli chcemy wywołać reguły dla wszystkich dzieci to wystarczy wpisać: <xsl:apply-templates/> Elementy nieopisane posiadają regułę wbudowaną: <xsl:template match= *"> <xsl:apply-templates/> <xsl:template match="text() @*"> <xsl:value-of select="."/> Jeżeli jest więcej węzłów pasujących do określonego węzła to atrybutem priority elementu <xsl:template> można określić, która reguła ma być użyta 25

Reguły Przykładowy arkusz styli xsl <xsl:stylesheet> <xsl:template match= / > akcja + wywołanie kolejnych elementów dzieci) <xsl:template match= notowanie > akcja + wywołanie kolejnych elementów dzieci)... </xsl:stylesheet> <xsl:template match="/">kantorek! <xsl:apply-templates select="kantor/notowanie"/> <xsl:template match="notowanie"> <xsl:text> </xsl:text><xsl:value-of select="data"/> --> <xsl:apply-templates select="kursy"/> <xsl:template match="kursy"><xsl:apply-templates/> <xsl:template match="*"> <xsl:value-of select="name()"/> - <xsl:value-of select="."/><xsl:text> </xsl:text> 26

27

Węzeł główny i węzły elementów alternatywnie może zostać użyty atrybut name, zawierający dowolną nazwę, służącą do uruchomienia reguły (template) poleceniem xsl:call-template. Wynik jest produkowany za każdym razem gdy zostanie uruchomiona ta reguła. Przykład <xsl:template match= / > <xsl:call-template name= wydruk />... <xsl:template match="/"> <br/> początek reguły / <xsl:call-template name="naglowek"/> <xsl:apply-templates/> <xsl:call-template name="stopka"/> <br/> koniec reguły / <xsl:template name="naglowek"> <br/> Program telewizyjny wybrane audycje <br/> <xsl:template name="stopka"> <br/> a tu jest data, godzina i numer strony <br/> 28

Generowanie kodu HTML Arkusze XSLT zawierają: Instrukcje opisują sposób przekształcania dokumentu XML (XSL:nazwa); Literały dodawane są do wyniku w takiej postaci jak występują; Aby przekształcić dokument XML na HTML za pomocą XSLT należy: W elemencie głównym dołączyć nagłówek HTML (<html>, <head>, <body>); W pozostałych regułach dołączać dodatkowe formatowanie; Dopisywany html ma być zgodny z XML Rozróżniane są wielkości liter; Atrybuty muszą być ujęte w cudzysłowy; Każdy element musi składać się ze znacznika początkowego i końcowego 29

Zawartość węzła Wyświetlenie zawartości węzła <xsl:template match= / > - określenie węzła odniesienia określenie elementu pobieranego (w stosunku do węzła odniesienia) z pliku XML (atrybutem select określamy wybieraną wartość) <xsl:value-of select=. /> <xsl:value-of select= kantorek/notowanie/data /> Wartość węzła to tekst w nim zawarty; Jeżeli węzeł zawiera węzły potomne to wartość ta zawiera także ich tekst; <xsl:template match= audycja"> <xsl:value-of select="."/> Dobranocka <xsl:template match="program"> <xsl:value-of select="."/> Dobranocka Dziennik Film Dobranocka 30 Film Dziennik Teleturniej Film Serial Teleturniej Film Teleturniej Dziennik Film

Wstawianie wartości atrybutów - HTML <xsl:template match="/"> <HTML> <HEAD> <TITLE>Kantorek</TITLE> </HEAD> <BODY bgcolor=" <xsl:value-of select= kantor/@kolor > > <BODY bgcolor="{kantor/@kolor}"> Kantorek! <br/> <xsl:value-of select="kantor/notowanie/data"/> </BODY> <HTML> </HTML> <HEAD> <TITLE>Kantorek</TITLE> </HEAD> <BODY bgcolor="magenta"> Kantorek! <br> </HTML> 11 03 2004 </BODY> 31

Tworzenie tabeli <xsl:template match="/"> <HTML> <BODY bgcolor="{kantor/@kolor}"> Kantorek! <br/> <table border="1"> <tr> <th>data</th><th>dolar</th><th>funt</th> <th>euro</th><th>hrywna</th><th>korona</th></tr> <xsl:apply-templates/> </table> </BODY> </HTML> <xsl:template match="notowanie"> <tr align="center"> <td><xsl:value-of select="data"/></td> <td><xsl:value-of select="kursy/dolar"/></td> <td><xsl:value-of select="kursy/funt"/></td> <td><xsl:value-of select="kursy/euro"/></td> <td><xsl:value-of select="kursy/hrywna"/></td> <td><xsl:value-of select="kursy/korona"/></td> </tr> <HTML> <BODY bgcolor="magenta"> Kantorek! <br> <table border="1"> <tr> <th>data</th> <th>dolar</th> <th>funt</th> <th>euro</th> <th>hrywna</th> <th>korona</th></tr> <tr align="center"> <td> 11 02 2003 </td> <td>3.79</td> <td>5.99</td> <td>4.22</td> <td>0.55</td> <td>0.88</td> </tr>... </table></body></html> 32

Tworzenie tabeli <xsl:template match="/">... <BODY bgcolor="{kantor/@kolor}"> Kantorek! <br/> <table border="1"> <tr> <th>data</th><th>dolar</th><th>funt</th> <th>euro</th><th>hrywna</th><th>korona</th></tr> <xsl:for-each select="kantor/notowanie"> <tr align="center"> <td><xsl:value-of select="data"/></td> <td><xsl:value-of select="kursy/dolar"/></td> <td><xsl:value-of select="kursy/funt"/></td> <td><xsl:value-of select="kursy/euro"/></td> <td><xsl:value-of select="kursy/hrywna"/></td> <td><xsl:value-of select="kursy/korona"/></td> </tr> </xsl:for-each> </table> </BODY> </HTML> <HTML> <BODY bgcolor="magenta"> Kantorek! <br> <table border="1"> <tr> <th>data</th> <th>dolar</th> <th>funt</th> <th>euro</th> <th>hrywna</th> <th>korona</th></tr> <tr align="center"> <td> 11 02 2003 </td> <td>3.79</td> <td>5.99</td> <td>4.22</td> <td>0.55</td> <td>0.88</td> </tr>... </table></body></html> 33

xsl:for-each deklaracja <xsl:for-each select= ścieżka >... </xsl:for-each> Instrukcja pętli w języku xsl Dla każdego elementu określonego atrybutem select wykonaj określone kroki <xsl:for-each select="kantor/notowanie"> Dla każdego elementu notowanie wykonaj... 34

<xsl:template match="/program"> <xsl:call-template name="naglowek"/> <xsl:apply-templates/> <xsl:call-template name="stopka"/> <xsl:template match="kanal"> <table border="1" width="300"> <tr><td> <xsl:apply-templates/> </td></tr> </table> <xsl:template match="audycja"> <xsl:apply-templates/> <xsl:template name="naglowek"> <br/> Program telewizyjny - wybrane audycje <br/> <xsl:template name="stopka"> <br/> Kolejne audycje za tydzień <br/> 35

<xsl:template match="/program"> <xsl:call-template name="naglowek"/> <xsl:apply-templates/> <xsl:call-template name="stopka"/> <xsl:template match="kanal"> <table border="1" width="300 ><tr><td> <xsl:apply-templates/> </td></tr></table> <xsl:template match="audycja"> <table border="1" width="100%"> <tr> <td width="60"><xsl:value-of select="../@nazwa"/></td> <td width="60"><xsl:value-of select="@osoba"/></td> <td width="80"><xsl:value-of select="text()"/></td> <td width="50"><xsl:value-of select="@data"/></td> <td width="40"><xsl:value-of select="@godz"/></td> <td width="30"><xsl:value-of select="@czas"/></td> </tr> </table> <xsl:template name="naglowek"> <br/> Program telewizyjny - wybrane audycje <xsl:template name="stopka"> 36 <br/> Kolejne audycje za tydzień

Instrukcja warunkowa <xsl:if test= wyrażenie logiczne >... <xsl:for-each select="kantor/notowanie"> <xsl:if test="data/rok>2003">... </xsl:if> </xsl:for-each>... </xsl:if>... <xsl:for-each select="kantor/notowanie"> <xsl:if test= kursy/funt>5.97">... </xsl:if> </xsl:for-each> 37

Instrukcja wyboru <xsl:choose> <xsl:when test= warunek">... </xsl:when> <xsl:otherwise>... </xsl:otherwise> </xsl:choose> <xsl:for-each select="kantor/notowanie"> <xsl:choose> <xsl:when test="kursy/funt>5.97">... </xsl:when> <xsl:otherwise>... </xsl:otherwise> </xsl:choose> </xsl:for-each> 38

<xsl:template match="kanal"> <table border="1 ><tr><td> <xsl:apply-templates/> </td></tr></table> <xsl:template match="audycja"> <xsl:if test="@czas>30"> <table border="1" width="100% ><tr> <td width="60"><xsl:value-of select="../@nazwa"/></td> <td width="60"><xsl:value-of select="@osoba"/></td> <td width="30"><xsl:value-of select="@czas"/></td> </tr></table> </xsl:if> <xsl:template match="kanal"> <table border="1 ><tr><td> <xsl:apply-templates select="audycja[@czas>30]"/> </td></tr></table> <xsl:template match="audycja"> <table border="1" width="100% ><tr> <td width="60"><xsl:value-of select="../@nazwa"/></td> <td width="60"><xsl:value-of select="@osoba"/></td> <td width="30"><xsl:value-of select="@czas"/></td> </tr></table> 39

Sortowanie węzłów <xsl:sort/> Atrybuty: select określenie nazwy węzła wg którego sortować; order descending lub ascending kolejność sortowania; data-type text lub number sortowanie alfabetyczne lub numerycznie <xsl:sort> może się pojawić wyłącznie w ciele elementu apply-templates albo wewnątrz instrukcji xsl:for-each. <xsl:for-each select="kantor/notowanie"> <xsl:sort select="data/rok" data-type="number"/> <xsl:for-each select="kantor/notowanie"> <xsl:sort select="data/rok" data-type="number"/> <xsl:sort select="data/miesiac" data-type="number"/> 40

<xsl:template match="kanal"> <table border= 1 ><tr><td> <xsl:apply-templates> <xsl:sort select="@osoba"/> </xsl:apply-templates> </td></tr></table> <xsl:template match="audycja"> <table border="1" width="100% ><tr> <td width="60"><xsl:value-of select="../@nazwa"/></td> <td width="60"><xsl:value-of select="@osoba"/></td> <td width="80"><xsl:value-of select="text()"/></td> <td width="50"><xsl:value-of select="@data"/></td> <td width="40"><xsl:value-of select="@godz"/></td> <td width="30"><xsl:value-of select="@czas"/></td> </tr></table> 41

Tworzenie linków (<a>) Wprowadzamy atrybut id dla elementu <notowanie id="1"> Tworzymy link <xsl:for-each select="kantor/notowanie"> <a href="#{@id}"><xsl:value-of select="data"/></a> <br/> </xsl:for-each> Tworzymy miejsce linku <xsl:for-each select="kantor/notowanie"> <a name="{@id}">... </a> </xsl:for-each> <a href="#id">tu kliknij</a>< a name= id"></a> 42

Numerowanie elementów Funkcja position() <xsl:for-each select="kantor/notowanie"> <tr align="center"> <td><xsl:number value="position()" format="1"/></td> <td><xsl:value-of select="data"/></td>... <xsl:number/> atrybuty: value wartość wyprowadzana format= 1 : 1, 2, 3, format= 01 : 01, 02, 03, format= A : A, B, C, format= a : a, b, c, format= I : I, II, III, format= i : i, ii, iii,... 43

Przykłady innych funkcji Obliczenie średniej ceny kursu dolara: <xsl:value-of select="sum(//dolar) div count(//dolar)"/> Obliczenie średniej ceny kursu dolara w 2004r.: <xsl:value-of select="sum(//dolar[../../data/rok=2004]) div count(//dolar[../../data/rok=2004])"/> Zaokrąglanie wyniku round(): <xsl:value-of select="round(sum(//dolar[../../data/rok=2004]) div count(//dolar[../../data/rok=2004])) 44

xsl:attribute Pozwala dołączyć atrybut do elementu wymienionego wcześniej. Deklaracja: <xsl:attribute name= nazwa">wartość</xsl:attribute> Przykład: <tr align="center"> <xsl:if test="position() mod 2 =0"> <xsl:attribute name="bgcolor">lime</xsl:attribute> </xsl:if>... 45