XML extensible Markup Language 7
XQuery Co to jest XQuery? XQuery to język zapytań dla XML. XQuery jest dla XML tym czym SQL dla baz danych, a SPARQL dla RDF. XQuery wykorzystuje wyrażenia XPath. XQuery jest wspierany przez większość baz danych. XQuery jest rekomendacją W3C.
XQuery Kilka zasad dotyczących składni XQuery: Xquery jest case-sensitive w XQuery elementy, atrybuty i zmienne muszą być poprawnymi nazwami XML ciągi znaków w XQuery mogą znajdować się w pojedynczym bądź podwójnym cudzysłowie nazwy zmiennych w XQuery składają się z $ i nazwy np. $zmienna komentarze w XQuery umieszczane są między symbolami (: i :), np. (: komentarz XQuery :)
Dokument XML <?xml version="1.0"?> <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> <publications>45</publications> </person> <person born="1918" died="1988"> <name> <first_name>richard</first_name> <last_name>feynman</last_name> </name> <profession>physicist</profession> <publications>120</publications> </person> </people> people.xml
XQuery rozszerzenie do Firefox
XQuery rozszerzenie do Firefox
XQuery rozszerzenie do Firefox
XQuery rozszerzenie do Firefox
XQuery rozszerzenie do Firefox
XQuery otwieranie pliku Plik otwierany jest za pomocą funkcji doc(): doc("people.xml") Nawigacja po elementach dokumentu XML odbywa się za pomocą wyrażeń XPath np.: doc("people.xml")/people/person
XQuery Przykład: doc()/people/person
XQuery Przykład: doc()/people/person/profession
XQuery warunki Dane pobierane z dokumentów XML możemy ograniczać warunkami: doc("people.xml")/people/person[warunek] Przykład: doc()/people/person[publications>90]
XQuery FLWOR FLWOR akronim od FOR, LET, WHERE, ORDER BY, RETURN. Wyrażenia FLWOR są podobne do SQL-owego SELECT-FROM- WHERE. for tworzy sekwencję węzłów (nodów). let przypisuje sekwencję do zmiennej. where filtruje węzły. order by sortuje węzły. return określa co ma być zwrócone.
XQuery FLWOR Przykład: doc()/people/person[publications>90]/name for $x in doc()/people/person where $x/publications>90 return $x/name
XQuery FLWOR Przykład: for $x in doc()/people/person order by $x/name/last_name return $x/name
XQuery FLWOR Przykład: for $x in doc()/people/person/name order by $x/last_name return $x
XQuery FLWOR Przykład: for $x in doc()/people/person/name order by $x/last_name return $x/last_name
XQuery FLWOR Przykład: <ul> { for $x in doc()/people/person/name order by $x/last_name return <li>{$x/last_name}</li> } </ul>
XQuery funkcja data Funkcję data() stosujemy wtedy gdy chcemy uzyskać tylko zawartość elementu (bez znaczników). Przykład: <ul> { for $x in doc()/people/person/name order by $x/last_name return <li>{data($x/last_name)}</li> } </ul>
XQuery instrukcja warunkowa W XQuery możemy stosować standardową instrukcję warunkową. Przykład: for $x in doc()/people/person return if($x/@died="1988") then <a>{$x/name/last_name}</a> else <b>{$x/name/last_name}</b>
XQuery porównywanie wartości W XQuery istnieją dwa sposoby porównywania: Ogólne porównania: =,!=, <, <=, >, >= Porównania wartości: eq, ne, lt, le, gt, ge
XQuery FLWOR Przykład: for $x in doc()/people/person/profession order by $x return $x
XQuery elementy HTML + tekst Przykład: <ul> { for $x in doc()/people/person order by $x/name/last_name return <li>{data($x/name/last_name)} - publikacji: {data($x/publications)}</li> } </ul>
XQuery elementy HTML + tekst + atrybuty Przykład: <ul> { for $x in doc()/people/person order by $x/name/last_name return <li class="{data($x/publications)}"> {data($x/name/last_name)} - publikacji: {data($x/publications)} </li> } </ul>
XQuery klauzula for Klauzula for pozwala realizować określoną ilość razy iteracje (słówko to): for $x in (1 to 6) return <a>{$x}</a>
XQuery klauzula for Klauzula for pozwala realizować określoną ilość razy iteracje (słówko to): for $x in (1 to 3), $y in (1 to 4) return <a>{$x}{$y}</a>
XQuery klauzula for Iteracje możemy zliczać z wykorzystaniem słówka at: for $x at $i in doc()/people/person/name return <osoba>{$i}. {data($x/last_name)}</osoba>
XQuery klauzula for Iteracje możemy zliczać z wykorzystaniem słówka at: for $x at $i in doc()/people/person/name return <osoba>{$i}. {data($x/last_name)}</osoba>
XQuery klauzula let Klauzula let pozwala przypisywać zmiennym wartości i pozwalaj uniknąć wielokrotnego powtarzania tego samego wyrażenia. let $x:=(1 to 6) return <a>{$x}</a>
XQuery funkcje XQuery oferuje wiele wbudowanych funkcji. <ul> { for $x in doc()/people/person/name order by $x/last_name return <li>{substring(data($x/last_name),1,4)}</li> } </ul>
XQuery funkcje XQuery oferuje wiele wbudowanych funkcji. <ul> { for $x in doc()/people/person/name order by $x/last_name return <li>{upper-case(data($x/last_name))}</li> } </ul>
XQuery funkcje XQuery oferuje wiele wbudowanych funkcji. <ul> { for $x in doc()/people/person/name order by $x/last_name return <li>{upper-case(data($x/last_name))}</li> } </ul>
Kompletny spis funkcji XQuery można znaleźć na stronie: http://www.w3schools.com/xpath/xpath_functions.asp