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

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

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

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

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

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

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

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

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

XML extensible Markup Language. część 6

XML Path Language (XPath)

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

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

Rodzaje przetwarzania XSLT (1)

XML extensible Markup Language. część 4

XML extensible Markup Language. część 3

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

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

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

Wprowadzenie do XSLT

XML extensible Markup Language. część 8

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

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

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

Extensible Markup Language III

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

XML extensible Markup Language 3

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

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

Prezentacja i transformacja

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

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

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

XPath 2.0 / XSLT 2.0 / XQuery 1.0. Inne standardy związane z XML-em. XPath 2.0 XSLT 2.0. XPath 2.0 funkcyjny język programowania

Języki XPath i XQuery

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

UCHWAŁA NR L/932/13 RADY MIASTA MYSŁOWICE. z dnia 19 grudnia 2013 r.

Wprowadzenie do standardu XSL

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

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

Facelets ViewHandler

Układ informacji i powiązań między danymi w deklaracji w formacie XML

Aplikacje internetowe laboratorium XML, DTD, XSL

Prezentacja dokumentów XML

XML i nowoczesne technologie zarządzania treścią

Języki XPath i XQuery

XML i nowoczesne metody zarządzania treścią

Przegląd języków zapytań

Języki XPath i XQuery

Prezentacja i transformacja

XML i nowoczesne technologie zarządzania treścią

Podstawy (X)HTML i CSS

XPath 2.0 / XSLT 2.0 / XQuery 1.0. Inne standardy związane z XML-em. XPath 2.0 XSLT 2.0. XPath2.0 funkcyjny język programowania

XML w sosie własnym. Standard XML wraz z DTD, przestrzenie nazw, projektowanie struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

Przykładowy dokument XML

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

XML w bazach danych i bezpieczeństwie

XML w bazach danych i bezpieczeństwie

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

XQuery. sobota, 17 grudnia 11

HTML DOM, XHTML cel, charakterystyka

Układ informacji i powiązań między nimi w deklaracji na podatek leśny (DL-1) w formacie danych XML

Aplikacje internetowe. Interfejs użytkownika

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.

Złożone komponenty JSF wg

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

UCHWAŁA NR 135/XXVII/13 RADY MIASTA ZAMBRÓW. z dnia 26 marca 2013 r.

UCHWAŁA NR XLIII/569/14 RADY MIEJSKIEJ W CZERWIONCE-LESZCZYNACH. z dnia 25 kwietnia 2014 r.

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŚLĄSKIEGO

Przykładowy dokument XML

XML extensible Markup Language 7

Złożone komponenty JSF wg

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

Prezentacja dokumentów XML

XML & XSLT. Programowanie w Javie 2

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

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

Podstawy JavaScript ćwiczenia

Wykład 5_2 Arkusze stylów dziedziczenie. Technologie internetowe Zofia Kruczkiewicz

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŚLĄSKIEGO

Zaawansowany kurs języka Python

Przykładowy dokument XML

UCHWAŁA NR XL/527/14 RADY MIEJSKIEJ W CZERWIONCE-LESZCZYNACH. z dnia 29 stycznia 2014 r.

Wykorzystywanie parsera DOM w programach Java i PL/SQL

UCHWAŁA NR XLII/992/13 RADY MIASTA KATOWICE. z dnia 27 listopada 2013 r.

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

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

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Układ informacji i powiązań między danymi w deklaracji o wysokości opłaty za gospodarowanie odpadami komunalnymi w formacie danych XML

DTD - encje ogólne i parametryczne, przestrzenie nazw

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Kraków, dnia 10 czerwca 2015 r. Poz UCHWAŁA NR VIII/60/2015 RADY MIEJSKIEJ W KĘTACH. z dnia 29 maja 2015 roku

Zaawansowane aplikacje WWW - laboratorium

Wprowadzenie do technologii XML

UCHWAŁA Nr LII/468/2018 RADY MIEJSKIEJ W KARCZEWIE z dnia 27 lutego 2018 r.

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

SPECYFIKACJA FUNKCJONALNA OPROGRAMOWANIA 11 marca 2014 XLZEBRAPRINTER

29. Poprawność składniowa i strukturalna dokumentu XML

UKŁAD INFORMACJI I POWI

Transkrypt:

