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

Podobne dokumenty
XML extensible Markup Language. część 6

XML Path Language (XPath)

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

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 za pomocą XSLT ( r.)

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

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. część 4

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

XML extensible Markup Language. część 3

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

Aplikacje internetowe laboratorium XML, DTD, XSL

XML extensible Markup Language. część 8

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

Extensible Markup Language III

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

Rodzaje przetwarzania XSLT (1)

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

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

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 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

XML extensible Markup Language 3

Przegląd języków zapytań

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

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

Wprowadzenie do XSLT

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

XML i nowoczesne technologie zarządzania treścią

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

XML i nowoczesne metody zarządzania treścią

Prezentacja i transformacja

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

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)

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

Wprowadzenie do XML schema

XML i nowoczesne technologie zarządzania treścią

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

Nawigacja po długim dokumencie może być męcząca, dlatego warto poznać następujące skróty klawiszowe

Prezentacja i transformacja

Przykładowy dokument XML

METODY REPREZENTACJI INFORMACJI

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

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

Prezentacja dokumentów XML

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

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

Aplikacje internetowe. Interfejs użytkownika

Zdefiniowane style mogą określać układ treści na stronie i sposób jej formatowania np. kolor czcionki, pogrubienia, tło tabel, rysunków itp.

Podstawy JavaScript ćwiczenia

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

I. Menu oparte o listę

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

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

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

Wprowadzenie do standardu XSL

Podstawy technologii WWW

XML INFORMACJE NA TEMAT STRUKTURY ( )

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

Inżynieria biomedyczna

Podstawy pozycjonowania CSS

5. Mechanizm szablonów.

Kadry Optivum, Płace Optivum

R o g e r A c c e s s C o n t r o l S y s t e m 5

rk HTML 4 a 5 różnice

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

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

XML w bazach danych i bezpieczeństwie

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

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

MS Word Długi dokument. Praca z długim dokumentem. Kinga Sorkowska

Zadaniem tego laboratorium będzie zaznajomienie się z podstawowymi możliwościami kompozycji strony i grafiki

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

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

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

Gatesms.eu Mobilne Rozwiązania dla biznesu

Przykładowy dokument XML

Aplikacje internetowe

Odnośniki jeszcze do niedawna odróżniały strony WWW od wszystkich innych dokumentów elektronicznych. Możliwość deklarowania odnośników do innych

DTD - encje ogólne i parametryczne, przestrzenie nazw

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

11.3 Definiowanie granic obszaru przeznaczonego do kreskowania

XML i nowoczesne technologie zarządzania treścią

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŚLĄSKIEGO

ROZPORZĄDZENIE MINISTRA SPRAW WEWNĘTRZNYCH I ADMINISTRACJI [1]) z dnia r.

Nowe funkcje w programie Symfonia Mała Księgowość

PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ. Opis działania raportów w ClearQuest

XML w bazach danych i bezpieczeństwie

Bazy danych dokumentów XML wykład 3 modyfikacja dokumentów

XQuery. sobota, 17 grudnia 11

Tworzenie szablonów użytkownika

Atrybuty bloki z atrybutami, wyciągi atrybutów.

Kaskadowe arkusze stylów (CSS)

C++ Przeładowanie operatorów i wzorce w klasach

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.

Witryny i aplikacje internetowe

Podstawy (X)HTML i CSS

Oracle PL/SQL. Paweł Rajba.

Ćwiczenia laboratoryjne nr 8 Podstawy języka XML.

Transkrypt:

