Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT



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

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I 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

Extensible Markup Language III

XML extensible Markup Language 3

Prezentacja i transformacja

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 materiały dydaktyczne - Kurs Podstawowy XSL - wprowadzenie. XSL warstwa przekształcania (XSLT) oraz prezentacji informacji (XSL FO).

XML extensible Markup Language. część 3

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

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

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

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

Prezentacja dokumentów XML

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

Rodzaje przetwarzania XSLT (1)

XML Path Language (XPath)

Wprowadzenie do XSLT

Aplikacje internetowe. Interfejs użytkownika

Prezentacja dokumentów XML

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

Prezentacja dokumentów XML

Prezentacja dokumentów XML

Aplikacje internetowe laboratorium XML, DTD, XSL

Prezentacja i transformacja

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

XML extensible Markup Language. część 8

XML extensible Markup Language. część 6

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

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

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

Wprowadzenie do standardu XSL

Podstawy (X)HTML i CSS

Przykładowy dokument XML

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

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

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

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

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

Prezentacja dokumentów XML

Ćwiczenia laboratoryjne nr 8 Podstawy języka XML.

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

Interfejs użytkownika I

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

Dzięki arkuszom zewnętrznym uzyskujemy centralne sterowanie wyglądem serwisu. Zewnętrzny arkusz stylów to plik tekstowy z rozszerzeniem css.

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

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

XML DTD XML Schema CSS

XML i nowoczesne technologie zarządzania treścią

Program wykładów. Aplikacje internetowe. Podstawy usługi WWW. Architektury aplikacji intrai internetowych. dr inż. Marek Wojciechowski

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

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

XML extensible Markup Language. Paweł Chodkiewicz

Wprowadzenie do technologii XML

Elementarz HTML i CSS

Dokument hipertekstowy

Tworzenie Stron Internetowych. odcinek 6

XML extensible Markup Language. część 4

XML i nowoczesne technologie zarządzania treścią

Kaskadowe arkusze stylów (CSS)

Technologie internetowe

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Literatura. Głównie informacje w sieci:

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

za pomocą: definiujemy:

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

Tworzenie Stron Internetowych. odcinek 6

XML & XSLT. Programowanie w Javie 2

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

XML i nowoczesne metody zarządzania treścią

Kazienko P.: Rodzina języków XML. Software nr 6 (90) czerwiec 2002, s Rodzina języków XML. Przemysław Kazienko

KARTA KURSU. Przetwarzanie dokumentów XML i zaawansowane techniki WWW

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

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

Przykładowy dokument XML

Zaawansowana Pracownia Komputerowa - Ćwiczenia. Krzysztof Miernik

DTD - encje ogólne i parametryczne, przestrzenie nazw

1 XML w bazach danych

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

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

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

Model semistrukturalny

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

extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl

Narzędzia informatyczne w językoznawstwie

WPROWADZENIE. Użycie PHP

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

OpenOffice.org Writer

Kurs HTML 4.01 TI 312[01]

HTML DOM, XHTML cel, charakterystyka

System imed24 Instrukcja Moduł Analizy i raporty

Ćwiczenie 9 - CSS i wstawianie CSS

Środowisko XML (Extensible Markup Language).

CSS. Kaskadowe Arkusze Stylów

STRONY INTERNETOWE mgr inż. Adrian Zapała

XML i jego zastosowania

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

Informatyka kl. 1. Semestr I

Tabele. Przykład 15a.htm. <HTML><HEAD><TITLE> Cennik</TITLE></HEAD><BODY><H3>Cennik</H3> <TABLE BORDER="1"> <TR>

Transkrypt:

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT Marek Wojciechowski marek@cs.put.poznan.pl http://www.cs.put.poznan.pl/~marek/

Formatowanie dokumentów XML Język XML opisuje strukturę i semantykę, nie opisuje formatowania Nie ma w XML znaczników opisujących formatowanie Ze znacznikami XML nie jest związany domyślny sposób prezentacji Sposób prezentacji dokumentu XML (formatowanie) dodaje się poprzez dołączenie arkuszu stylów CSS Cascading Style Sheets (Level 1 i Level 2) Opracowany z myślą o HTML XSL Extensible Stylesheet Language Opracowany dla dokumentów XML Bardziej złożony, oferujący więcej możliwości niż CSS