XSLT Patryk Czarnik Instytut Informatyki UW XML i nowoczesne technologie zarzadzania treścia 2007/08 Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 1 / 35

Plan 1 XSLT Budowa arkusza Wywoływanie szablonów Instrukcje sterujace Tworzenie wyniku Zmienne i parametry Szablony nazwane i funkcje Sortowanie i grupowanie 2 Tekst i serializacja Analiza tekstu Metody serializacji XSLT 1.0 a XSLT 2.0 Sposoby przetwarzania Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 2 / 35

Plan XSLT 1 XSLT Budowa arkusza Wywoływanie szablonów Instrukcje sterujace Tworzenie wyniku Zmienne i parametry Szablony nazwane i funkcje Sortowanie i grupowanie 2 Tekst i serializacja Analiza tekstu Metody serializacji XSLT 1.0 a XSLT 2.0 Sposoby przetwarzania Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 3 / 35

XSLT status XSLT Wersja 1.0 listopad 1999 powiazane z XPath 1.0 Wersja 2.0 styczeń 2007 powiazane z XPath 2.0, XPath DM, XPath FO Powstał w ramach Extensible Stylesheet Language. Zastosowania wykraczaja poza wizualizację XML. Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 4 / 35

Budowa arkusza XSLT Budowa arkusza Arkusz zbudowany z szablonów. Elementy (z prz. nazw) XSLT deklaracje i instrukcje. Konstruktory sekwencji fragmenty traktowane jako wyrażenia ciała szablonów, funkcji, wartościowania zmiennych i parametów, tworza drzewo wynikowe, moga zawierać instrukcje XSLT. Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 5 / 35

Struktura arkusza XSLT Budowa arkusza element główny <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="html" encoding="iso-8859-2" /> <xsl:import href="inny_arkusz.xsl"/> <xsl:param name="css"/> <xsl:template match="/"> <html> <head><link rel="styesheet" type="text/css" href="{$css}"/></head> <body><xsl:apply-templates/></body> </html> <xsl:template match="akapit"> <p><xsl:value-of select="."/></p> </xsl:stylesheet> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 6 / 35

Struktura arkusza XSLT Budowa arkusza deklaracje, "konfiguracja" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="html" encoding="iso-8859-2" /> <xsl:import href="inny_arkusz.xsl"/> <xsl:param name="css"/> <xsl:template match="/"> <html> <head><link rel="styesheet" type="text/css" href="{$css}"/></head> <body><xsl:apply-templates/></body> </html> <xsl:template match="akapit"> <p><xsl:value-of select="."/></p> </xsl:stylesheet> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 6 / 35

Struktura arkusza XSLT Budowa arkusza szablony <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="html" encoding="iso-8859-2" /> <xsl:import href="inny_arkusz.xsl"/> <xsl:param name="css"/> <xsl:template match="/"> <html> <head><link rel="styesheet" type="text/css" href="{$css}"/></head> <body><xsl:apply-templates/></body> </html> <xsl:template match="akapit"> <p><xsl:value-of select="."/></p> </xsl:stylesheet> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 6 / 35

Struktura arkusza XSLT Budowa arkusza konstruktory sekwencji <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="html" encoding="iso-8859-2" /> <xsl:import href="inny_arkusz.xsl"/> <xsl:param name="css"/> <xsl:template match="/"> <html> <head><link rel="styesheet" type="text/css" href="{$css}"/></head> <body><xsl:apply-templates/></body> </html> <xsl:template match="akapit"> <p><xsl:value-of select="."/></p> </xsl:stylesheet> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 6 / 35

XSLT Wywoływanie szablonów Model przetwarzania Szablon przekształcenie węzła we fragment drzewa. Start szablon pasujacy do korzenia. apply-templates rekurencyjne wywołania szablonów. Przechodzenie drzewa także za pomoca for-each. Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 7 / 35

XSLT Dopasowywanie wzorców Wywoływanie szablonów <xsl:template match="osoby"> <ul> <xsl:apply-templates select="osoba"/> </ul> <xsl:template match="osoba"> <li><xsl:apply-templates /></li> Zawartość match wzorzec: ograniczona postać ścieżek XPath, osie tylko wgłab (child i attibute). Dla każdego węzła z wyniku select: dobierany szablon o najściślej podanym match, chyba że ręcznie podano priority, konflikt bład lub wybierany późniejszy szablon (zależne od implementacji). Brak select child::node(). Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 8 / 35