Podstawy XPATH Służy do wybierania/wyszukiwania fragmentów dokumentu XML. Przypomina trochę ścieżki w systemie operacyjnym. Niech będzie dany dokument XML: <?xml version="1.0" encoding="utf-8"?> <rysunek> <kwadrat id= 1 > <kolor value= red /> </kwadrat> <grupa id= 2 > <kolo id= 4 > <kolor value= green /> </kolo> <kwadrat id= 5 > <kolor><red>5</red><green>100</green><blue>50</blue></kolor> </kwadrat> <grupa id= 3 /> </grupa> </rysunek> Przykładowe zapytania: /rysunek/kwadrat odnosi się do wszystkich elementów kwadrat zagnieżdżonych bezpośrednio pod elementem rysunek, który jest głównym elementem dokumentu. Na powyższym przykładzie odnosi się do kwadratu o id=1. /rysunek//kwadrat - odnosi się do wszystkich elementów kwadrat zagnieżdżonych pod elementem rysunek, który jest głównym elementem dokumentu. Kwadrat nie musi jednak być dzieckiem rysunku. Na powyższym przykładzie odnosi się do kwadratów o id=1 i o id=5. //grupa/kwadrat odnosi się do wszystkich kwadratów, które są dziećmi jakiejś grupy, która nie musi być korzeniem dokumentu. Na powyższym przykładzie odnosi się do kwadratu o id=5. //red/../../* - odnosi się do wszystkich elementów, które zawierają jakiś element, który zawiera element red. Tutaj odnosi się do kwadratu o id=5. //grupa/@id odnosi się do wartości atrybutu id wszystkich elementów grupa. Na powyższym przykładzie odnosi się do wartości 2 i 3. //grupa/kwadrat[@id] odnosi się do wszystkich kwadratów, będących bezpośrednimi potomkami elementu grupa i posiadającymi atrybut id. //kwadrat[@id='1'] odnosi się do kwadratu o wartości atrybutu id równej 1. //kolor[red='1'] odnosi się do elementu kolor o podelemencie red o wartości 1. //grupa[@id='2']/*[@value] wszystkie elementy posiadające atrybut value, będące bezpośrednimi potomkami grupy o id=2. //grupa[@id='2']/*/position() - numery kolejnych węzłów będących bezpośrednimi potomkami grupy o id=2. //grupa[@id='2']/*/position() div 3 - numery kolejnych węzłów będących bezpośrednimi potomkami grupy o id=2 podzielone przez 3. //grupa[@id='2']/*/position() +1 - numery kolejnych węzłów będących bezpośrednimi potomkami grupy o id=2 zwiększone o 3. //grupa/*[position()=last()] - ostatni element zagnieżdżony w jakiejś grupie. //grupa/*[last()] - skrót powyższego //grupa/*[1] pierwszy element zagnieżdżony w jakiejś grupie //kolor/red/text() - tekst elementu red, który jest bezpośrednim potomkiem dowolnego elementu kolor. //grupa[node()] - każda grupa która zawiera węzeł //grupa[not(node())] - każda grupa, która nie zawiera węzła. //red/transform(text(),'123','456') odczytanie tekstu w każdym elemencie 'red' i zamiana każdej jedynki na czwórkę, każdej dwójki na piątkę i każdej trójki na szóstkę. //grupa //kwadrat dowolna grupa, bądź dowolny kwadrat kolo[@id='4']/kolor/@value wartość atrybutu value elementu kolor, który jest bezpośrednim potomkiem elementu koło, który znajduje się w 'aktualnym' węźle (tzw. względny adres patrz XSLT).

