Języki XPath i XQuery

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

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

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.

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

XML Path Language (XPath)

XML extensible Markup Language 7

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

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

XQuery. sobota, 17 grudnia 11

System operacyjny Linux

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

Programowanie obiektowe

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

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Przykładowy dokument XML

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.

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

ForPascal Interpreter języka Pascal

Zaawansowane aplikacje WWW - laboratorium

Definicje wyższego poziomu

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

Podstawy JavaScript ćwiczenia

Przykładowy dokument XML

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

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

Bash - wprowadzenie. Bash - wprowadzenie 1/39

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

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

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

XML Schema. Typy proste, wyprowadzanie typów, modularyzacja schematu. Patryk Czarnik. Instytut Informatyki UW

KOTLIN. Język programowania dla Androida

Powłoka bash. Kurs systemu Unix 1

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

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

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

Oracle PL/SQL. Paweł Rajba.

Model semistrukturalny

XML. 6.6 XPath. XPath is a syntax used for selecting parts of an XML document

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

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie.

Pakiety podprogramów Dynamiczny SQL

PODSTAWY BAZ DANYCH 13. PL/SQL

Wprowadzenie do technologii XML

Informatyka (10) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego i Mostów p. 4 Hydro

JPS. cwiczenia 3. Stosy, proste zapytania. Michał Lentner Polsko-Japońska Wyższa Szkoła Technik Komputerowych

Język PL/SQL Procedury i funkcje składowane

Język SQL. Rozdział 2. Proste zapytania

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

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

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

Procedury i funkcje składowane

XML i nowoczesne technologie zarządzania treścią

Język programowania: Lista instrukcji (IL Instruction List)

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

XML w bazach danych i bezpieczeństwie

XML Schema. Motywacja, struktura schematu, typy złożone. Patryk Czarnik. Instytut Informatyki UW

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Technologie baz danych

Testowanie i walidacja oprogramowania

Oracle PL/SQL. Paweł Rajba.

JAVA W SUPER EXPRESOWEJ PIGUŁCE

- wszystkie elementy - wszystkie elementy

Podstawy programowania. Podstawy C# Tablice

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Bloki anonimowe w PL/SQL

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Języki skryptowe w programie Plans

Wprowadzenie do baz danych

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

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

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

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

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

Rola języka XML narzędziem

Języki i metody programowania

Tworzenie raportów XML Publisher przy użyciu Data Templates

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

Podstawy programowania w Pythonie

Cw.12 JAVAScript w dokumentach HTML

Wprowadzenie do XML schema

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Pracownia Komputerowa wykład III

Delphi Laboratorium 3

Prezentacja i transformacja

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

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

LibreOffice Calc VBA

XML w bazach danych i bezpieczeństwie

Prezentacja i transformacja

Visual Basic for Application (VBA)

Materiały do laboratorium MS ACCESS BASIC

Transkrypt:

Języki XPath i XQuery Patryk Czarnik Instytut Informatyki UW XML i nowoczesne technologie zarzadzania treścia 2008/09 Patryk Czarnik 07 XPath XML 2008/09 1 / 1

XPath i XQuery Wprowadzenie Status Języki zapytań nad dokumentami XML wygodny wybór określonych węzłów dokumentu, intuicyjna składnia ( ścieżki jak w drzewie katalogów), arytmetyka, porównania, bogaty zestaw funkcji. XPath stosowany w ramach innych standardów XSLT XML Schema XPointer XQuery samodzielny język XML-owe bazy danych tradycyjne bazy danych ze wsparciem dla XML... Patryk Czarnik 07 XPath XML 2008/09 4 / 1

XPath i XQuery Wprowadzenie Status Języki zapytań nad dokumentami XML wygodny wybór określonych węzłów dokumentu, intuicyjna składnia ( ścieżki jak w drzewie katalogów), arytmetyka, porównania, bogaty zestaw funkcji. XPath stosowany w ramach innych standardów XSLT XML Schema XPointer XQuery samodzielny język XML-owe bazy danych tradycyjne bazy danych ze wsparciem dla XML... Patryk Czarnik 07 XPath XML 2008/09 4 / 1