XSLT Tryby przetwarzania (modes) Wywoływanie szablonów <xsl:template match="osoby"> <table>... <xsl:apply-templates select="osoba" mode="tabela"/> </table> <xsl:template match="osoba"> <li><xsl:apply-templates select="imię nazwisko"/></li> <xsl:template match="osoba" mode="tabela"> <tr><td><xsl:value-of select="imię"/></td> <td><xsl:value-of select="nazwisko"/></td></tr> Możliwe wartości atrybutu mode: nazwa, #default, #current przy wywołaniu, #all w szablonie. Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 9 / 35

Szablony wbudowane XSLT Wywoływanie szablonów <xsl:template match="element() document()" mode="#all"> <xsl:param.../>... <xsl:apply-templates select="child::node()" mode="#current"> <xsl:with-param.../>... </xsl:apply-templates> <xsl:template match="text() @*" mode="#all"> <xsl:value-of select="string(.)"/> <xsl:template match="processing-instruction() comment()" mode="#all"/> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 10 / 35

Instrukcja for-each XSLT Instrukcje sterujace <xsl:template match="osoby"> <ul> <xsl:for-each select="osoba"> <li><xsl:value-of select="imię"/> <xsl:value-of select="nazwisko"/></li> </xsl:for-each> </ul> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 11 / 35

Instrukcja if XSLT Instrukcje sterujace <xsl:template match="rozdział"> <xsl:if test="tytuł"> <h2><xsl:value-of select="tytuł"/></h2> </xsl:if> <xsl:apply-templates select="node()[local-name()!= tytuł ]"/> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 12 / 35

Instrukcja choose XSLT Instrukcje sterujace <xsl:template match="osoby"> <xsl:choose> <xsl:when test="$x > 0"> Większe </xsl:when> <xsl:when test="$x < 0"> Mniejsze </xsl:when> <xsl:otherwise> Chyba równe... </xsl:otherwise> </xsl:choose> tylko pierwsza gałaź z prawdziwym dozorem, otherwise opcjonalne. Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 13 / 35

XSLT Tworzenie węzłów wynikowych Tworzenie wyniku W konstruktorze sekwencji: instrukcje tworzace węzły, bezpośrednia zawartość. Instrukcje tworzace węzły <xsl:element name="elem"> <xsl:attribute name="atryb">wartość atrybutu</xsl:attribute> <xsl:text>zawartość tekstowa</xsl:text> <xsl:comment>to będzie komentarz</xsl:comment> </xsl:element> <xsl:processing-instruction target="xml-stylesheet"> type="text/css" href="styl.css"</xsl:processing-instruction> Bezpośrednia zawartość <elem atryb="wartość atrybutu"> Zawartość tekstowa <xsl:comment>to będzie komentarz</xsl:comment> </elem> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 14 / 35

XSLT Tworzenie wyniku Umieszczanie wyniku wyrażenia XPath Instrukcje XSLT sequence, copy-of i value-of. Wyrażenie XPath w atrybucie select. Do wyniku wstawiane: sequence wyliczona sekwencja, copy-of (głęboka) kopia sekwencji, value-of węzeł tekstowy z reprezentacja tekstowa sekwencji. Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 15 / 35

XSLT Tworzenie wyniku value-of szczegóły Źródło sekwencji: wyrażenie XPath w atrybucie select, lub konstruktor sekwencji w zawartości. Sekwencja poddana atomizacji. Wynikowy tekst: rzutowanie każego atomu na string, rozdzielone separatorem podanym w atr. separator. <x><xsl:value-of select="1 to 4" separator=" "/></x> <x>1 2 3 4</x> W XSLT 1.0 (i trybie zgodności z 1.0) tylko wartość pierwszego węzła. Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 16 / 35

XSLT Tworzenie wyniku Umieszczanie wyniku wyrażenia XPath w atrybutach Nawiasy klamrowe w wartości atrybutu (jak w XQuery). Wstawiana reprezentacja tekstowa wyliczonej sekwencji. <kwiatek nazwa="{@nazwa-kwiatka}"/> <xsl:element name="h{@poziom}">...</xsl:element> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 17 / 35

