XML extensible Markup Language 3



Podobne dokumenty
Extensible Markup Language III

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

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

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

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

XML extensible Markup Language. część 8

XML extensible Markup Language. część 6

XML extensible Markup Language. część 3

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

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

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

Rodzaje przetwarzania XSLT (1)

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

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

Aplikacje internetowe laboratorium XML, DTD, XSL

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

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 XSLT

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

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

XML extensible Markup Language. część 1

XML Path Language (XPath)

Prezentacja i transformacja

XML extensible Markup Language. część 4

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

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

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

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

Wprowadzenie do standardu XSL

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

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

Prezentacja dokumentów XML

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

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

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

Przykładowy dokument XML

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

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

XML extensible Markup Language 7

XML & XSLT. Programowanie w Javie 2

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

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

Technologie internetowe

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

XML extensible Markup Language. Paweł Chodkiewicz

XML extensible Markup Language. część 3

Literatura. Głównie informacje w sieci:

XML extensible Markup Language 6

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

Aplikacje internetowe. Interfejs użytkownika

Prezentacja i transformacja

Prezentacja dokumentów XML

SPECYFIKACJA FUNKCJONALNA OPROGRAMOWANIA 11 marca 2014 XLZEBRAPRINTER

λ 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

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

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

Informacja podatku łączny styl

Środowisko XML (Extensible Markup Language).

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

Dlaczego Python jest lepszy od XSLT?

Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska

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

STRONY INTERNETOWE mgr inż. Adrian Zapała

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

XML extensible Markup Language 1

Model semistrukturalny

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

Otwarte protokoły wymiany informacji w systemach ITS

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

Podstawy (X)HTML i CSS

Prezentacja dokumentów XML

Prezentacja dokumentów XML

Cocoon środowisko publikacyjne oparte na XML-u

GML w praktyce geodezyjnej

XML i nowoczesne technologie zarządzania treścią

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

Import limitów urlopowych / nowy rok

XML i nowoczesne technologie zarządzania treścią

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

DTD - encje ogólne i parametryczne, przestrzenie nazw

Przykładowy dokument XML

Pakiet XML Czym jest i z czym się je?

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

Szkolenie systemu POL-on

Ćwiczenia laboratoryjne nr 8 Podstawy języka XML.

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

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Historia kodowania i format plików XML. Jolanta Bachan

mgr inż. Jacek Staniec Język XML

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

INFORMACJA I informacje@pkobp.pl, I INFOLINIA I opłata jak za połączenie lokalne

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

The Binder Consulting

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

2 Podstawy tworzenia stron internetowych

QualitySpy moduł reports

Dlaczego GML? Gdańsk r. Karol Stachura

Pomoc do programu Oferent

Wprowadzenie do technologii XML

Transkrypt:

XML extensible Markup Language 3

XSL transformations (XSLT) XSLT (ang. extensible Stylesheet Language Transformations) jest opartym na XML językiem transformacji dokumentów XML XSLT umożliwia przetłumaczenie dokumentów z jednego formatu XML na inny format XML, ale również na HTML, PDF i inne. Arkusze XSLT określają w elementy wejściowe pliku XML. jaki sposób przekształcić poszczególne dokument XML arkusz XSLT procesor XSLT plik wyjściowy (XML, HTML, PDF etc.)

XSLT i przeglądarki

Struktura XSLT Arkusz XSLT ma następującą strukturę <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> INSTRUKCJE OKREŚLAJĄCE PRZEKSZTAŁCENIA ELEMENTÓW </xsl:stylesheet> Zapisujemy go w pliku z rozszerzeniem xsl np. people.xsl. W dokumencie XML, który ma być przekształcamy umieszczamy <?xml-stylesheet type="application/xml" href="people.xsl"?>

Dołączenie XSLT Rozważmy następujący dokument XML <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="people.xsl"?> <people> <person born="1912" died="1954"> <name> <first_name>alan</first_name> <last_name>turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> <profession>cryptographer</profession> </person> <person born="1918" died="1988"> <name> <first_name>richard</first_name> <last_name>feynman</last_name> </name> <profession>physicist</profession> </person> </people>

xsl:template Przykład 1 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> </xsl:stylesheet> Wynik: AlanTuringcomputer scientistmathematiciancryptographerrichardfeynmanphysicist Jeżeli chcemy dokonać transformacji wybranego elementu z dokumentu XML musimy się do niego odwołać w arkuszu XSL: <xsl:template match="element">

xsl:template Przykład 2 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="person">a Person </xsl:stylesheet> Wynik: A PersonA Person W dokumencie wejściowym są dwa elementy person. Procesor napotykając te elementy zamienia je na A Person.

xsl:template Przykład 3 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="person"><p>a Person</p> </xsl:stylesheet> Wynik A Person A Person W dokumencie wejściowym są dwa elementy person. Procesor napotykając te elementy zamienia je na A Person umieszczone w oddzielnych akapitach.

