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

Podobne dokumenty
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.

Języki XPath i XQuery

Języki XPath i XQuery

Języki XPath i XQuery

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

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

XML extensible Markup Language 7

XQuery. sobota, 17 grudnia 11

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 Path Language (XPath)

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

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

Cechy języka XQUERY. o na wejściu dokument lub fragment względnie kolekcja dokumentów lub fragmentów o na wyjściu dokument lub fragment.

Przykładowy dokument XML

Przykładowy dokument XML

Podstawy programowania skrót z wykładów:

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

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Model semistrukturalny

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

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Powłoka bash. Kurs systemu Unix 1

Język XML Query. Czym jest XML Query? Po co XML Query? Tomasz Traczyk. Czym jest XML Query? Wprowadzenie do składni języka.

Prezentacja i transformacja

Testowanie i walidacja oprogramowania

System operacyjny Linux

Wykład 2 Składnia języka C# (cz. 1)

LibreOffice Calc VBA

Podstawy JavaScript ćwiczenia

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

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Zaawansowane aplikacje WWW - laboratorium

Algorytmy i struktury danych

WYKŁAD 3 XML DOM XML DOCUMENT OBJECT MODEL CZĘŚĆ 1

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

Instrukcja SO powłoka BASH i skrypty powłoki Istotne jest zrozumienie działania narzędzia history powłoki BASH. Każde polecenie wprowadzone i

PODSTAWY BAZ DANYCH 13. PL/SQL

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

Cw.12 JAVAScript w dokumentach HTML

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

4. Funkcje. Przykłady

Pliki. Operacje na plikach w Pascalu

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

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

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Prezentacja i transformacja

Wprowadzenie do baz danych

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

Bloki anonimowe w PL/SQL

Właściwości i metody obiektu Comment Właściwości

Microsoft SQL Server Podstawy T-SQL

Informatyka 1. Przetwarzanie tekstów

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Wysokość drzewa Głębokość węzła

Spis treści. Przedmowa

Drzewa DOM. Maciej Zakrzewicz.

Systemy GIS Tworzenie zapytań w bazach danych

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

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Bazy Danych i Usługi Sieciowe

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Pakiet XML Czym jest i z czym się je?

Podstawowe części projektu w Javie

Definicje wyższego poziomu

KOTLIN. Język programowania dla Androida

Algorytmika i Programowanie VBA 1 - podstawy

Dlaczego PHP? - zalety

Test przykładowy 2 PAI WSB Wrocław /06/2018

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Pracownia Komputerowa wykład III

Wstęp do programowania. Różne różności

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Pętla for. Wynik działania programu:

Platformy Programistyczne Podstawy języka Java

Wprowadzenie do technologii XML

Zaawansowany kurs języka Python

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

XML i nowoczesne technologie zarządzania treścią 2007/08

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Relacyjne bazy danych a XML

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Zapis algorytmów: schematy blokowe i pseudokod 1

Podstawy programowania w Pythonie

XML extensible Markup Language 6

Rys.2.1. Drzewo modelu DOM [1]

Teoretyczne podstawy informatyki

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie obiektowe

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

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

Język SQL. Rozdział 2. Proste zapytania

- wszystkie elementy - wszystkie elementy

Transkrypt:

Plan Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 03 T. Romańczukiewicz Jagiellonian University 2009/2010

Plan Plan 1 XPath 2 XQuery 3 Podsumowanie

Plan XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie 1 XPath Wstęp Węzły, wyrażenie i typy Działania i instrukcje Osie 2 XQuery 3 Podsumowanie

XPath XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie XPath XPath (ang. XML Path Language, w wolnym tłumaczeniu Język Ścieżek XML, Język Ścieżek Rozszerzalnego Języka Znaczników) język służacy do adresowania części dokumentu XML. XPath został oryginalnie zaprojektowany dla XSLT i XPointer, ale znajduje zastosowanie także w DOM oraz językach bazujacych na XML, np. XQuery, XUL. XPath pozwala na definiowanie części dokumentu XML XPath pozwala na nawigowanie w dokumencie XML tak jak nawiguje się w strukturze katalogów XPath zawiera bibliotekę standardowych funkcji XPath jest głównym elementem XSLT XPath jest rekomendowane przez W3C

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Wyrażenia Wyrażenia służa do wybierania węzłów i zbiorów w dokumentach XML. Wyrażenia sa bardzo podobne do wyrażeń stosowanych w tradycyjnych systemach komputerowych /Catalog/Artist/Album, /Catalog/Artist[2]/Album XPath zawiera około 100 wbudowanych funkcji. Pozwalaja one na operację na ciagach znakowych, wartościach liczbowych, obsługuja czas i daty, typy Boolen itp. fn:day-from-datetime(datetime), fn:upper-case(string), fn:ceiling(num), fn:true () Bez znajomości XPath trudno byłoby tworzyć dokumenty XSLT