XSLT Zmienne i parametry Zmienne lokalne Przykład Zmienne deklaratywne brak instrukcji przypisania. Cykliczne referencje zabronione. <xsl:template match="costam"> <xsl:variable name="jaki_x"> <xsl:choose> <xsl:when test="$x > 0">dodatni</xsl:when> <xsl:when test="$x = 0">równy zero</xsl:when> <xsl:when test="$x < 0">ujemny</xsl:when> </xsl:choose> </xsl:variable>...<xsl:value-of select="$jaki_x"/>... Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 18 / 35

XSLT Zmienne i parametry globalne Zmienne i parametry Wartość parametru przekazana "z zewnatrz" podczas wywołania (można podać wartość domyślna). Przykład Zmienne wyliczane raz dla całego arkusza. <xsl:param name="nazwa"/> <xsl:variable name="ile-elementow" select="count(//element()[name() = $nazwa)"/> <xsl:variable name="tekst"> <p>dokument ma <xsl:value-of select="$ile-elementow"/> elementów.</p> </xsl:variable> <xsl:template match="/">... <xsl:sequence select="$tekst"/>... Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 19 / 35

XSLT Zmienne i parametry Parametry szablonów W szablonie param. W wywołaniu with-param. Przykład <xsl:template match="pracownicy"> <ul> <xsl:apply-templates select="osoba"> <xsl:with-param name="prefix" select=" Pracownik: "> </xsl:apply-templates> </ul> <xsl:template match="osoba"> <xsl:param name="prefix"/> <li><xsl:value-of select="$prefix"/><xsl:apply-templates /></li> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 20 / 35

XSLT Szablony nazwane i funkcje Szablony nazwane Przykład W szablonie atrybut name. call-template uruchamia. Bez zmiany węzła bieżacego (inaczej niż apply-templates). Możliwa rekursja. <xsl:template name="opisz-element"> <p>element o nazwie <xsl:value-of select="name()"/>.</p> <xsl:template match="/"> <html><body> <h1>wszystkie elementy:</h1> <xsl:for-each select="//*"> <xsl:call-template name="opisz-element"/> </xsl:for-each> </body></html> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 21 / 35

XSLT Szablony nazwane i funkcje Parametry i rekursja w szablonach nazwanych Pozwalaja na "programowanie" w XSLT (nawet 1.0). Silnia (z akumulatorem) <xsl:template name="silnia"> <xsl:param name="n"/> <xsl:param name="res" select="1"/> <xsl:choose> <xsl:when test="$n > 1"> <xsl:call-template name="silnia"> <xsl:with-param name="n" select="$n - 1"/> <xsl:with-param name="res" select="$n * $res"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$res"/> </xsl:otherwise> </xsl:choose> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 22 / 35

XSLT Definiowanie własnych funkcji Szablony nazwane i funkcje Tylko w XSLT 2.0. Silnia (bez akumulatora) <xsl:function name="loc:silnia"> <xsl:param name="n"/> <xsl:sequence select="if($n <= 1) then 1 else $n * loc:silnia($n - 1)"/> </xsl:function> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 23 / 35

XSLT Sortowanie i grupowanie Sortowanie podczas przetwarzania Instrukcja sort w for-each, for-each-group i apply-templates. Opcje sortowania w atrybutach: select klucz, data-type, lang rodzaj danych, order, case-order, stable. Prosty przykład <xsl:template match="osoby"> <ul> <xsl:apply-templates select="osoba"> <xsl:sort select="nazwisko"/> <xsl:sort select="imię"/> </xsl:apply-templates> </ul> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 24 / 35

Sortowanie sekwencji XSLT Sortowanie i grupowanie Instrukcja perform-sort. Przykład z rekomendacji <xsl:function name="bib:books-by-price" as="schema-element(bib:book)*"> <xsl:param name="in" as="schema-element(bib:book)*"/> <xsl:perform-sort select="$in"> <xsl:sort select="xs:decimal(bib:price)"/> </xsl:perform-sort> </xsl:function>... <xsl:copy-of select="bib:books-by-price(//bib:book) [position() = 1 to 5]"/> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 25 / 35

