Rodzaje przetwarzania XSLT (1)



Podobne dokumenty
Rodzaje przetwarzania XSLT (1) XSLT część 2. Inne standardy związane z XML-em. Rodzaje przetwarzania XSLT (2) Zmienne. Zaawansowane możliwości XSLT

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

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

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

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

Wprowadzenie do XSLT

XML extensible Markup Language 3

Extensible Markup Language III

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

XML Path Language (XPath)

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

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

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

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

XML extensible Markup Language. część 8

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

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

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

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

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. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

XML extensible Markup Language. część 6

Aplikacje internetowe laboratorium XML, DTD, XSL

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

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

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

λ 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

Prezentacja dokumentów XML

Prezentacja i transformacja

Wprowadzenie do standardu XSL

Prezentacja dokumentów XML

Dlaczego Python jest lepszy od XSLT?

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

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

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

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

XML extensible Markup Language. część 3

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

XSLT. Patryk Czarnik. XML i nowoczesne technologie zarzadzania treścia 2011/12. Instytut Informatyki UW. Patryk Czarnik 08 XSLT XML 2011/12 1 / 54

XSLT. Patryk Czarnik. XML i nowoczesne technologie zarządzania treścią 2011/12

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

XML & XSLT. Programowanie w Javie 2

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

XML extensible Markup Language. część 4

Ogólna struktura dokumentu XSL-FO. Model formatowania. Ogólna struktura dokumentu XSL-FO C.d. Przykład Hello World Użycie szablonu strony

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

XML i nowoczesne technologie zarządzania treścią

Środowisko publikacyjne oparte na XML-u. Szymon Zioło 1 maja 2004

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

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

The Binder Consulting

Technologie internetowe

Wykorzystywanie parsera DOM w programach Java i PL/SQL

XML w bazach danych i bezpieczeństwie

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

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

Prezentacja dokumentów XML

XML w bazach danych i bezpieczeństwie

Prezentacja dokumentów XML

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

Rok akademicki: 2013/2014 Kod: ZZIP IN-s Punkty ECTS: 2. Kierunek: Zarządzanie i Inżynieria Produkcji Specjalność: Informatyka w zarządzaniu

Wprowadzenie do standardu XSL

XML w.net. Dominik Baś nr alb Wrocław, 29 maja 2007

METODY REPREZENTACJI INFORMACJI

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

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

Cocoon środowisko publikacyjne oparte na XML-u

Inżynieria biomedyczna

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

XML i nowoczesne technologie zarządzania treścią

Zaawansowany kurs języka Python

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

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Informacja podatku łączny styl


Prezentacja i transformacja

PODSTAWY BAZ DANYCH 13. PL/SQL

Bazy danych i strony WWW

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Plan prezentacji XSLT. XSLT Ogólna charakterystyka. Drzewo XML. Wstęp. Przedmiot: XML i jego zastosowania. Zagadnienia podstawowe

Spis treści. Dzień 1. I Rozpoczęcie pracy ze sterownikiem (wersja 1707) II Bloki danych (wersja 1707) ZAAWANSOWANY TIA DLA S7-300/400

Symbole wieloznaczne w XML Schema. Definiowanie typów dokumentów Część 4. XML Schema, RELAX NG, Schematron. Schematron

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

Przykładowy dokument XML

<body> <div style="max-width: 900px; margin: 0 auto;">

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Interfejs użytkownika I

D:\Program Files\Temp\Deklaracja o wysokości opłaty za gospodarowanie odpadami komunalnymi-3.xml 6 maja :16

Programowanie w języku Python. Grażyna Koba

KONSTRUKCJA KOMPILATORÓW

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

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Przykład połączenie z bazą danych

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Literatura. Głównie informacje w sieci:

Koncepcja systemu informatycznego realizującego w środowisku Oracle Spatial proces generalizacji modelu BDOT10 do postaci BDOT50

XML stan obecny i trendy rozwojowe

Prezentacja dokumentów XML

