XQuery

Page 1

XQuery


Lenguaje de consulta que permite extraer y procesar informaci贸n almacenada en formato XML Con XPath comparte modelo de datos y soporta las misma funciones y operadores XQuery es un superconjunto de XPath. Toda expresi贸n XPath tambi茅n lo es XQuery


Ejemplo de expresiones XQuery: ●

7+3

if (3 < 4) then “Verdarero” else “Falso”

for $ciudad in doc(“fichero.xml”)//ciudad/nombre/text() where starts-with($ciudad, “Q”) order by $ciudad return data($ciudad)


TIPOS DE DATOS: Son los mismos que en los esquemas XML ● ● ● ● ● ●

Numéricos: enteros o reales. Booleanos Cadenas de texto Fechas, horas y dureaciones Tipos relacionados con XML, como QName. Nodos XML: raíz, elemento, atributo, texto, comentario, instrucción de procesamiento, espacio de nombres


SECUENCIAS Son listas de valores simples (at贸micos) Ejemplo: let $s1 := (1, 2, 3)

(: Se declara la variable $s1 y se le asigna una secuencia de 3 elementos :)

let $s2:= ($s1, $s1) let $s3:= 4 let $s4:= () return (count ($s1), count ($s2), count ($s3), count ($s4))


LECTURA DE ARCHIVOS función doc(“fichero.xml”) Devuelve el nodo raíz de “fichero.xml” o los elementos que se indiquen mediante la expresión XPath que le siga.


Clausulas FLWOR (

For, Let, Where, Order by, Return)

CLAUSULAS FLWOR (FOR, LET, WHERE, ORDER BY, RETURN)

for Indica el elemento que se va a seleccionar, normalmente desde un documento XML. Acompañada de la clausula “at” permite numerar los elementos que se van procesando. Ejemplos: for $x in (1 to 5) return <numero> {$x} </numero> for $x at $i in doc(“libros.xml”)/clasicos/clasico/titulo return <libro>{$i} . {data($x)} </libro>


<datos> { for $v1 in (1, 3), $v2 in (2, 4) return <dato><variable1>{$v1}</variable1><variable2>{$v2}</variable2></dato> } </datos>


let Permite declarar variables a las que se les asignan valores Ejemplos: let $v1 := 7, $v2 := 6 return 20*$v1*$v2 let $v1 := 7 let $v2 := 6 return 20*$v1*$v2


<continentes> { for $c in doc(“informacionGeografica.xml�)//continente let $nc := $c/nombre/data() order by $nc return <continente>{$nc}</continente> } </continentes>


where Permite definir condiciones que deben cumplir los elementos seleccionados por “for” Ejemplos: for $c in doc(“informacionGeografica.xml”)//continente for $p in doc(“informacionGeografica.xml”)//pais where $c/@id = $p/continente and $c/nombre=”Europa” return data ($p/nombre)


order by Permite ordenar los resultados de la consulta

return Indica los valores que devuelve la consulta


if ‌. then ...else Permite definir comportamientos condicionales


FUNCIONES XQuery ● ●

Existen funciones predefinidas (muchas coinciden con funciones XPath) El URI del espacio de nombres de las funciones XQuery es el mismo que el de las funciones XPath y su prefijo es fn (normalmente se omite) Funciones predefinidas: De texto: concat, string-length, upper-case, lower-case, substring, contains, starts-with, endswith, replace, normalize-space,... Numéricas: min, max, abs, avg, sum, floor, ceiling, round, count, …. De fechas: current-date, current-time, day-from-date,, hours-from-time,... De nodos XML: root, data,... De uso general: empty, exits, distinc-values, ….


OPERADORES ● ● ● ●

eq (=), ne (!=), lt (<), gt (>), le (<=), ge (>=) Aritméticos: +, -, *, div, mod Lógicos: and, or Comparación de nodos: is, is not, <<


Ejemplos: for $o in doc(“fichero.xml”)//organizacion return count($o/miembros) avg( for $o in doc(“fichero.xml”)//organizacion return count($o/miembros)) round( avg ( for $o in doc(“fichero.xml”)//organizacion return count($o/miembros) ))


declare function Permite declarar funciones definidas por el usuario Ejemplos: declare function local: aumento ($cantidad as xs:decimal, $porcentaje as xs:decimal) as xs:decimal{ let $respuesta := $cantidad * (1 + porcentaje div 100) return ($respuesta) }; for $p in doc(“informacionGeografica.xml”)//pais let $pA := local:aumento( $p/poblacion, 10) return <pais nombre=”{data($p/nombre)}” poblacion=”{data($p/poblacion)} poblacionAum=”{data($pA)}” />


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.