Grupowanie XSLT Sortowanie i grupowanie Przykład z rekomendacji <xsl:for-each-group select="cities/city" group-by="@country"> <tr> <td><xsl:value-of select="position()"/></td> <td><xsl:value-of select="@country"/></td> <td> <xsl:value-of select="current-group()/@name" separator=", "/> </td> <td><xsl:value-of select="sum(current-group()/@pop)"/></td> </tr> </xsl:for-each-group> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 26 / 35

Plan Tekst i serializacja 1 XSLT Budowa arkusza Wywoływanie szablonów Instrukcje sterujace Tworzenie wyniku Zmienne i parametry Szablony nazwane i funkcje Sortowanie i grupowanie 2 Tekst i serializacja Analiza tekstu Metody serializacji XSLT 1.0 a XSLT 2.0 Sposoby przetwarzania Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 27 / 35

Tekst i serializacja Analiza tekstu Analiza tekstu Instrukcja analyze-string. Wynik ustalany na podstawie dopasowania do wyrażenia regularnego. Przykład z rekomendacji <xsl:analyze-string select="body" regex="\[(.*)\]"> <xsl:matching-substring> <cite><xsl:value-of select="regex-group(1)"/></cite> </xsl:matching-substring> <xsl:non-matching-substring> <xsl:value-of select="."/> </xsl:non-matching-substring> </xsl:analyze-string> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 28 / 35

Tekst i serializacja Metody serializacji Serializacja wyniku Wynikiem przekształcenia drzewo XPath. Serializacja zapisanie wyniku jako sekwencji bajtów. Metody serializacji: XML, HTML, XHTML (tylko XSLT 2.0), text. Specyfikacja w arkuszu <xsl:output method="html" encoding="iso-8859-2"/> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 29 / 35

Tekst i serializacja Metody serializacji Dodatkowe parametry serializacji encoding kodowanie znaków, version wersja XML lub HTML, doctype-public, doctype-system deklaracja DOCTYPE. Specyfikacja w arkuszu <xsl:output method="xhtml" version="1.0" encoding="utf-8" doctype-public="-//w3c//dtd XHTML 1.1//EN" doctype-system="http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd"/> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 30 / 35

Tekst i serializacja Metody serializacji Zapisywanie dodatkowych plików Instrukcja result-document. Tworzy i zapisuje do pliku dodatkowe drzewo wynikowe. Przykład z rekomendacji <xsl:output name="section-format" method="xhtml" indent="no"/> <xsl:for-each-group select="/*/xhtml:body/*" group-starting-with="xhtml:h1"> <xsl:result-document href="section{position()}.html" format="section-format" validation="strip"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title><xsl:value-of select="."/></title></head> <body> <xsl:copy-of select="current-group()"/> </body> </html> </xsl:result-document> </xsl:for-each-group> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 31 / 35

Tekst i serializacja XSLT 1.0 a XSLT 2.0 Czego nie ma w XSLT 1.0 XPath 2.0 z sekwencjami, typami, if-em itd. Definiowania funkcji. Grupowania. Zapisywania dodatkowych plików z wynikiem. analyze-string.... Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 32 / 35

Tekst i serializacja XSLT 1.0 a XSLT 2.0 Tymczasowe fragmenty drzewa XSLT 1.0 osobne typy node-set i result-tree-fragment. nie wolno mieszać, r-t-f nie wolno przetwarzać. XSLT 2.0 brak takiego podziału. XSLT 2.0, ale nie XSLT 1.0 <xsl:variable name="tmp"> <xsl:apply-templates select="cośtam"/> </xsl:variable> <xsl:apply-templates select="$tmp" mode="blabla"/> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 33 / 35

Tekst i serializacja Sposoby przetwarzania push Sposoby przetwarzania Przetwarzanie sterowane struktura dokumentu źródłowego (ang. push): przechodzimy po strukturze dokumentu źródłowego, generujemy fragmenty struktury dokumentu wyjściowego. Przykład <xsl:template match="...">... <xsl:apply-templates/>... Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 34 / 35

Tekst i serializacja Sposoby przetwarzania pull Sposoby przetwarzania Przetwarzanie sterowane struktura dokumentu wyjściowego (ang. pull): jedna duża reguła dla węzła root, generujemy strukturę dokumentu docelowego, wyciagamy odpowiednie wartości z dokumentu źródłowego. Przykład <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> Patryk Czarnik (MIMUW) 08 XSLT XML 2007/08 35 / 35