XSLT Arkusz XSLT musi być (jako dokument XML) poprawny składniowo (ang. well formed). Musi zatem spełniać wszystkie wymagania związane z poprawnością składniową. Przykład 4 Poniższy arkusz XML nie jest poprawny składniowo. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="person"><p>a Person </xsl:stylesheet>

xsl:value-of Jeżeli chcemy wybrać z wejściowego dokumentu XML pewien element w arkuszu XSLT stosujemy element: <xsl:value-of select="element"/> Przykład 5 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="person"> <xsl:value-of select="name"/> </xsl:stylesheet>

xsl:apply-templates Wynik Alan Turing Richard Feynman Procesor napotykając elementy person pobiera z nich wartości elementów name i umieszcza w oddzielnych akapitach. Procesor XSLT przechodzi przez elementy dokumentu XML metodą PREORDER. Atrybutem match dokumentu XML. elementu template są węzły przetwarzanego Z wyselekcjonowanych w ten sposób węzłów już można pobrać (i wstawić do wyniku) dane, można je także skierować do dalszego przetwarzania, poprzez umieszczenie dyrektywy xsl:apply-templates.

xsl:value-of Przykład 6 W poniższym przykładzie wybieramy wartości elementów last_name i first_name będących dziećmi elementu name. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="name"> <xsl:value-of select="last_name"/> <xsl:value-of select="first_name"/> </xsl:stylesheet> Zauważmy, że procesor najpierw przetwarza nazwisko a później imię.

xsl:value-of Wynik: TuringAlancomputer scientistmathematiciancryptographer FeynmanRichardphysicist Modyfikacja: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="name"> </xsl:stylesheet>

xsl:value-of Wynik: computer scientist mathematician cryptographer physicist Jeżeli chcemy aby w dokumencie wynikowym były tylko wartości elementów last_name i first_name musimy wyraźnie to zapisać tzn. musimy zapisać, że procesor ma przetwarzać element name.

xsl:apply-templates Przykład 7 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="name"> <xsl:value-of select="last_name"/> <xsl:value-of select="first_name"/> <xsl:template match="person"> <xsl:apply-templates select="name"/> </xsl:stylesheet> W tym miejscu rozpoczyna się przetwarzanie elementu name. Procesor zaczyna szukać elementu template z wartością match="name".

XSLT Wynik: TuringAlan FeynmanRichard Kolejność elementów w arkuszu XSLT nie ma znaczenia. Ważna jest tylko kolejność elementów w dokumencie XML. Załóżmy teraz, że chcemy zawartość elementu people umieścić w dokumencie HTML o tytule Famous Scientists. Musimy zatem w odpowiednim miejscu umieścić instrukcję przetwarzania dzieci korzenia (people)

XSLT Rozważamy następujący dokument XML: <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="people.xsl"?> <people> <person born="1912" died="1954"> <name> <first_name>alan</first_name> <last_name>turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> <profession>cryptographer</profession> </person> <person born="1918" died="1988"> <name> <first_name>richard</first_name> <last_name>feynman</last_name> </name> <profession>physicist</profession> </person> </people>

XSLT Przykład 8 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="people"> <html> <head> <title>famous Scientists</title> </head> <body> <xsl:apply-templates select="person"/> </body> </html>

XSLT Przykład 8 cd <xsl:template match="name"> <p> <xsl:value-of select="last_name"/> <xsl:value-of select="first_name"/> </p> <xsl:template match="person"> <xsl:apply-templates select="name"/> </xsl:stylesheet>

XSLT - atrybuty W arkuszach XSLT możemy transformować nie tylko wartości elementów. Możliwe jest także odwoływanie się do atrybutów. Wykorzystujemy w tym celu element: <xsl:template match="@nazwa_atrybutu"> Jeżeli chcemy odwołać się do wszystkich atrybutów jako nazwe_atrybutu podajemy *: <xsl:template match="@*">

XSLT - atrybuty Przykład 9 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="person"> <p> <xsl:apply-templates select="name"/> <br/>born: <xsl:apply-templates select="@born"/> </p> </xsl:stylesheet> Element <xsl:apply-templates select="@born"/> zwraca wartość atrybutu born.

XSLT Wynik: AlanTuring Born: 1912 RichardFeynman Born: 1918 Jeżeli chcemy odwołać się do dowolnego elementu w dokumencie XML w arkuszu XSLT stosujemy element <xsl:template match="* /"> <xsl:apply-templates/> * - dowolny element, / - korzeń, - alternatywa. Powyższy element spowoduje, że procesor dotrze do wszystkich elementów i korzenia z wyjątkiem atrybutów i elementów z przestrzeni nazw które nie są dziećmi swoich rodziców.

XSLT przestrzenie nazw Dodajmy do rozważanego przykładu przestrzeń nazw: <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="people.xsl"?> <people xmlns="http://www.cafeconleche.org/namespaces/people"> <person born="1912" died="1954"> <name> <first_name>alan</first_name> <last_name>turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> <profession>cryptographer</profession> </person> <person born="1918" died="1988"> <name> <first_name>richard</first_name> <last_name>feynman</last_name> </name> <profession>physicist</profession> </person> </people>