Język R : kompletny zestaw narzędzi dla analityków danych / Hadley Wickham, Garrett Grolemund. Gliwice, cop Spis treści

Pakiety podprogramów Dynamiczny SQL

Transkrypt:

XSLT część 2

Rodzaje przetwarzania XSLT (1) Przetwarzanie sterowane strukturą dokumentu źródłowego (ang. push): przechodzimy po strukturze dokumentu źródłowego, generujemy fragmenty struktury dokumentu wyjściowego. <xsl:template match="...">... <xsl:apply-templates/>... 2006-11-23 XSLT część 2 2

Rodzaje przetwarzania XSLT (2) Przetwarzanie sterowane strukturą dokumentu wyjściowego (ang. pull): jedna duża reguła dla węzła root, generujemy strukturę dokumentu docelowego, wyciągamy odpowiednie wartości z dokumentu źródłowego. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns="http://www.w3.org/tr/xhtml1/strict"> <xsl:template match="/"> <html><head><title>expense Report Summary</title></head> <body> <h1>company: <xsl:value-of select="company/name"/></h1> <p>total Amount: <xsl:value-of select="expense-report/total"/></p> </body> </html> </xsl:stylesheet> 2006-11-23 XSLT część 2 3

Uproszczone przekształcenia Tylko jeden wzorzec dla węzła root. Pomijamy element stylesheet. <html xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns="http://www.w3.org/tr/xhtml1/strict" xsl:version="1.0"> <head><title>expense Report Summary</title></head> <body> <h1>company: <xsl:value-of select="company/name"/></h1> <p>total Amount: <xsl:value-of select="expense-report/total"/></p> </body> </html> 2006-11-23 XSLT część 2 4

Zaawansowane możliwości XSLT Sortowanie węzłów. Tryby przetwarzania (modes): przełączanie między trybami, niezależnie definiowane wzorce dla każdego trybu. Zmienne. Wzorce nazwane: wywoływane jak podprogramy (procedury), przekazywanie parametrów, rekursja. 2006-11-23 XSLT część 2 5

Sortowanie Można stosować w: apply-templates, for-each. <xsl:template match="miasta"> <h1>miasta wg liczby mieszkańców</h1> <xsl:apply-templates select="miasto"> <xsl:sort select="liczba-mieszk" order="descending"/> </xsl:apply-templates> 2006-11-23 XSLT część 2 6

Tryby przetwarzania (modes) <xsl:template match="/"> <h1><xsl:value-of select="book/title"/></h1> <h2>spis treści</h2> <xsl:apply-templates mode="toc"/> <xsl:apply-templates/> <xsl:template match="chapter" mode="toc"> <p><a href="#{generate-id()}"> <xsl:value-of select="title"/></a></p> <xsl:template match="chapter"> <h2><a name="{generate-id()}"> <xsl:value-of select="title"/></a></h2> <xsl:apply-templates/> 2006-11-23 XSLT część 2 7

Zmienne Jak w funkcyjnych językach programowania: brak instrukcji przypisania, brak efektów ubocznych. Deklaracja: <xsl:variable name="..."/> wartość: atrybut select wyrażenie odpowiedniego typu, zawartość elementu fragment drzewa wynikowego, Użycie: w wyrażeniach: $name, <xsl:copy-of select="expression"/> 2006-11-23 XSLT część 2 8

Wykorzystanie rekursji w XSLT (1) Sposób na brak prawdziwych zmiennych i pętli iteracyjnych. Przykład suma wartości książek: <books> <book> <title>pan Tadeusz</title> <qty>12</qty><price>10.99</price> </book> <book> <title>mistrz i Małgorzata</title> <qty>1</qty><price>15.99</price> </book> <book> <title>imię Róży</title> <qty>2</qty><price>6.99</price> </book> </books> 2006-11-23 XSLT część 2 9