Formatowanie XML za pomocą CSS produkty.xml <?xml version="1.0" encoding="windows-1250"?> <?xml-stylesheet type="text/css" href="produkty.css"?> <cennik> <produkt kod="67653829370"> <nazwa>antena dachowa</nazwa> <symbol>1709765</symbol> <cena>85</cena> </produkt> <produkt kod="56486294304"> <nazwa>radioodtwarzacz CAR 2001</nazwa> <symbol>3209765</symbol> <cena>525</cena> </produkt> <produkt kod="78488297102"> <nazwa>zestaw głośnomówiący LOUD 2</nazwa> <symbol>4409724</symbol> <cena>330</cena> </produkt> </cennik> produkty.css produkt {display: block} nazwa {display: inline; font-weight: bold} symbol {display: none} cena {display: inline; font-style: italic} CSS umożliwia formatowanie elementów, ale nie pozwala na modyfikację struktury drzewa dokumentu

XSL Extensible Stylesheet Language Język do definiowania arkuszy stylów Obejmuje 2 części: XSL Transformations (XSLT) język przekształceń Wykorzystuje XPath XSL Formatting Objects (XSL-FO) język opisu formatu W porównaniu z CSS: XSL oferuje bardziej rozbudowane mechanizmy formatowania Umożliwia transformację struktury drzewa dokumentu (!) Arkusze XSL są dokumentami XML (!) XSLT może być wykorzystywany w połączeniu z XSL-FO do formatowania dokumentów XML, ale może również być wykorzystywany niezależnie jako uniwersalny język transformacji dokumentów XML

XSLT Język przekształceń Zawiera elementy służące do definiowania reguł opisujących sposób przekształcania jednego dokumentu XML na inny dokument Wykorzystuje język wyrażeń XPath do wyboru przetwarzanych elementów Przekształcony dokument może mieć znaczniki (i DTD) dokumentu oryginalnego lub używać innego zestawu znaczników Przykłady typów konwersji dokumentów XML: Konwersja do dokumentu XML zawierającego obiekty formatujące XSL Konwersja do dokumentu HTML (np. korzystającego z arkusza stylów CSS)

Transformacja XSLT Dokument XML XSLT Dokument XML (lub HTML, WML, itp.) Arkusz stylistyczny XSL Automatyczna konwersja dokumentu XML do formatu HTML, WML, itp. lub innego dokumentu XML

produkty.xml Przykład transformacji XSLT <?xml version="1.0" encoding="windows-1250"?> <?xml-stylesheet type="text/xsl" href="produkty.xsl"?> <cennik> <produkt kod="67653829370"> <nazwa>antena dachowa</nazwa> <symbol>1709765</symbol> <cena>85</cena> </produkt> <produkt kod="56486294304"> <nazwa>radioodtwarzacz CAR 2001</nazwa> <symbol>3209765</symbol> <cena>525</cena> </produkt> <produkt kod="78488297102"> <nazwa>zestaw głośnomówiący LOUD 2 </nazwa> <symbol>4409724</symbol> <cena>330</cena> </produkt> </cennik> <?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="cennik"> <HTML><BODY><H1>Cennik akcesoriów</h1> <xsl:for-each select="produkt"> <B><xsl:value-of select="nazwa"/></b> - <I><xsl:value-of select="cena"/></i> PLN <BR/> </xsl:for-each> </BODY></HTML> </xsl:template> </xsl:stylesheet> produkty.xsl Wyrażenia XPath wybierające przetwarzane elementy Efekt transformacji do HTML wykonanej po stronie przeglądarki

Metody transformacji XSLT Programista przygotowuje arkusz stylistyczny XSL, opisujący sposób transformacji oryginalnego dokumentu XML Transformacja może być opisana w sposób rekurencyjny, proceduralny lub mieszany Za transformację dokumentu XML odpowiada procesor XSLT Procesory XSLT mogą być dostępne w postaci: Samodzielnych produktów Modułów wchodzących w skład większych produktów Przeglądarek internetowych (np. Microsoft Internet Explorer) Serwerów WWW Modułów bibliotecznych np. bibliotek Java

