Skip to main content

xQuery

XQuery

  • Las instrucciones necesarias para iniciar el servidor eXists desde el terminal de Ubuntu.
cd /home/usuario/eXists/bin/
sudo ./startup.sh
En otro terminal y habiendo confirmado que el servidor se ha iniciado.
cd /home/usuario/eXists/bin/
sudo ./client.sh
  • Crea una colección y dentro de ella otra dos.
mkcol Activitat2
cd Activitat2
exist:/db/Activitat2/> mkcol shakespeare
exist:/db/Activitat2/> mkcol varis
  • Dentro de la colección shakespeare carga los archivos zip. Y dentro de la colección varios el archivo cotxes.xml
Cd shakespeare 
Putzip /home/usuario/shakespeare.zip
cd ..
cd varis
put /home/usuario/*.xml
para ver el documento
edit cotxes.xml
  • Haz una consulta para mostrar los diferentes modelos de coches, especificando el documento.
doc("cotxes.xml")/cotxes/cotxe/model/text()
  • Utilizando el documento restaurant.xml muestra la descripción del segundo plato
for $x in doc("restaurant.xml")/restaurant/plat[2]/descripcio/text()
return $x/descripcio
  • Haz una consulta sobre restaurant.xml sin especificar el documento y muestra el valor del atributo nombre del elemento opciones.
/restaurant/plat[@codi="12"]/opcions[@name]/text()
  • Haz una consulta XQuery para mostrar los títulos y los artistas del los cds de USA, muestralo de la siguiente manera
<cds>
 <cd>
 <title>.....</title>
 <artist>.....</artist>
 </cd>
 <cd>
 <title>....</title>
 <artist>....</artist>
 </cd>
 ....
</cds>
Solución
<cds>
{
for $x in /catalog/cd[country="USA"]
let $titol := $x/title/text()
let $artist := $x/artist/text() order by $x/artist
return
<cd>
<artist>{$artist}</artist>
<titol>{$titol}</titol>
</cd>
}
</cds>

Fes una consulta en los documentos de shakespeare que se muestre de la siguiente manera

<obres>
 <obra>
  <titol>Títol de la obra de teatre</titol>
   <personatges>
    <nom>nom del personatge </nom>
    <nom>.....</nom>
        ......
   </personatges>
 </obra>
</obres>
Solución
<obres>{
for $x in /PLAY
let $titol := $x/TITLE/text()
return
<obra>
<title>{$titol}</title>
<personatges>
{
for $i in $x/PERSONAE//PERSONA
let $nom :=$i/text()
return
<nom>{$nom}</nom>
}
</personatges>
</obra>
}
</obres>
  • Consulta XQuery en shakespeare que muestre todas los titulos de las obras y sus actos
<obres>
{
for $x in /PLAY
let $titol := $x/TITLE/text()
let $actes := count($x/ACT)
return
<obra>
<title>{$titol}</title>
<actes>{$actes}</actes>
</obra>
}
</obres>