Wykorzystanie rekursji w XSLT (2) Przykład XSLT: <xsl:template name="total-val"> <xsl:param name="list"/> <xsl:choose> <xsl:when test="$list"> <xsl:variable name="first" select="$list[1] "/> <xsl:variable name="rest"> <xsl:call-template name="total-val"> <xsl:with-param name="list" select="$list[position()!=1] "/> </xsl:call-template> </xsl:variable> <xsl:value-of select="$first/qty * $first/price + $rest"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> 2006-11-23 XSLT część 2 10

Wykorzystanie rekursji w XSLT (3) Przykład XSLT, c.d.: <xsl:template match="/"> <xsl:variable name="total"> <xsl:call-template name="total-val"> <xsl:with-param name="list" select="//book"/> </xsl:call-template> </xsl:variable> <p>total sales: <xsl:value-of select="$total"/> </p> 2006-11-23 XSLT część 2 11

Ograniczona użyteczność zmiennych Specjalny typ danych: fragment drzewa wynikowego (result tree fragment): wartość można jedynie: skopiować do drzewa wynikowego lub innej zmiennej, przekształcić do napisu; nie można (w czystym XSLT) przekształcić na node set, praktycznie niemożliwe obliczenia na zmiennych w kilku przebiegach. Zmienna typu node set: <xsl:variable name="b" select="/books"/> <xsl:for-each select="$b/book">...</xsl:for-each> Zmienna typu result tree fragment: <xsl:variable name="subtotals"> <xsl:for-each select="/books/book"> <subtl><xsl:value-of select="qty * price"/></subtl> </xsl:for-each> </xsl:variable> 2006-11-23 XSLT część 2 12

Funkcja node-set() Przekształca fragment drzewa wynikowego (result tree fragment) w zbiór węzłów (node set). Niedostępna w czystym XSLT: Dostępna jako rozszerzenie m. in. w: procesorach: XT, Saxon, MSXML, bibliotece rozszerzeń EXSLT. <xsl:variable name="subtotals"> <xsl:for-each select="/books/book"> <subtl><xsl:value-of select="qty * price"/></subtl> </xsl:for-each> </xsl:variable> <xsl:value-of select="sum(exsl:node-set($subtotals)/subtl)"/> 2006-11-23 XSLT część 2 13

Generowanie przekształceń XSL (1) Problem: źródło przekształcenia nie zawiera metainformacji o strukturze dokumentu, metainformacje pojawiają się na wyjściu. <wniosek-urlopowy> <wniosek> <pracownik>szymon Zioło</pracownik> <rodzaj>wypoczynkowy</rodzaj> <od>2003-06-20</od> <do>2003-06-27</do> <dni-roboczych>6</dni-roboczych> </wniosek> <decyzja> <zgoda>1</zgoda> <zastępca>jan Kowalski</zastępca> </decyzja> </wniosek-urlopowy> Źródło: Zioło, Sz., XSLT do kwadratu, Software 2.0, nr 6/2003 2006-11-23 XSLT część 2 14

Generowanie przekształceń XSL (2) Rozwiązanie: zapisanie metainformacji w szablonie, generowanie przekształcenia z szablonu. <dokument nazwa="wniosek-urlopowy" etykieta="wniosek urlopowy"> <sekcja nazwa="wniosek" etykieta="wniosek"> <pole nazwa="pracownik" etykieta="pracownik:"/> <pole nazwa="rodzaj" etykieta="rodzaj urlopu:"/> <pole nazwa="od" etykieta="od dnia:"/> <pole nazwa="do" etykieta="do dnia:"/> <pole nazwa="dni-roboczych" etykieta="ilość dni roboczych:"/> </sekcja> <sekcja nazwa="decyzja" etykieta="decyzja przełożonego"> <pole nazwa="zgoda" etykieta="zgoda przełożonego:" typ="boolean"/> <pole nazwa="zastępca" etykieta="zastępca:"/> </sekcja> </dokument> 2006-11-23 XSLT część 2 15