Co widzi procesor XSLT? Procesor XSLT widzi drzewo dokumentu XML XSLT zakłada, że drzewo składa się z 7 rodzajów węzłów: Korzeń Elementy Tekst Atrybuty Przestrzenie nazw Instrukcje przetwarzania Komentarze DTD i deklaracja typu dokumentu nie są włączane do drzewa (ale mogą powodować dodanie do niektórych elementów atrybutów domyślnych i stałych)

Domyślne reguły transformacji XSL zawiera definicje kilku domyślnych reguł niejawnie dołączonych do wszystkich arkuszy stylów Domyślna reguła elementów Zapewnia, że wszystkie węzły będą przetworzone gdy nie ma jawnych reguł Domyślna reguła węzłów tekstowych i atrybutów Kopiuje tekst i atrybuty na wyjście Domyślna reguła instrukcji przetwarzania i komentarzy Pomija instrukcje przetwarzania i komentarze Domyślne reguły mają niższy priorytet niż wyspecyfikowane jawnie (tzn. obowiązują jeśli nie zostaną przesłonięte) Dzięki powyższym regułom "pusty" arkusz stylów spowoduje przekopiowanie danych tekstowych na wyjście <?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> </xsl:stylesheet>

Transformacja rekurencyjna (1/2) Przykład: Reguły transformacji 1) Każde wystąpienie znacznika <cennik>*</cennik> zamień na: <HTML><BODY><H1>Cennik akcesoriów</h1>*</body></html> a następnie spróbuj dopasować reguły do zawartości znacznika 2) Każde wystąpienie znacznika <produkt>*</produkt> zamień na: *<BR/> a następnie spróbuj dopasować reguły do zawartości znacznika 3) Każde wystąpienie znacznika <nazwa>*</nazwa> zamień na: <B>*</B> - 4) Każde wystąpienie znacznika <cena>*</cena> zamień na: <I>*</I> PLN 5) Pomiń znacznik <symbol>*</symbol>

Transformacja rekurencyjna (2/2) Przykład: Arkusz stylistyczny XSL <?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="cennik"> <HTML><BODY><H1>Cennik akcesoriów</h1><xsl:apply-templates/></body></html> </xsl:template> <xsl:template match="produkt"> <xsl:apply-templates/><br/> </xsl:template> <xsl:template match="nazwa"> <B><xsl:value-of select="text()"/></b> - </xsl:template> <xsl:template match="symbol"> </xsl:template> <xsl:template match="cena"> <I><xsl:value-of select="text()"/></i> PLN </xsl:template> Wybiera węzeł tekstowy </xsl:stylesheet>

Transformacja proceduralna (1/2) Przykład: Pseudokod transformacji wyświetl "<HTML><BODY><H1>Cennik akcesoriów</h1>"; dla każdego znacznika <produkt> { wyświetl "<B>"; wyświetl zawartość znacznika <nazwa>; wyświetl "</B> -"; wyświetl "<I>"; wyświetl zawartość znacznika <cena>; wyświetl "</I> PLN<BR/>"; } wyświetl "</BODY></HTML>";

Transformacja proceduralna (2/2) Przykład: Arkusz stylistyczny XSL <?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="cennik"> <HTML><BODY><H1>Cennik akcesoriów</h1> <xsl:for-each select="produkt"> <B><xsl:value-of select="nazwa"/></b> - <I><xsl:value-of select="cena"/></i> PLN <BR/> </xsl:for-each> </BODY></HTML> </xsl:template> </xsl:stylesheet>

Dostęp do atrybutów, dodawanie atrybutów <?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="/"> <HTML> <HEAD><TITLE>Cennik</TITLE></HEAD> <BODY> <H1>Cennik akcesoriów</h1> <TABLE> <xsl:attribute name="border">4</xsl:attribute> <TR> <TH>Kod</TH><TH>Symbol</TH> <TH>Nazwa</TH><TH>Cena</TH> </TR> <xsl:for-each select="cennik/produkt"> <TR> <TH><xsl:value-of select="@kod"/></th> <TD><xsl:value-of select="symbol"/></td> <TD><xsl:value-of select="nazwa"/></td> <TD><xsl:value-of select="cena"/></td> </TR> </xsl:for-each> </TABLE> </BODY> </HTML> </xsl:template> </xsl:stylesheet> Dodanie atrybutu BORDER z wartością 4 do elementu<table> (<TABLE BORDER="4"> też OK.) Dostęp do atrybutu KOD elementu cennik/produkt

