x/last_name

Transkrypt

x/last_name
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-FROMWHERE.
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