Professional Documents
Culture Documents
• ponemos
• doc(‘rutaficheroxml/nombrexml’)
• //menu/plato/frio
• doc('menu.xml')
//menu/plato/frio
consultamenu.xquery
• doc('menu.xml')
//menu/plato/frio
• doc(‘ruataficheroxml’) //nodo[@argumento
expresion]
• doc(‘ficheroxml’)//producto[@precio=50]
Comentarios
• (: esto es un comentario en Xquery :)
Posicion en un arbol
• para obtener elementos específicos en un
arbol, debemos indicar el documento sobre el
que trabajamos
• después añadir un espacio, dos barras y el o
los elementosdeseados
• doc(‘fichero.xml’)//empresa//marketing/salari
o
Expresiones – comparaciones generales
• las expresiones de comparación es como en el
resto de programas
• doc(‘fichero.xml’)//producto[@precio>=50]
• doc(‘fichero.xml’) //familia/niño[./nombre eq
“juan”]
• la compración de valores necesita definir los
tipos con XMLSchema
– si no, el procesador devuelve error indicando que
los tipos no corresponde
• las comparaciones generales no pasa esto.
• doc(‘fichero.xml’)//producto/pedido[1] is
• doc (‘fichero.xml’//producto/pedido[1]
– el resutlado será true
– no es muy util asi, pero con las expresiones
FLWOR será muy util
• podemos tb comparar el orden de aparición
de los nodos
• se usa el operador < y >
• doc(‘fichero.xml’)//producto/pedido[1] <
• doc (‘fichero.xml’//producto/descuento[1]
• if(<expresion1>)
• then
• <expresion2>
• else
• <expresion3>
• es imprescindible usar else.
• si no queremos mostrar nada, tras else
ponemos parentesis vacios
alumnos.xml
• <?xml version="1.0" encoding="ISO-8859-1"?>
• <familia>
• <niño edad="15" poblacion="Madrid">
• <nombre>Miguel</nombre>
• <pelo>Moreno</pelo>
• <edad>15</edad>
• <info>Información sobre Miguel</info>
• </niño>
• <precio>55</precio>
• <niño edad="10" poblacion="Bilbao">
• <nombre>Natalia</nombre>
• <pelo>Blonde</pelo>
• <info>Información sobre Natalia</info>
• </niño>
• <precio>80</precio>
• </familia>
• consulta que devuelva los nombres de los
niños de 15 años o muestra la etiqueta no
encontrado
consultaif.xquery
• if (doc(‘alumnos.xml')
//familia/niño[@edad=15])
• then <selection>{doc(‘alumnos.xml')
//familia/niño/nombre}</selection>
• else <no_encontrado></no_encontrado>
Expresion de conjunto
• podemos realizar operaciones de unión,
intersección y excepción
union
• operador union, agrupa dos arboles que
pueden proceder de documentos distintos
• su sintaxis es
• let $variable:=mivalor
• como let $nombre:= $a
• en un bucle
– consulta que hace un bucle en el arbol familia
– la variable nombre contiene los nombres de los
niños del arbol familia
– al final, la consulta devuelve la variable nombre
– es decir, los nombres de cada niño del arbol
familia
• for $a in doc('alumno.xml') //familia
let $nombre := $a/niño/nombre
return $nombre
where
• con for podemos hacer iteraciones
• podemos restringir estas iteraciones usando
where
• se utiliza en el contenido de un elemento
• su sintaxis es
• en sql escribiriamos
• </titulos>
unionfinal.xq
• for $a in doc('venta.xml') //libros/titulo
let $b := doc('libro.xml') //titulos/item
where $a = $b
return $a
• nos muestra los titulos de los libros del
documento venta que corresponden con
entradas en el fichero libro