Para indicar el documento que se utilizara para la consulta se tiene que escribir la función doc().
Para seleccionar el nombre de los libros escribiremos
doc(“BDbiblio.xml”)/Bdlibros/libro/titulo
Para poner una condición seriá de este modo
doc(“BDbiblio.xml”)/Bdlibros/libro[numPaginas > 300]/titulo
Esto serián una manera sencilla de hacer búsquedas y consultas. Una manera mejor seriá utilizar las expresiones FLWOR (For, Let, Where, Order by, Return). Son las mismas expresiones con las mismas caracteristicas de SQL.
El ejemplo de ante se podriá escribir de este módo
for $libro in doc(“BDbiblio.xml”)/Bdlibros/libro
where $libro/numPaginas < 300
return $libro/autores
Significado de estas expresiones:
La diferencia entre for y let consta en:
for $d in doc("BDbiblio.xml")/BDlibros/libro/titulo
return <titulos>{ $d }</titulos>
|
|
let $d in doc("BDbiblio.xml")/BDlibros/libro/titulo
return <titulos>{ $d }</titulos>
|
|
Si una clausula let aparece en una consulta que ya posee una o más cláusulas for, los valores de la variable vinculada por la cláusula let se añaden a cada una de las tuplas generadas por la cláusula for. Vemos un ejemplo:
for $b in doc("BDbiblio.xml")//BDlibros/libro
let $c := $b/autores/autor
return <libro>{ $b/titulo, <autores>{ count($c) }</autores>}</libro>
|
El resultado seriá :
|
Para insertar nodos se utiliza “as first into doc” para insertarlo al inicio y para isertarlo al final se utiliza “as last into doc”.