XSLT przestrzenie nazw Rozważane wcześniej arkusze XSLT nie mają zastosowania do tak zmodyfikowanego dokumentu XML. Informację o przestrzeni nazw musimy dodać do arkusza XSLT. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:pe="http://www.cafeconleche.org/namespaces/people">... </xsl:stylesheet> Ponadto do elementów w dokumencie XML pochodzących z tej przestrzeni nazw musimy odwoływać się za pomocą zdefiniowanych prefixów.

XSLT przestrzenie nazw Przykład 10 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:pe="http://www.cafeconleche.org/namespaces/people"> <xsl:template match="pe:people"> <html> <head> <title>famous Scientists</title> </head> <body> <xsl:apply-templates/> </body> </html> <xsl:template match="pe:name"> <p> <xsl:value-of select="pe:last_name"/> <xsl:value-of select="pe:first_name"/> </p> <xsl:template match="pe:person"> <xsl:apply-templates select="pe:name"/> </xsl:stylesheet>

xsl:for-each Arkusze XSLT umożliwiają iteracyjne przeglądanie elementów dokumentu XML Wykorzystujemy w tym celu element: Przykład 11 <xsl:for-each select="nazwa_elementu"> </xsl:for-each> <xsl:template match="people"> <xsl:for-each select="person"> <xsl:value-of select="name"/> <xsl:value-of select="@born"/> </xsl:for-each> Wynik: Alan Turing 1912 Richard Feynman 1918

xsl:for-each Modyfikacja: Wynik: <xsl:template match="people"> <table border="1"> <tr><td>name</td><td>born</td></tr> <xsl:for-each select="person"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="@born"/></td> </tr> </xsl:for-each> </table>

xsl:if Arkusze XSLT umożliwiają testowanie zawartości elementów dokumentu XML Wykorzystujemy w tym celu element: <xsl:if test="warunek"> </xsl:if> Przykład 12 Wynik: <xsl:template match="people"> <xsl:for-each select="person"> <xsl:value-of select="name"/> <xsl:if test="@born= 1912 "> died in <xsl:value-of select="@died"/> </xsl:if> </xsl:for-each> Alan Turing died in 1954 Richard Feynman

xsl:choose Arkusze XSLT umożliwiają przetwarzanie warunkowe zawartości dokumentu XML. Wykorzystujemy w tym celu element: <xsl:choose> <xsl:when test="warunek">... </xsl:when> <xsl:otherwise>... </xsl:otherwise> </xsl:choose>

xsl:choose Przykład 13 <xsl:template match="people"> <xsl:for-each select="person"> <p> <xsl:value-of select="name"/> <xsl:choose> <xsl:when test="@died= 1912 "> died in 1912 </xsl:when> <xsl:otherwise> did not die in 1912 </xsl:otherwise> </xsl:choose> </p> </xsl:for-each> Wynik: Alan Turing died in 1954 Richard Feynman did not die in 1954

xsl:sort Arkusze XSLT umożliwiają sortowanie zawartości dokumentu XML. Wykorzystujemy w tym celu element: <xsl:sort selection="element">... </xsl:sort> Sortowanie ograniczone jest do elementów: <xsl:apply-templates>...</xsl:apply-templates> <xsl:for-each>...</xsl:for-each>

xsl:sort Przykład 14 Wynik: <xsl:template match="people"> <xsl:apply-templates> <xsl:sort select="name"/> </xsl:apply-templates> Alan Turing computer scientist mathematician cryptographer Richard Feynman physicist Wynik: <xsl:template match="people"> <xsl:apply-templates> <xsl:sort select="name" order="descending"/> </xsl:apply-templates> Richard Feynman physicist Alan Turing computer scientist mathematician cryptographer

XPath XPath to język służący do adresowania części dokumentu XML. Dzięki XPath potrafimy odwoływać się do różnych elementów dokumentu XML. Rozważmy przykładowy dokument XML dla którego zapiszemy przykładowe adresowania.

XPath <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="people.xsl"?> <people> <person born="1912" died="1954"> <name> <first_name>alan</first_name> <last_name>turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> </person> <person born="1918" died="1988"> <name> <first_name>richard</first_name> <last_name>feynman</last_name> </name> <profession>physicist</profession> </person> </people>

XPath Przykładowe adresowania: 1. Wszystkie elementy person będące dziećmi elementu people /people/person Ogólnie /t1/t2/t3/ /tn 2. Wszystkie elementy person znajdujące się w dokumencie //person W przypadku rozważanego dokumentu XML wyniki powyższych adresowań będą identyczne.

XPath 3. Atrybut @born znajdujący się w elemencie person /person/@born 4. Atrybut @born znajdujący się w elemencie person i mający wartość "1912" /person/@born="1912" 5. Wszystkie osoby urodzone w roku "1912" //person[@born="1912"] 6. Pierwszy element person z dokumentu XML //person[1]

XPath 7. Ostatnia profesja (profession) z pierwszego elementu person //person[1]/profession[last()] 8. Wszystkie elementy person nie posiadające daty urodzenia //person[not @born]