XQuery esimerkki

Tässä luvussa tutkimme esimerkin avulla perus XQuery-kielioppia.

XML esimerkki dokumentti

Me käytämme tätä XML-dokumenttia seuraavassa esimerkissä.

"books.xml" :

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <hinta>30.00</hinta>
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>
<kirja kategoria="WEB">
  <title lang="en">XQuery Kick Start</title>
  <kirjailija>James McGovern</kirjailija>
  <kirjailija>Per Bothner</kirjailija>
  <kirjailija>Kurt Cagle</kirjailija>
  <kirjailija>James Linn</kirjailija>
  <kirjailija>Vaidyanathan Nagarajan</kirjailija>
  <vuosi>2003</vuosi>
  <hinta>49.99</hinta>
</book>
<kirja kategoria="WEB">
  <title lang="en">Learning XML</title>
  <kirjailija>Erik T. Ray</kirjailija>
  <vuosi>2003</vuosi>
  <hinta>39.95</hinta>
</book>
</bookstore>

Näytä "books.xml"-tiedosto selaimesi kautta.

Miten valita "books.xml"-tiedoston solmut?

Funktio

XQuery käyttää funktioita XML-dokumentista saatujen tietojen hakemiseen.

doc() avaa "books.xml"-tiedoston:

doc("books.xml")

Polkuilmaisu

XQuery käyttää polkuilmauksia navigoimaan XML-dokumentissa elementtien kautta.

Seuraava polkuilmaisu käytetään valitsemaan kaikki title-elementit "books.xml"-tiedostosta:

doc("books.xml")/bookstore/book/title

(/bookstore valitsee bookstore-elementin, /book valitsee kaikki bookstore-elementin alla olevat book-elementit, ja /title valitsee jokaisen book-elementin alla olevat kaikki title-elementit)

Tämä XQuery voi hakea seuraavat tiedot:

<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>

Lauseke

XQuery käyttää lausekkeita rajoittaakseen XML-dokumentista haettuja tietoja.

Seuraavat lausekkeet käytetään valitsemaan kaikki bookstore-elementin alla olevat book-elementit, ja valittujen book-elementtien alla olevien price-elementtien arvon on oltava alle 30:

doc("books.xml")/bookstore/book[hinta<30]

Tämä XQuery voi hakea seuraavat tiedot:

<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>