Maciej Zabielski 15 stycznia 2003

1 Maciej Zabielski 15 stycznia 2003XML – Języki Zapytań M...
Author: Franciszek Grosicki
0 downloads 0 Views

1 Maciej Zabielski 15 stycznia 2003XML – Języki Zapytań Maciej Zabielski 15 stycznia 2003

2 XML - Języki Zapytań, Maciej Zabielski 2003Wprowadzenie W ciągu ostatnich kilku lat technologia XML zyskiwała na popularności. Ciągle pojawiają się nowe systemy oparte o ta technologie. XML wykorzystywany jest do wielu rzeczy, od wymiany danych miedzy systemami po bazy danych. W związku z tym ilość danych zapisanych w tym formacie ciągle wzrasta i konieczna jest efektywna metoda ich przeszukiwania za pomocą języków zapytań. XML - Języki Zapytań, Maciej Zabielski 2003

3 XML - Języki Zapytań, Maciej Zabielski 2003XQuery Status: W3C Working Draft Pełna specyfikacja (około 180 stron): Podstawowe założenie: „inteligentne” przeszukiwanie danych fizycznie zapisanych w formacie XML lub udostępnionych przez middleware. XML - Języki Zapytań, Maciej Zabielski 2003

4 Struktura modułu XQueryPełne zapytanie składa się z 3 części Pierwsze dwie to tzw. Query Prolog – są opcjonalne. Pierwsza cześć zawiera deklaracje Namespace i polecenia importu schematów (XML Schema) Namespace xsd = ‘http://www.w3.org/2000/01/XMLSchema’ Druga cześć może zawierać funkcje zdefiniowana przez użytkownika. Np: funkcja obliczającą silnie ze znalezionej liczby: Define function factorial(xsd:integer $n) returns xsd:integer{ if($n eq 0) then 1 else $n * factorial($n – 1) } XML - Języki Zapytań, Maciej Zabielski 2003

5 Struktura modułu XQueryTrzecia część zawiera samo zapytanie. Factorial of 10 {factorial(10)} Tak jak tutaj, może się składać np. z konstruktora elementów (Element Constructor ) który w tym przypadku stworzy element Results. W tym przykładzie zostanie wywołana nasza funkcja Factorial z parametrem value = 10 a rezultat zostanie wstawiony do elementu Value. XML - Języki Zapytań, Maciej Zabielski 2003

6 Inne Typy Zapytań XQueryFLWR Expressions („flower”) Path Expressions Element Constructors Conditional Expressions Function Calls XML - Języki Zapytań, Maciej Zabielski 2003

7 XML wykorzystywany w przykladachXML - Języki Zapytań, Maciej Zabielski 2003

8 XQuery FLWR ExpressionsTen typ wyrażeń jest jednym z najciekawszych stosowanych w XQuery. Przypominają SELECT stosowany w SQL – cechuje go podobna funkcjonalność. FLWR to skrót od „For-Let-Where-Return” – są to trzy podstawowe klauzule z których składa się wyrażenie. Przykładowe wyrażenie FLWR które znajduje wszystkie elementy których cena jest poniżej średniej: for $i in document("data/items.xml")//item let $avg_price := avg(document("data/items.xml")//item/price) where $i/price < $avg_price return {$i/itemno, $i/description, $i/price} For -> łączy zmienna „i” do listy elementów „item” z dokumentu items.xml Let -> oblicza średnią wartość (price) ze wszystkich elementów „item” Where -> wybiera te elementy „item” których cena (price) jest poniżej średniej (spośród tych w „i”) Return -> tworzy elementy „LowPricedItem” zawierające itemno, description i price wybranych elementoów. XML - Języki Zapytań, Maciej Zabielski 2003

9 XQuery Path ExpressionsWyrażenia typu „Path” („ścieżka”) są dokładnie takimi samymi wyrażeniami jakie były stosowane w standardzie XML Path Language (XPath). Pełna specyfikacja XPath 1.0: W uproszczeniu można powiedzieć, ze wyrażenie typu XPath to opis w jaki sposób należy nawigować po XML’u (reprezentowanym w postaci drzewa) aby dotrzeć do szukanej wartości. Następujący przykład zwraca wszystkie elementy „item” których tym „itemType” ma wartość "Purchasing item„ document("data/items.xml")/ixq:items/item[ItemType = "Purchasing item"] XML - Języki Zapytań, Maciej Zabielski 2003

10 XQuery - Element Constructors„Konstruktory Elementów” mogą być przydatne wtedy, gdy podczas budowania zapytania, chcemy aby częścią wyniku były nowe elementy. Przykład konstruktora: Hello World Taki zapis spowoduje utworzenie nowego elementu nazwanego „newElement” z jednym węzłem tekstowym o wartości „Hello World” (tzw. child text node). Nowe elementy mogą zawierać albo z góry ustalona wartość, albo wartość wyliczona lub pochodzącą z innej części zapytania. Poniższy przykład stworzy nowy element „MyListOfExpensiveItems” zawierający jako „dzieci” (child elements) wszystkie elementy „item” których cena była większa niż $1000. { document("data/items.xml")/ixq:items/item [price > 1000] } XML - Języki Zapytań, Maciej Zabielski 2003

11 XQuery – Conditional ExpressionsWyrażenia warunkowe w XQuery maja następującą postać: if then else W wyrażeniach warunkowych „wyrazenie_warunkowe” powinno prowadzić do TRUE lub FALSE. Jeżeli „wyrazenie_warunkowe” przyjmie wartość TRUE wartość całego wyrażenia warunkowego jest taka sama jak wartość wyrażenia #1 – w przeciwnym przypadku będzie to wartość wyrażenia #2. XML - Języki Zapytań, Maciej Zabielski 2003

12 XQuery - ImplementacjeJedna z implementacji, w postaci demo, jest dostępna na stronie Microsoft: Przykłady zapytań można znaleźć na XQuery Expression: { for $b in document("http://www.bn.com/bib.xml")/bib/book where $b/publisher = "Addison-Wesley" and > 1991 return { $b/title } } Query Results: TCP/IP Illustrated Advanced Programming in the Unix environment XML - Języki Zapytań, Maciej Zabielski 2003

13 XML - Języki Zapytań, Maciej Zabielski 2003Software AG – Tamino XQuery Demo XML - Języki Zapytań, Maciej Zabielski 2003

14 Bibliografia & Inne LinkiXML Path Language (XPath) XQuery 1.0: An XML Query Language Microsoft's XQuery Prototype The Quest for an XML Query Standard XML - Języki Zapytań, Maciej Zabielski 2003