Przykład XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Listing 1: Przykład1.js (uproszczony) 1 function loadxmldoc(dname) 2 { 3 xhttp=new XMLHttpRequest(); 4 xhttp.open("get",dname,false); 5 xhttp.send(""); 6 return xhttp.responsexml; 7 } 8... 9 xml=loadxmldoc("catalog.xml"); 10 path="/catalog/artist/album" 11 12 var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null); 13 var result=nodes.iteratenext(); 14 15 while (result) 16 { 17 document.write(result.childnodes[0].nodevalue); 18 document.write("<br />"); 19 result=nodes.iteratenext(); 20 }

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Dokument jako drzewo. Uwzględnianie przestrzeni nazw. Możliwość uwzględniania schematu (w wersji 2.0). Rozwinięte sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj acych węzłów tekstowych. Atrybut nie jest dzieckiem elementu. Korzeń lub inaczej węzeł jest osobnym węzłem, różnym od elementu głównego.

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Rodzaje węzłów: węzeł dokumentu (korzeń), element atrybut, węzeł tekstowy, instrukcja przetwarzania, komentarz, węzeł przestrzeni nazw. brak sekcji CDATA, brak encji i referencji do encji. Elementy: węzły wartości atomowe

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Podstawowe wyrażenia nodename Wybiera wszystkie dzieci węzła o podanej nazwie - ścieżka względna / Wybiera korzeń - ścieżka bezwzględna // Wybiera węzły w dokumencie, nie ważne gdzie się one znajduja. Wybiera aktualny węzeł.. Wybiera węzeł rodzica @ Wybiera atrybuty Przykłady: bookstore Wybiera wszystkie węzły w elemencie bookstore /bookstore Wybiera główny element bookstore Jeśli ścieżka zaczyna się od ukośnika (/) to zawsze musi reprezentować element główny bookstore/book Wybiera wszystkie elementy book, które sa dziećmi bookstore //book Wybiera wszelkie elementy o nazwie book bez względu na to gdzie się znajduja bookstore//book Wybiera wszelkie elementy o nazwie book bez względu na to gdzie się znajduja o ile sa one umieszczone w elemencie bookstore //@lang Wybiera wszystkie atrybuty lang

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Podstawowe wyrażenia nodename Wybiera wszystkie dzieci węzła o podanej nazwie - ścieżka względna / Wybiera korzeń - ścieżka bezwzględna // Wybiera węzły w dokumencie, nie ważne gdzie się one znajduja. Wybiera aktualny węzeł.. Wybiera węzeł rodzica @ Wybiera atrybuty Przykłady: bookstore Wybiera wszystkie węzły w elemencie bookstore /bookstore Wybiera główny element bookstore Jeśli ścieżka zaczyna się od ukośnika (/) to zawsze musi reprezentować element główny bookstore/book Wybiera wszystkie elementy book, które sa dziećmi bookstore //book Wybiera wszelkie elementy o nazwie book bez względu na to gdzie się znajduja bookstore//book Wybiera wszelkie elementy o nazwie book bez względu na to gdzie się znajduja o ile sa one umieszczone w elemencie bookstore //@lang Wybiera wszystkie atrybuty lang

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie /bookstore/book[1] Wybiera pierwszy element book, który jest dzieckiem elementu głównego bookstore Uwaga na IE5! /bookstore/book[last()] Wybiera ostatni element book, który jest dzieckiem elementu głównego bookstore /bookstore/book[last()-1] Element przedostatni /bookstore/book[position()<3] Pierwsze dwa elementy //title[@lang] Wybiera wszelkie elementy title, które posiadaja element o nazwie lang //title[@lang= eng ] Wybiera wszelkie elementy title, które posiadaja element o nazwie lang, którego wartościa jest eng /bookstore/book[price>35.00] Wybiera elementy book, które posiadaja element price o wartości większej niż 35.00 /bookstore/book[price>35.00]/title Wybiera elementy title spośród tych elementów /bookstore/book, które posiadaja element price o wartości większej niż 35.00 Wieloznaczniki (wildcards)path Expression Result * Znaczy każdy element @* Każdy atrybut node() Każdy rodzaj węzła

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie /bookstore/* Wszystkie podelementy bookstore //* Wszystkie elementy dokumentu //title[@*] Wszystkie elemety title, które posiadaja jakikolwiek argument Wybór kilku ścieżek na raz poprzez użycie operatora //book/title //book/price Wybiera elementy title i price //title //price Wybiera elementy title i price z całego dokumentu /bookstore/book/title //price...

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Typy Typy pierwotne XML Schema. Dodatkowo: xs:untyped xs:untypedatomic xs:anyatomictype xs:daytimeduration xs:yearmonthduration Możliwość używania typów zdefiniowanych w schemacie (prostych i złożonych), a także innych typów wyprowadzonych (nie zawsze dostępne) Sekwencje Wartości w XPath 2.0 sekwencje. Elementy (items) sekwencji: węzły (z drzew dokumentów) wartości atomowe Element równoważny jest jednoelementowej sekwencji "Hello" ("Hello") Zagnieżdżone sekwencje sa spłaszczane - zamieniane w jedna sekwencję (("Hello", 2), 5, (3.14, 2.78))=("Hello", 2, 5, 3.14, 2.78)

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Effective Boolean Value Zamiana sekwencji na wartość logiczna (np w C: jeśli int był równy 0 to fałsz pozostałe wartości prawda) EBV Pusta sekwencja sekwencja z węzłem na pierwszej pozycji pojedyncza wartość boolowska pojedynczy pusty napis pojedynczy niepusty napis pojedyncza liczba równa 0 lub NaN inna pojedyncza liczba inna wartość fałsz prawda wartość fałsz prawda fałsz prawda bład typu

Atomizacja XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Atomizacja - operacja majaca na celu zastapienie dowolnej sekwencja jako sekwencji wartości prostych (nie zawsze wykonalna) Atomizacja wartość atomowa węzeł o (znanym) typie atomowym węzeł typu lista węzeł nieznanego typu prostego, z mieszana zawartościa lub typu xs:untypedatomic lub xs:anysimpletype element o zawartości elementowej ta wartość wartość węzła sekwencja elementów listy zawartość tekstowa jako jeden atom bład typu

Zmienne XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Zmienne w XPath Napisy: "Hello world", "12.3", 1726.2376 Liczby: 3.1415, 137.23 Odwołania do zmiennych: $x, $napis Konstrukcje, które wprowadzaja zmienne np. for, some, every Rzutowanie typów xs:date("2001-08-25") - typy np. z XSL xs:float("nan") adresy:kod-pocztowy("48-200") (o ile schemat dostepny) string(//obiekt[4]) Operator cast as: "2001-08-25"cast as xs:date

Operatory XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Operatory Arytmetyka: + - *div idiv mod na datach i duration: + i - zgodnie z typami. Sekwencje wezłów (w 1.0 zbiory wezłów ): union intersect except nie-wezły w sekwencjach bład typu, wynik: sekwencja bez powtórzeń, porzadek dokumentu Porównania atomowe (XPath 2.0): eq ne lt le gt ge argumenty poddawane sa atomizacji jeśli któryś z argumentów jest sekwencja pusta to wynik też jest sekwencja pusta typy atomowe intuicyjnie normalne porównanie, jeśli sekwencje wielo-elementowe to bład

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Porównania ogólne Porównania ogólne Porównanie odpowiednich elementów sekcji: =!= < <= > >= prawda jeśli istnieje taka para z sekwencji prawej i lewej, że relacja jest dla nich spełniona! Przykłady (1,2) = (1,2) = true (1,2) = (2,3) = true (1,2)!= (1,2) = true ()!= () = false () = () = false wnioski: Równość nie jest przechodnia Nierówność nie jest zaprzeczeniem równości

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Instrukcje warunkowe W XPath 2.0 można używać także instrukcji sterujacych takich jak instrukcje warunkowe: if 1 if WARUNEK 2 then WYNIK1 3 else WYNIK2 Warunek jest spełniony jeśli Effective Boolean Value ma wartość true Obliczana jest tylko jedna gałaź Przykład 1 if informacje/cena 2 then 3 if informacje/cena >= 1000 4 then Przesylka wartosciowa 5 else Przesylka zwykla 6 else Brak danych

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Pętla po sekwencji 1 for $ZMIENNA in SEKWENCJA 2 return WYNIK Zmiennej ZMIENNA przypisywane kolejne wartości z SEKWENCJI, WYNIK obliczany jest na podstawie wartości ZMIENNEJ, Wynik jest sekwencja wyników na poszczególnych wartościach Przykłady 1 for $i in (1 to 10) 2 return $i * $i 3 for $o in //obiekt 4 return concat( Nazwa obiektu:, $o/@nazwa)

Kwalifikatory XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie W XPath 2.0 można używać również kwalifikatorów every ( ) i some ( ) 1 some $ZMIENNA in SEKWENCJA 2 satisfies WYNIK 3 4 every $ZMIENNA in SEKWENCJA 5 satisfies WYNIK Sprawdzany jest warunek Effective Boolean Value Kolejność przechodzenie po sekwencji jest dowolna Przykłady 1 some $i in (1 to 10) satisfies $i > 7 2 every $o in //obiekt satisfies $o/@nazwa

Osie XPath XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Ścieżki moga być bezwzględne: /krok1/krok2/ lub względne krk1/krok2. Ogólnie można kroki definiować przy użyciu osi czyli kierunków w drzewie dokumentu: os::test-wezlow [predykat1][predykat2]... oś kierunek w drzewie dokumentu, test-węzłów wybór węzłów po rodzaju, typie, nazwie, predykat opcjonalny dodatkowy filtr Przykład: /descendant::dzial[attribute::id = ksi ]/child::pracownik[1]/child::text()

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie child descendant parent ancestor following-sibling preceding-sibling following preceding attribute namespace self descendand-or-self ancestor-or-self

XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Testy węzłów i Predykaty Testy węzłów moga wybierać węzły ze względu na ich rodzaj, poprzez odpowiednie funckje: node(), text(), comment(), element(), attribute() lub poprzez nazwę węzła: Album, Artist/*, Artist/*/Year Predykaty [...] Obliczane sa dla każdego węzła Każdy predykat filtruje sekwencje można używać poza ścieżkami: 1 /child::osoby/child::osoba[child::imie = Tomasz ] 2 child::osoba[child::imie = Tomasz ]/child::nazwisko 3 //obiekt[attribute::nazwa][3] 4 (1 to 10)[. mod 2 = 0]