Podstawy XSLT Przykładowy dokument XSLT. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="rysunek"> <html> <body> </body> </html> <xsl:template match="kwadrat[kolor[@value]]"> <li>kwadrat w kolorze <xsl:value-of select="kolor/@value"/> <xsl:template match="kwadrat[kolor[not(@value)]]"> <li>kwadrat w kolorze r: <xsl:value-of select="kolor/red/text()"/>, g: <xsl:value-of select="kolor/green/text()"/>, b: <xsl:value-of select="kolor/red/text()"/> <!--dla koła tak samo jak dla kwadratu--> </xsl:stylesheet> W wyniku transformacji otrzymamy: 2. grupa figur, a w niej: 3. grupa figur, a w niej: Znacznik <xsl:apply-templates> posiada dwa atrybuty: select i mode. select jego treścią jest wyrażenie XPATH, które musi być spełnione przez elementy, do których będą dopasowywane wzorce (zdefiniowane przez <xsl:template>. Przykładowo, jeżeli zmodyfikowalibyśmy wzorzec dotyczący grup na: <xsl:apply-templates select= kwadrat[kolor[red]] /> to z grupy zostaną wyświetlone tylko kwadratu, które posiadają podelement kolor, który posiada podelement red. mode jego treścią jest identyfikator trybu pracy mechanizmu dopasowującego. Pozwala on określić które wzorce mają być w ogóle używane. Przykładowo, jeżeli zmodyfikowalibyśmy wzorzec dotyczący grup na:

<xsl:apply-templates mode="grp"/> To żaden z dotychczasowo zdefiniowanych wzorców by się nie dopasował. Działałyby tylko wzorce, którym również zdefiniowano mode="grp", np.: <xsl:template match="kolo" mode="grp1">. Znacznik <xsl:number> służy do automatycznego wstawiania numerów elementów w dokumencie wyjściowym. Posiada między innymi dwa atrybuty count i level. Count to wyrażenie XPATH, które określa jakie elementy mają być liczone. Level przyjmuje wartość single, multiple albo any (jego znaczenie zostanie opisane później). Jego działanie jest następujące: 1. Znajdź pierwszy element, który spełnia wyrażenie count i jest albo przodkiem aktualnego elementu, albo aktualnym elementem. 2. Policz ile takich elementów jest wcześniej w tej samej gałęzi, dodaj 1 i wypisz wynik. Jeżeli atrybut level jest równy multiple to tworzone są osobne liczniki dla dowolnego poziomu rodzica. Przydaje się np. do wielopoziomowego numerowania. Any liczy wszystkich przodków i wszystkie elementy przed aktualnym. Przykład 1. Jeżeli zmodyfikowalibyśmy wzorzec dotyczący grup na: <li>(<xsl:number count="grupa" level="single"/>) grupa figur, a w niej: 3. (1) grupa figur, a w niej: Przykład 2. Jeżeli zmodyfikowalibyśmy wzorzec dotyczący grup na: <li>(<xsl:number count="grupa" level="multiple"/>) grupa figur, a w niej: 3. (1.1) grupa figur, a w niej: Przykład 3. Jeżeli zmodyfikowalibyśmy wzorzec dotyczący grup na: <li>(<xsl:number count="grupa" level="any"/>) grupa figur, a w niej:

3. (2) grupa figur, a w niej: Znacznik <xsl:for-each> pozwala na proceduralne definiowanie reguł transformacji w sposób podobny jak <xsl:applytemplates> i <xsl:template>. Pomimo większej łatwości używania jest jednak bardziej ograniczony jeżeli chodzi o możliwości. <xsl:for-each> generuje zagnieżdżoną treść dla każdego elementu zwróconego przez zapytanie XPATH podane w atrybucie select. Przykład. Jeżeli zmodyfikowalibyśmy wzorzec dotyczący rysunku na: <xsl:template match="rysunek"> <html> <body> <xsl:for-each select="*"> <li> Element o id <xsl:value-of select="@id"/> </body> </html> 1. element o id 1 2. element o id 2 Czasami zachodzi konieczność wygenerowania wartości atrybutu. Można wówczas zastosować jedno z dwóch rozwiązań: Rozwiązanie 1. Dłuższe, ale o potencjalnie większych możliwościach. <xsl:for-each select="kwadrat"> <a> <xsl:attribute name="href"> #<xsl:value-of select="@id"/> </xsl:attribute> link </a> Rozwiązanie 2. Krótsze, o mniejszych możliwościach. <xsl:for-each select="kwadrat"> <a href="#{@id}"> link </a> Definiowanie zmiennej. Za pomocą polecenia <xsl:variable> można zdefiniować zmienną. Zmienna może być globalna (definiujemy ją wtedy niejako równolegle z wzorcami) albo lokalna, definiowana wewnątrz wzorca i tylko wewnątrz tego wzorca widoczna. Zmienne XSL się tylko definiuje (nie można zmieniać później ich wartości). Przykładowe definicje zmiennych:

<xsl:variable name="zm1" select="jakis XPATH"/> - wartością zmiennej zm1 jest wynik zapytania XPATH <xsl:variable name="zm2">123</xsl:variable> - wartością zmiennej zm2 jest 123 Zmienne można wykorzystywać w wyrażeniach XPATH, np.: <xsl:value-of select= *[@id=$zm2]> - znajdź element o id równym wartości zmiennej zm2 <xsl:copy-of select="$zm1" /> - wstaw wartość zmiennej zm1.