Generator przykład (1) <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:res="http://www.w3.org/1999/xsl/transformalias"> <xsl:namespace-alias stylesheet-prefix="res" result-prefix="xsl"/> <xsl:template match="/"> <res:stylesheet version="1.0"> <res:output method="html"/> <xsl:apply-templates/> </res:stylesheet> <xsl:template match="sekcja"> <res:template match="{@nazwa}"> <p><b><xsl:value-of select="@etykieta"/></b></p> <table><res:apply-templates/></table> </res:template> <xsl:apply-templates/> 2006-11-23 XSLT część 2 16

Generator przykład (2) <xsl:template match="pole"> <res:template match="{@nazwa}"> <tr><td><xsl:value-of select="@etykieta"/></td> <td><b> <xsl:choose> <xsl:when test="@typ='boolean'"> <res:choose> <res:when test="text()='1'">tak</res:when> <res:otherwise>nie</res:otherwise> </res:choose> </xsl:when> <xsl:otherwise> <res:value-of select="text()"/> </xsl:otherwise> </xsl:choose> </b></td></tr> </res:template> <xsl:apply-templates/> </xsl:stylesheet> 2006-11-23 XSLT część 2 17

Zastosowanie w projekcie: KEDU ZUS KEDU RCB RCB DRSB ZEUB wycięcie dokumentu wycięcie formularza RCB Blok powtarzalny RSB Szablon Generator arkuszy stylów Arkusz stylów Wizualizacja HTML 2006-11-23 XSLT część 2 18

KEDU ZUS przykład wizualizacji 2006-11-23 XSLT część 2 19

Formatting Objects przykład drzewa wynikowego <?xml version="1.0" encoding="utf-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/xsl/format">... <fo:page-sequence> <fo:flow> <fo:block font-size="18pt" font-weight="bold" text-align="centered">preface</fo:block> <fo:block font-size="12pt" space-before="1pc" text-align="justified"> This is a simple test document. It shows a <fo:inline font-style="italic">partial</fo:inline> fo-result tree (page layout missing).</fo:block> </fo:flow> </fo:page-sequence>... </fo:root> 2006-11-23 XSLT część 2 20

Formatting Objects przykłady reguł <xsl:template match="chapter"> <fo:flow><xsl:apply-templates/></fo:flow> <xsl:template match="chapter/title"> <fo:block font-size="18pt" font-weight="bold" text-align="centered"> <xsl:apply-templates/> </fo:block> <xsl:template match="para"> <fo:block font-size="12pt" space-before="1pc" text-align="justified"> <xsl:apply-templates/> </fo:block> <xsl:template match="emphasis"> <fo:inline font-style="italic"><xsl:apply-templates/> </fo:inline> 2006-11-23 XSLT część 2 21

Narzędzia Procesory XSLT: XT, James Clark (Java), Oracle XML Parser for Java / C / PL-SQL, Xalan, Apache (Java, C++), SAXON, Michael H. Kay (Java; implementuje XSLT 2.0 i XQuery), Sablotron (C++, open source), Microsoft XML Core Services (MSXML 4.0), XSLTC (XSLT compiler, Java), Apache. Procesor XSL:FO: FOP, Apache (Java; generuje dokumenty w formacie PDF). Edytory XSLT: XMLSPY, Altova Xselerator XSL Editor/Debugger, MarrowSoft, xslide Emacs Major Mode for XSL Stylesheets. 2006-11-23 XSLT część 2 22

Najważniejsze ograniczenia XSLT 1.0 Brak konwersji fragmentów drzewa wynikowego na pełnoprawne zbiory węzłów. Brak możliwości generowania wielu dokumentów wyjściowych. Brak wsparcia dla grupowania węzłów. Brak możliwości definiowania własnych funkcji. 2006-11-23 XSLT część 2 23

Gdzie szukać dalej EXSLT www.exslt.org/ Kosek, J., Understanding the node-set() Function www.xml.com/pub/a/2003/07/16/nodeset.html Tyszko, S., Rekurencyjne szablony w XSLT Software 2.0, nr 6/2002, Wydawnictwo Software Zioło, Sz., XSLT do kwadratu Software 2.0, nr 6/2003, Wydawnictwo Software 2006-11-23 XSLT część 2 24