Skróty XPath XQuery Podsumowanie Wstęp Węzły... Działania i instrukcje Osie Niektóre wyrażenia można skrócić: oś child można pominać zamiast attribute można użyć po prostu @. zamiast self::node()... zamiast parent::node(). // zamiast /descendant-or-self::node()/. Ścieżki obliczane sa od lewej do prawej dla każdego węzła z bieżacej sekwencji kolejny krok wraz z predykatami po każdym predykacie cała sekwencja przekazywana jest do kolejnego predykatu

Plan XPath XQuery Podsumowanie 1 XPath 2 XQuery 3 Podsumowanie

XPath XQuery Podsumowanie Język XQuery Język zapytań podobny do SQL, ale zamiast bazy korzysta z XML. Zbudowany na podstawie XPath. Wyciaganie danych z XML Sortowanie, grupowanie,... Zapis wyniku jak w XSLT (XML / HTML / tekst). Konstruowanie nowych węzłów. Definiowanie własnych funkcji.

XPath XQuery Podsumowanie Zastosowania Wyciaganie danych z XML do użytku w serwisach WWW Do generowania raportów Transformowanie danych z XML do XHTML Przeszukiwanie dokumentów sieciowych Podstawowe możliwości Otwieranie pliku doc("books.xml") Można poruszać się po pliku xml jak w przypadku XPath doc("books.xml")/bookstore/book[price<30]