Transformacja warunkowa w XSLT <xsl:for-each select="cennik/produkt"> <xsl:if test="symbol='1709765'"> <TR> <TD><xsl:value-of select="symbol"/></td> <TD><xsl:value-of select="nazwa"/></td> <TD><xsl:value-of select="cena"/></td> </TR> </xsl:if> </xsl:for-each> <xsl:for-each select="cennik/produkt"> <TR> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="symbol='1709765'">green</xsl:when> <xsl:when test="symbol='4409724'">yellow</xsl:when> <xsl:otherwise>red</xsl:otherwise> </xsl:choose> </xsl:attribute> <TD><xsl:value-of select="symbol"/></td> <TD><xsl:value-of select="nazwa"/></td> <TD><xsl:value-of select="cena"/></td> </TR> </xsl:for-each>

Sortowanie w XSLT <xsl:for-each select="cennik/produkt"> <xsl:sort select="cena" data-type="number" order="descending"/> <TR> <TD><xsl:value-of select="symbol"/></td> <TD><xsl:value-of select="nazwa"/></td> <TD><xsl:value-of select="cena"/></td> </TR> </xsl:for-each> <xsl:for-each select="cennik/produkt"> <xsl:sort select="nazwa" lang="pl" data-type="text" order="ascending"/> <xsl:sort select="symbol" data-type="number" order="ascending"/> <TR> <TD><xsl:value-of select="symbol"/></td> <TD><xsl:value-of select="nazwa"/></td> <TD><xsl:value-of select="cena"/></td> </TR> </xsl:for-each>

Automatyczne numerowanie w XSLT <xsl:for-each select="cennik/produkt"> <TR> <TD><xsl:number/></TD> <TD><xsl:value-of select="symbol"/></td> <TD><xsl:value-of select="nazwa"/></td> <TD><xsl:value-of select="cena"/></td> </TR> </xsl:for-each> Domyślnie xsl:number zlicza sąsiadujące węzły węzła źródłowego Możliwości zmiany domyślnego zachowania: <xsl:number value="4"/>: wartość wyrażenia <xsl:number level="any"/>: numeracja elementów danego typu w dokumencie <xsl:number... format="i"/>: I-rzymskie, i-rzymskie małe, a/a - litery...

Metody wyprowadzania wyniku Dostępne metody: xml, html, text Metodę określa element xsl:output np. <xsl:output method= xml > Domyślnie xml, chyba że element główny dokumentu wynikowego to <HTML></HTML> Przy generacji HTML metodą xml dokument musi być well-formed: Znaczniki muszą być zamykane; np. <P>...</P>; znaczniki puste w notacji XML; np. <BR/> Znaczniki nie mogą się nakładać; np. <B> raz <I> dwa </B> trzy </I> jest błędem Wielkość liter istotna; np. <B><i> raz </I></B> jest błędem Wartości atrybutów w cudzysłowach Cały dokument zawarty w <HTML>..</HTML> <?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output method="html" encoding="windows-1250"/> <xsl:template match="cennik"> <HTML>... </HTML> </xsl:template> </xsl:stylesheet>

Łączenie kilku arkuszy stylów Importowanie xml:import Może wystąpić tylko w elemencie głównym xsl:stylesheet przed innymi elementami Reguły z importowanego arkusza mają niższy priorytet niż reguły zdefiniowane lokalnie Włączanie xml:include Może wystąpić gdziekolwiek w elemencie głównym po ostatnim elemencie xsl:import Reguły z włączanego arkusza mają taki sam priorytet jak reguły zdefiniowane lokalnie są traktowane tak jak gdyby były zdefiniowane w miejscu włączenia <?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:import href="importowany1.xsl"/> <xsl:import href="importowany2.xsl"/>... <xsl:include href="wlaczany.xsl"/>... </xsl:stylesheet>