Wprowadzenie Status Ścieżki typowe zastosowanie XPath /firma/oddział/pracownik //pracownik /firma/oddział[nazwa = Księgowość ] /firma/oddział[@id = ksi ]/pracownik[3] nazwisko../pracownik[stanowisko = kierownik ]/nazwisko Patryk Czarnik 07 XPath XML 2008/09 5 / 1

Wprowadzenie Status Ścieżki typowe zastosowanie XPath /firma/oddział/pracownik //pracownik /firma/oddział[nazwa = Księgowość ] /firma/oddział[@id = ksi ]/pracownik[3] nazwisko../pracownik[stanowisko = kierownik ]/nazwisko Patryk Czarnik 07 XPath XML 2008/09 5 / 1

Wprowadzenie Status Ścieżki typowe zastosowanie XPath /firma/oddział/pracownik //pracownik /firma/oddział[nazwa = Księgowość ] /firma/oddział[@id = ksi ]/pracownik[3] nazwisko../pracownik[stanowisko = kierownik ]/nazwisko Patryk Czarnik 07 XPath XML 2008/09 5 / 1

Wprowadzenie Status Ścieżki typowe zastosowanie XPath /firma/oddział/pracownik //pracownik /firma/oddział[nazwa = Księgowość ] /firma/oddział[@id = ksi ]/pracownik[3] nazwisko../pracownik[stanowisko = kierownik ]/nazwisko Patryk Czarnik 07 XPath XML 2008/09 5 / 1

Wprowadzenie Status Ścieżki typowe zastosowanie XPath /firma/oddział/pracownik //pracownik /firma/oddział[nazwa = Księgowość ] /firma/oddział[@id = ksi ]/pracownik[3] nazwisko../pracownik[stanowisko = kierownik ]/nazwisko Patryk Czarnik 07 XPath XML 2008/09 5 / 1

Wprowadzenie Status Ścieżki typowe zastosowanie XPath /firma/oddział/pracownik //pracownik /firma/oddział[nazwa = Księgowość ] /firma/oddział[@id = ksi ]/pracownik[3] nazwisko../pracownik[stanowisko = kierownik ]/nazwisko Patryk Czarnik 07 XPath XML 2008/09 5 / 1

XPath status Wprowadzenie Status XPath 1.0 (rekomendacja, listopad 1999) używany m.in. w XSLT 1.0, XML Schema, XPointer. XPath 2.0 (kilka rekomendacji, styczeń 2007): XML Path Language (XPath) 2.0, XQuery 1.0 and XPath 2.0 Data Model, XQuery 1.0 and XPath 2.0 Functions and Operators, XQuery 1.0 and XPath 2.0 Formal Semantics, używany w XSLT 2.0, mocno zwiazany z XQuery 1.0. Patryk Czarnik 07 XPath XML 2008/09 6 / 1

XPath status Wprowadzenie Status XPath 1.0 (rekomendacja, listopad 1999) używany m.in. w XSLT 1.0, XML Schema, XPointer. XPath 2.0 (kilka rekomendacji, styczeń 2007): XML Path Language (XPath) 2.0, XQuery 1.0 and XPath 2.0 Data Model, XQuery 1.0 and XPath 2.0 Functions and Operators, XQuery 1.0 and XPath 2.0 Formal Semantics, używany w XSLT 2.0, mocno zwiazany z XQuery 1.0. Patryk Czarnik 07 XPath XML 2008/09 6 / 1

Wprowadzenie Model danych XPath Model danych XPath i XQuery Teoretyczna podstawa standardów XPath, XSLT i XQuery. Abstrakcyjna ( po wczytaniu ) postać dokumentu XML. Typy danych oraz rzutowania między nimi. Różny w różnych wersjach XPath: 1.0 4 typy danych, zbiory węzłów, 2.0 (oraz XQuery 1.0) typy proste XML Schema, sekwencje węzłów i wartości prostych. Patryk Czarnik 07 XPath XML 2008/09 7 / 1

Wprowadzenie Model danych XPath Model danych XPath i XQuery Teoretyczna podstawa standardów XPath, XSLT i XQuery. Abstrakcyjna ( po wczytaniu ) postać dokumentu XML. Typy danych oraz rzutowania między nimi. Różny w różnych wersjach XPath: 1.0 4 typy danych, zbiory węzłów, 2.0 (oraz XQuery 1.0) typy proste XML Schema, sekwencje węzłów i wartości prostych. Patryk Czarnik 07 XPath XML 2008/09 7 / 1