FLWOR XPath XQuery Podsumowanie FLWOR Skrót od "For, Let, Where, Order by, Return". 1 for $x in doc("books.xml")/bookstore/book 2 where $x/price>30 3 order by $x/title 4 return $x/title for wybiera wszystkie elementy i wynik zapisuje w zmiennej $x where wybiera te elementy spośród $x, które posiadaja element price o wartości większej niż 30 order określa sortowanie wyniku return Określa co tak naprawdę zostanie zwrócone let użyte zamiast for wybiera wszystkie elementy, ale w wyniku nic więcej się nie powtarza

for vs let XPath XQuery Podsumowanie 1 for $x in (1 to 3) 2 return <test>{$x}</test> 3 4 <test>1</test> 5 <test>2</test> 6 <test>3</test> 1 let $x in (1 to 3) 2 return <test>{$x}</test> 3 4 <test>1 2 3</test>

Funkcje XPath XQuery Podsumowanie 1 declare function prefix:function_name($parameter AS datatype) 2 AS returndatatype 3 { 4...function code here... 5 } 6 7... 8 9 <name>{uppercase($booktitle)}</name> 10 doc("books.xml")/bookstore/book[substring(title,1,5)= Harry ] 11 let $name := (substring($booktitle,1,4))

Plan XPath XQuery Podsumowanie 1 XPath 2 XQuery 3 Podsumowanie

XPath XQuery Podsumowanie XPath jest to język, który Pozwala na posługiwanie się dokumentem XML jak drzewem katalogowym Posiada możliwość korzystania ze zmiennych, atomizacji, obliczeń, sekwencji, kwalifikatorów, funkcji Posiada możliwość definiowania osi, testów i predykatów Jest używany w innych zastosowaniach XQuery, XSLT, DOM... XQuery jest to język, który Jest rozszerzeniem XPath Posiada zapytania "bazodanowe", podobnie jak SQL Można definiować dodatkowo funkcje