Wprowadzenie Model danych XPath Dokument XML w modelu XPath Drzewo: korzeń drzewa węzeł dokumentu (nie element główny), dzieci elementu zawartość (nie atrybuty). Uwzględnianie przestrzeni nazw. Możliwość uwzględniania schematu (w wersji 2.0). Rozwinięte sekcje CDATA oraz referencje do encji i znaków. Połaczone sasiednie węzły tekstowe. Patryk Czarnik 07 XPath XML 2008/09 8 / 1

Wprowadzenie Rodzaje węzłów w XPath Model danych XPath Rodzaje węzłów: węzeł dokumentu (korzeń), element, atrybut, węzeł tekstowy, instrukcja przetwarzania, komentarz, węzeł przestrzeni nazw. Brak m.in.: sekcji CDATA, encji i referencji do encji. Patryk Czarnik 07 XPath XML 2008/09 9 / 1

Wprowadzenie Rodzaje węzłów w XPath Model danych XPath Rodzaje węzłów: węzeł dokumentu (korzeń), element, atrybut, węzeł tekstowy, instrukcja przetwarzania, komentarz, węzeł przestrzeni nazw. Brak m.in.: sekcji CDATA, encji i referencji do encji. Patryk Czarnik 07 XPath XML 2008/09 9 / 1

Wprowadzenie Model danych XPath Sekwencje Wartości w XPath 2.0 sekwencje. Elementy (items) sekwencji: węzły (z drzew dokumentów), wartości atomowe. Równoważność elementu i jednoelementowej sekwencji: (3.14) = 3.14 Spłaszczanie zagnieżdżonych sekwencji: (3.14, (1, 2, 3), Ala ) = (3.14, 1, 2, 3, Ala ) Patryk Czarnik 07 XPath XML 2008/09 10 / 1

Wprowadzenie Model danych XPath System typów Typy prymitywne 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) o ile przetwarzanie schema aware, nie zawsze dostępne. Patryk Czarnik 07 XPath XML 2008/09 11 / 1

Wprowadzenie Model danych XPath XPath 1.0 różnice w modelu danych Typy danych: boolean, string, number, node set, w XSLT 1.0 dodatkowo: result tree fragment. Brak zbiorów wartości prostych. Zbiory (a nie sekwencje) węzłów. Patryk Czarnik 07 XPath XML 2008/09 13 / 1

Wprowadzenie Model danych XPath Effective Boolean Value Częsta potrzeba traktowania dowolnej wartości jako wartości logicznej. Zasady zamiany: pusta sekwencja fałsz sekwencja z węzłem na pierwszej pozycji prawda pojedyncza wartość boolowska ta sama wartość pojedynczy pusty napis fałsz pojedynczy niepusty napis prawda pojedyncza liczba równa 0 lub NaN fałsz inna pojedyncza liczba prawda inna wartość bład typu Patryk Czarnik 07 XPath XML 2008/09 14 / 1

Atomizacja Wprowadzenie Model danych XPath Operacja służaca traktowaniu dowolnej sekwencji jako sekwencji wartości prostych. Nie zawsze wykonalna (możliwy bład typów). Dla każdego elementu sekwencji: wartość atomowa ta wartość węzeł o znanym typie atomowym wartość węzła węzeł typu lista sekwencja elementów listy węzeł nieznanego typu prostego, zawartość tekstowa z mieszana zawartościa lub jako jeden atom typu xs:untypedatomic lub xs:anysimpletype element o zawartości elementowej bład typu Patryk Czarnik 07 XPath XML 2008/09 15 / 1

Język XPath Od podstaw Literały i zmienne Literały Zmienne napisy: 12.5, "He said, ""I don t like it.""" liczby: 12, 12.5, 1.13e-8 $x referencja do zmiennej x, zmienne wprowadzane konstrukcjami: XPath 2.0 (for, some, every) XQuery (FLWOR, some, every, parametry funkcji) XSLT 1.0 i 2.0 (variable, param) Patryk Czarnik 07 XPath XML 2008/09 17 / 1

Język XPath Od podstaw Literały i zmienne Literały Zmienne napisy: 12.5, "He said, ""I don t like it.""" liczby: 12, 12.5, 1.13e-8 $x referencja do zmiennej x, zmienne wprowadzane konstrukcjami: XPath 2.0 (for, some, every) XQuery (FLWOR, some, every, parametry funkcji) XSLT 1.0 i 2.0 (variable, param) Patryk Czarnik 07 XPath XML 2008/09 17 / 1

Język XPath Od podstaw Rzutowanie typów Konstruktory typów xs:date("2001-08-25") xs:float("nan") adresy:kod-pocztowy("48-200") (o ile schemat dostępny) Operator cast as "2001-08-25" cast as xs:date... Patryk Czarnik 07 XPath XML 2008/09 18 / 1

Język XPath Od podstaw Rzutowanie typów Konstruktory typów xs:date("2001-08-25") xs:float("nan") adresy:kod-pocztowy("48-200") (o ile schemat dostępny) Operator cast as "2001-08-25" cast as xs:date... Patryk Czarnik 07 XPath XML 2008/09 18 / 1

Język XPath Od podstaw Funkcje Wywołania funkcji: fn:concat("abc", "xyz") count(//obiekt/@parzysty) moje:moja_funkcja(12, //jakieś_elementy) 150 standardowych funkcji XPath: w przestrzeni nazw http://www.w3.org/2005/xpath-functions, domyślna przestrzeń nazw dla funkcji. Definiowanie własnych funkcji (zalecane w osobnej przestrzeni nazw): w XQuery, w XSLT (2.0), w środowisku wykonania (np. EXSLT w Xalan). Patryk Czarnik 07 XPath XML 2008/09 19 / 1

Język XPath Od podstaw Funkcje Wywołania funkcji: fn:concat("abc", "xyz") count(//obiekt/@parzysty) moje:moja_funkcja(12, //jakieś_elementy) 150 standardowych funkcji XPath: w przestrzeni nazw http://www.w3.org/2005/xpath-functions, domyślna przestrzeń nazw dla funkcji. Definiowanie własnych funkcji (zalecane w osobnej przestrzeni nazw): w XQuery, w XSLT (2.0), w środowisku wykonania (np. EXSLT w Xalan). Patryk Czarnik 07 XPath XML 2008/09 19 / 1

Język XPath Od podstaw Funkcje Wywołania funkcji: fn:concat("abc", "xyz") count(//obiekt/@parzysty) moje:moja_funkcja(12, //jakieś_elementy) 150 standardowych funkcji XPath: w przestrzeni nazw http://www.w3.org/2005/xpath-functions, domyślna przestrzeń nazw dla funkcji. Definiowanie własnych funkcji (zalecane w osobnej przestrzeni nazw): w XQuery, w XSLT (2.0), w środowisku wykonania (np. EXSLT w Xalan). Patryk Czarnik 07 XPath XML 2008/09 19 / 1

Operatory Język XPath Od podstaw Formalnie 68 operatorów XPath, przeciażona notacja. Arytmetyka: + - * div idiv mod na datach i duration: + i - zgodnie z typami. Sekwencje węzłów (w 1.0 zbiory węzłów ): union intersect except nie-węzły w sekwencjach bład typu, wynik: sekwencja bez powtórzeń, porzadek dokumentu. Wartości logiczne: operatory and or true(), false(), not(_) to funkcje. Patryk Czarnik 07 XPath XML 2008/09 20 / 1

Operatory Język XPath Od podstaw Formalnie 68 operatorów XPath, przeciażona notacja. Arytmetyka: + - * div idiv mod na datach i duration: + i - zgodnie z typami. Sekwencje węzłów (w 1.0 zbiory węzłów ): union intersect except nie-węzły w sekwencjach bład typu, wynik: sekwencja bez powtórzeń, porzadek dokumentu. Wartości logiczne: operatory and or true(), false(), not(_) to funkcje. Patryk Czarnik 07 XPath XML 2008/09 20 / 1

Operatory Język XPath Od podstaw Formalnie 68 operatorów XPath, przeciażona notacja. Arytmetyka: + - * div idiv mod na datach i duration: + i - zgodnie z typami. Sekwencje węzłów (w 1.0 zbiory węzłów ): union intersect except nie-węzły w sekwencjach bład typu, wynik: sekwencja bez powtórzeń, porzadek dokumentu. Wartości logiczne: operatory and or true(), false(), not(_) to funkcje. Patryk Czarnik 07 XPath XML 2008/09 20 / 1

Język XPath Od podstaw Operatory porównania Porównania atomowe eq ne lt le gt ge na wstępie argumenty poddane atomizacji jeden z argumentów sekwencja pusta wynik sekwencja pusta jeden z argumentów sekwencja wieloelementowa bład typów, typy atomowe intuicyjnie "normalne" porównanie, o ile typy pozwalaja. Porównania ogólne =!= < <= > >= stosowane do sekwencji, istnieje para elementów z lewej i prawej sekwencji, dla której zachodzi odpowiednie porównanie atomowe, dla sekwencji jednoelementowych zgodne z atomowymi. Patryk Czarnik 07 XPath XML 2008/09 21 / 1

Język XPath Od podstaw Operatory porównania Porównania atomowe eq ne lt le gt ge na wstępie argumenty poddane atomizacji jeden z argumentów sekwencja pusta wynik sekwencja pusta jeden z argumentów sekwencja wieloelementowa bład typów, typy atomowe intuicyjnie "normalne" porównanie, o ile typy pozwalaja. Porównania ogólne =!= < <= > >= stosowane do sekwencji, istnieje para elementów z lewej i prawej sekwencji, dla której zachodzi odpowiednie porównanie atomowe, dla sekwencji jednoelementowych zgodne z atomowymi. Patryk Czarnik 07 XPath XML 2008/09 21 / 1

Język XPath Od podstaw Porównania ogólne ciekawostki (Nie)Równość nie jest (nie)równościa sekwencji: (1, 2) = (2, 3) prawda (1, 2)!= (1, 2) prawda Równość nie jest przechodnia: (1, 2) = (2, 3) prawda (2, 3) = (3, 4) prawda (1, 2) = (3, 4) fałsz X!= Y nie jest równoważne not(x = Y): (1, 2) = (1, 2) prawda (1, 2)!= (1, 2) prawda () = () fałsz ()!= () fałsz Patryk Czarnik 07 XPath XML 2008/09 22 / 1

Język XPath Od podstaw Porównania ogólne ciekawostki (Nie)Równość nie jest (nie)równościa sekwencji: (1, 2) = (2, 3) prawda (1, 2)!= (1, 2) prawda Równość nie jest przechodnia: (1, 2) = (2, 3) prawda (2, 3) = (3, 4) prawda (1, 2) = (3, 4) fałsz X!= Y nie jest równoważne not(x = Y): (1, 2) = (1, 2) prawda (1, 2)!= (1, 2) prawda () = () fałsz ()!= () fałsz Patryk Czarnik 07 XPath XML 2008/09 22 / 1

Język XPath Od podstaw Porównania ogólne ciekawostki (Nie)Równość nie jest (nie)równościa sekwencji: (1, 2) = (2, 3) prawda (1, 2)!= (1, 2) prawda Równość nie jest przechodnia: (1, 2) = (2, 3) prawda (2, 3) = (3, 4) prawda (1, 2) = (3, 4) fałsz X!= Y nie jest równoważne not(x = Y): (1, 2) = (1, 2) prawda (1, 2)!= (1, 2) prawda () = () fałsz ()!= () fałsz Patryk Czarnik 07 XPath XML 2008/09 22 / 1

Język XPath Od podstaw Wyrażenie warunkowe if WARUNEK then WYNIK1 else WYNIK2 Przykład Liczy się Effective Boolean Value. Obliczana tylko jedna gałaź. if informacje/cena then if informacje/cena >= 1000 then Przesyłka wartościowa else Przesyłka zwykła else Brak danych Patryk Czarnik 07 XPath XML 2008/09 23 / 1

Język XPath Od podstaw Pętla po sekwencji for $ZMIENNA in SEKWENCJA return WYNIK ZMIENNEJ przypisywane kolejne wartości z SEKWENCJI, WYNIK obliczany z wybrana wartościa ZMIENNEJ, wynik całości sekwencja wyników częściowych. Przykłady for $i in (1 to 10) return $i * $i for $o in //obiekt return concat( Nazwa obiektu:, $o/@nazwa) Patryk Czarnik 07 XPath XML 2008/09 24 / 1

Język XPath Od podstaw Kwantyfikatory some $ZMIENNA in SEKWENCJA satisfies WARUNEK every $ZMIENNA in SEKWENCJA satisfies WARUNEK Liczy się Effective Boolean Value. Możliwa leniwa ewaluacja. Dowolna kolejność przechodzenia po sekwencji. Przykłady some $i in (1 to 10) satisfies $i > 7 every $o in //obiekt satisfies $o/@nazwa Patryk Czarnik 07 XPath XML 2008/09 25 / 1

Ścieżki w XPath Język XPath Ścieżki Najbardziej charakterystyczny rodzaj wyrażeń, przechodzenie po drzewie dokumentu. Ścieżka bezwzględna: /krok/krok... Ścieżka względna: krok/krok... Krok składnia w pełni rozwinięta: oś::test-węzłów [predykat1] [predykat2]... oś kierunek w drzewie dokumentu, test-węzłów wybór węzłów po rodzaju, typie, nazwie, predykaty opcjonalne, dodatkowo filtrujace węzły. Przykład /descendant::dział[attribute::id = ksi ]/child::pracownik /child::nazwisko/child::text() Patryk Czarnik 07 XPath XML 2008/09 26 / 1

Ścieżki w XPath Język XPath Ścieżki Najbardziej charakterystyczny rodzaj wyrażeń, przechodzenie po drzewie dokumentu. Ścieżka bezwzględna: /krok/krok... Ścieżka względna: krok/krok... Krok składnia w pełni rozwinięta: oś::test-węzłów [predykat1] [predykat2]... oś kierunek w drzewie dokumentu, test-węzłów wybór węzłów po rodzaju, typie, nazwie, predykaty opcjonalne, dodatkowo filtrujace węzły. Przykład /descendant::dział[attribute::id = ksi ]/child::pracownik /child::nazwisko/child::text() Patryk Czarnik 07 XPath XML 2008/09 26 / 1

Ścieżki w XPath Język XPath Ścieżki Najbardziej charakterystyczny rodzaj wyrażeń, przechodzenie po drzewie dokumentu. Ścieżka bezwzględna: /krok/krok... Ścieżka względna: krok/krok... Krok składnia w pełni rozwinięta: oś::test-węzłów [predykat1] [predykat2]... oś kierunek w drzewie dokumentu, test-węzłów wybór węzłów po rodzaju, typie, nazwie, predykaty opcjonalne, dodatkowo filtrujace węzły. Przykład /descendant::dział[attribute::id = ksi ]/child::pracownik /child::nazwisko/child::text() Patryk Czarnik 07 XPath XML 2008/09 26 / 1

Ścieżki w XPath Język XPath Ścieżki Najbardziej charakterystyczny rodzaj wyrażeń, przechodzenie po drzewie dokumentu. Ścieżka bezwzględna: /krok/krok... Ścieżka względna: krok/krok... Krok składnia w pełni rozwinięta: oś::test-węzłów [predykat1] [predykat2]... oś kierunek w drzewie dokumentu, test-węzłów wybór węzłów po rodzaju, typie, nazwie, predykaty opcjonalne, dodatkowo filtrujace węzły. Przykład /descendant::dział[attribute::id = ksi ]/child::pracownik /child::nazwisko/child::text() Patryk Czarnik 07 XPath XML 2008/09 26 / 1

Język XPath Ścieżki Osie child descendant parent ancestor following-sibling preceding-sibling following preceding attribute namespace self descendand-or-self ancestor-or-self Patryk Czarnik 07 XPath XML 2008/09 27 / 1

Osie żródło: www.georgehernandez.com

Język XPath Testy węzłów w XPath 1.0 Ścieżki Rodzaj węzła: node() text() comment() processing-instruction() processing-instruction(xml-stylesheet) Nazwa: osoba pre:* *:osoba * domyślny rodzaj węzła: element lub atrybut, zależnie od osi. Patryk Czarnik 07 XPath XML 2008/09 29 / 1

Język XPath Testy węzłów w XPath 1.0 Ścieżki Rodzaj węzła: node() text() comment() processing-instruction() processing-instruction(xml-stylesheet) Nazwa: osoba pre:* *:osoba * domyślny rodzaj węzła: element lub atrybut, zależnie od osi. Patryk Czarnik 07 XPath XML 2008/09 29 / 1

Język XPath Ścieżki Dodatkowe testy węzłów w XPath 2.0 W XPath 2.0 także (przykłady): document-node() element() element(osoba) element(*, osobatyp) element(osoba, osobatyp) attribute() attribute(id) attribute(*, xs:integer) attribute(id, xs:integer) Patryk Czarnik 07 XPath XML 2008/09 30 / 1

Predykaty Język XPath Ścieżki Obliczane dla każdego węzła (węzeł na chwilę staje się węzłem kontekstowym). Każdy predykat przesiewa sekwencję. Typ wyniku: liczba porównywana z pozycja węzła w sekwencji (od 1), nie liczba decyduje Effective Boolean Value. Użycie poza ścieżkami (tzw. filter expressions): (1 to 10)[. mod 2 = 0] Przykłady /child::osoby/child::osoba[child::imię = Patryk ] child::osoba[child::imię = Patryk ]/child::nazwisko (1 to 10)[. mod 2 = 0] //obiekt[attribute::nazwa][3] Patryk Czarnik 07 XPath XML 2008/09 31 / 1

Język XPath Ścieżki Skróty składniowe Przykład Oś child można pominać. @ przed nazwa zamiast osi attribute.. zamiast self::node()... zamiast parent::node(). // zamiast /descendant-or-self::node()/..//obiekt[@id = E4 ] self::node()/descendant-or-self::node()/ child::obiekt[attribute::id = E4 ] Patryk Czarnik 07 XPath XML 2008/09 32 / 1

Język XPath Ścieżki Sposób obliczania ścieżek Ścieżki obliczane od lewej do prawej. Dla każdego węzła z bieżacej sekwencji obliczany kolejny krok (wraz z predykatami). //dział/pracownik[1] (//dział/pracownik)[1] Po każdym predykacie zebrana sekwencja, przekazywana do kolejnego predykatu (zmiana kontekstu). //pracownik[@auto and position() = 5] //pracownik[@auto][position() = 5] Patryk Czarnik 07 XPath XML 2008/09 33 / 1

Język XPath XPath 1.0 XPath 1.0 ograniczenia Prostszy model danych: 4 (w XSLT 5) typy danych zamiast typów XML Schema, zbiory węzłów zamiast sekwencji wszystkiego. Brak wyrażenia if. Brak wyrażeń for, some, every. Brak porównań atomowych i is. Mniej testów węzłów. Mniej standardowych funkcji. Nazwy standardowych funkcji nie w przestrzeni nazw. Patryk Czarnik 07 XPath XML 2008/09 34 / 1

Język XQuery XQuery status XQuery 1.0 rekomendacja (styczeń 2007). Idea XQuery język zapytań nad XML. Wynik zapytania może być zapisany w postaci XML (serializacja zdefiniowana wspólnie dla XQuery i XSLT 2.0). XQuery a XPath Model danych, funkcje wspólne z XPath 2.0. Język zdefiniowany niezależnie. W praktyce rozszerzenie XPath 2.0. Patryk Czarnik 07 XPath XML 2008/09 36 / 1

Język XQuery XQuery status XQuery 1.0 rekomendacja (styczeń 2007). Idea XQuery język zapytań nad XML. Wynik zapytania może być zapisany w postaci XML (serializacja zdefiniowana wspólnie dla XQuery i XSLT 2.0). XQuery a XPath Model danych, funkcje wspólne z XPath 2.0. Język zdefiniowany niezależnie. W praktyce rozszerzenie XPath 2.0. Patryk Czarnik 07 XPath XML 2008/09 36 / 1

Język XQuery Struktura zapytania XQuery Struktura zapytania XQuery Deklaracje i ciało. Deklaracje: wersja (nagłówek zapytania / modułu), import, flagi i opcje (np. serializacji), przestrzeń nazw, zmienna / parametr całego zapytania, funkcja. Przykład xquery version "1.0" encoding "utf-8"; declare namespace foo = "http://example.org"; declare variable $id as xs:string external; declare variable $doc := doc("przyklad.xml"); $doc//foo:obiekt[@id = $id] Patryk Czarnik 07 XPath XML 2008/09 37 / 1

Język XQuery Struktura zapytania XQuery Wyrażenie FLWOR Przykład Od For, Let, Where, Order by, Return. Zamiast for z XPath. Jak SELECT w SQL :). for $obiekt in doc("przyklad.xml")/lista/obiekt let $pop := $obiekt/preceding-sibling::element() let $nazwa-pop1 := $pop[1]/@nazwa where $obiekt/@nazwa order by $obiekt/@nazwa return <wynik> Obiekt o nazwie {xs:string($obiekt/@nazwa)} ma {count($pop)} poprzedników. Najbliższym poprzednikiem jest obiekt o nazwie {xs:string($nazwa-pop1)}. </wynik> Patryk Czarnik 07 XPath XML 2008/09 38 / 1

Język XQuery Konstruktory węzłów Konstruktory węzłów bezpośrednie (direct) Stały element wynikiem zapytania <book isbn="isbn-0060229357"> <title>harold and the Purple Crayon</title> <author> <first>crockett</first><last>johnson</last> <?cel Wartość?> <!--Wszystko jest brane do wyniku--> </author> </book> Konstruktory i wyrażenia nawiasy klamrowe <wynik>{ for $el in doc("przyklad.xml")//* return <elem głębokość="{count($el/ancestor::node())}"> Element o nazwie: {name($el)}</elem> }</wynik> Patryk Czarnik 07 XPath XML 2008/09 39 / 1

Język XQuery Konstruktory węzłów Konstruktory węzłów bezpośrednie (direct) Stały element wynikiem zapytania <book isbn="isbn-0060229357"> <title>harold and the Purple Crayon</title> <author> <first>crockett</first><last>johnson</last> <?cel Wartość?> <!--Wszystko jest brane do wyniku--> </author> </book> Konstruktory i wyrażenia nawiasy klamrowe <wynik>{ for $el in doc("przyklad.xml")//* return <elem głębokość="{count($el/ancestor::node())}"> Element o nazwie: {name($el)}</elem> }</wynik> Patryk Czarnik 07 XPath XML 2008/09 39 / 1

Język XQuery Konstruktory węzłów Konstruktory węzłów obliczane (computed) Ilustracja składni element book { attribute isbn {"isbn-0060229357"}, element {"title"} { "Harold and the Purple Crayon"}, element author { element first { text { "Crockett" } }, element last {"Johnson" } processing-instruction cel { "Wartość" } commment { "Wszystko jest brane do wyniku" } } } Przykład zastosowania nazwa nadawana dynamicznie <wynik>{ for $el in doc("przyklad.xml")//* return element {concat("elem-", name($el))} { attribute głębokość {count($el/ancestor::node())}, text {"Element o nazwie: "}, text {name($el)} } } </wynik> Patryk Czarnik 07 XPath XML 2008/09 40 / 1

Język XQuery Konstruktory węzłów Konstruktory węzłów obliczane (computed) Ilustracja składni element book { attribute isbn {"isbn-0060229357"}, element {"title"} { "Harold and the Purple Crayon"}, element author { element first { text { "Crockett" } }, element last {"Johnson" } processing-instruction cel { "Wartość" } commment { "Wszystko jest brane do wyniku" } } } Przykład zastosowania nazwa nadawana dynamicznie <wynik>{ for $el in doc("przyklad.xml")//* return element {concat("elem-", name($el))} { attribute głębokość {count($el/ancestor::node())}, text {"Element o nazwie: "}, text {name($el)} } } </wynik> Patryk Czarnik 07 XPath XML 2008/09 40 / 1

Definicje funkcji Język XQuery Funkcje Przykład declare function local:podwoj($x) { 2 * $x }; Przykład ze specyfikacja typów declare function local:podwoj($x as xs:double) as xs:double { 2 * $x }; Patryk Czarnik 07 XPath XML 2008/09 41 / 1

Definicje funkcji Język XQuery Funkcje Przykład declare function local:podwoj($x) { 2 * $x }; Przykład ze specyfikacja typów declare function local:podwoj($x as xs:double) as xs:double { 2 * $x }; Patryk Czarnik 07 XPath XML 2008/09 41 / 1

Notacja dla typów Język XQuery Funkcje Informacje o typie możliwe (ale nieobowiazkowe) dla: zmiennych, parametrów i wyników funkcji, także w XSLT. Możliwości: nazwa typu, rodzaj węzła node() item(), określenie krotności (?, *, +, brak dokładnie jeden). Przykłady: xs:double element() element()* xs:integer? item()+ Patryk Czarnik 07 XPath XML 2008/09 42 / 1