XML Query, comúnmente denominado XQuery y publicado por el W3C (World Wide Web Consortium), es un lenguaje funcional que utilizando la notación XML permite realizar consultas en infinidad de tipos de diferentes documentos tales como documentos estructurados, colecciones de documentos, bases de datos, estructuras DOM, catálogos, Servicios Web, aplicaciones, sistemas heredados, etc. Gracias a su robustez y flexibilidad permite consultar un amplio espectro de fuentes de información.
Actualmente, XML se ha convertido en una herramienta de uso cotidiano en los entornos de tratamiento de información y en los entornos de programación. Sin embargo, a medida que se emplea en un mayor número de proyectos de complejidad y tamaño crecientes y la cantidad de datos almacenados en XML aumenta, se hace necesaria la aparición de un lenguaje que permita definir de forma rápida y compacta, consultas o recorridos complejos sobre colecciones de datos en XML. Este lenguaje debe ser, además declarativo, es decir independientemente de la forma en que se realice el recorrido o donde se encuentren los datos. Como solución a esta necesidad surge el lenguaje XML Query.
XML Query es un lenguaje de consulta diseñado para escribir consultas sobre colecciones de datos expresadas en XML. Su principal función es extraer información de un conjunto de datos organizados como un árbol n-ário de etiquetas XML. En este sentido XML Query es independiente del origen de los datos.
XML Query es un lenguaje funcional, lo que significa que, en vez de ejecutar una lista de comandos como un lenguaje procedimental clásico, cada consulta es una expresión que es evaluada y devulve un resultado, al igual que en SQL. Diversas espresiones pueden combinarse de una manera muy flexible con otras expresiones para crear nuevas expresiones más complejas y de mayor potencia semántica.
XML Query, que hace un uso intensivo de XPath, presenta las siguientes características:
Un consulta en XQuery es una expresión que lee una secuencia de datos en XML y devuelve como resultado otra secuencia de datos en XML. Un detalle importante es que, a diferencia de lo que sucede en SQL, en XQuery las expresiones y los valores que devuelven son dependientes del contexto. es decir, los nodos que aperecerán en el resultado dependen de los namespaces, de la posición donde aparezca la etiqueta raíz del nodo, etc...
En XQuery las consultas pueden estar compuestas por claúsulas de hasta cinco tipos distintos. Las consultas siguen la norma FLWOR (For, Let, Where, Order y Return):
En XQuery, cuando usamos el término de tupla, nos estamos refiriendo a cada uno de los valores que toma una variable. Con estas sentencias se consigue buena parte de la funcionalidad que diferencia a XQuery de XPath. Entre otras cosas permite construir el documento que será la salida de la sentencia.
Toda consulta escrita en XQuery debe cumplir las siguientes reglas:
XQuery utilizar las funciones de entrada en las cláusulas FOR o LET o en expresiones XPath para identificar el origen de los datos:
Además de la cláusula WHERE, XQuery también soporta expresiones condicionales del tipo "if-then-else" con la misma semántica que en los lenguajes de programación más habituales.
La cláusula WHERE de una consulta permite filtrar las tuplas que aparecerán en el resultado, mientras que una expresión condicional no spermite crear una u otra estructura de nodos en el resultado que dependa de los valores de las tuplas filtradas.
La cláusula "else" es obligatoria y debe aparecer siempre en la expresión condicional. El motivo de esto es que toda expresión en XQuery debe devolver un valor. Si no existe ningún valor a devolver al no cumplirse la cláusula "if", devolvemos una secuencia vacía con "else ()";.
XQuery soporta dos cuantificadores existenciales llamados "some" y "every", de tal manera que nos permite definir consultas que devuelvan algún elemento que satisfaga la condición "(some)" o consultas que devuelvan los elementos en los que todos sus nodos satisfagan la condición "(every)".
XQuery soporta operadores y funciones matemáticas, de cadenas, para el tratamiento de expresiones regulares, comparaciones de fechas y horas, manipulación de nodos XML, manipulación de secuencias, comprobación y conversión de tipos y lógica booleana. Además permite definir funciones propias y funciones dependientes del entorno de ejecución del motor XQuery.
Los comentarios en XQuery, a diferencia de XML, van encerrados entre caras sonrientes " (: :) ".
Página creada por Vanesa Gil Sánchez
Última Actualización: 10-04-2007
Equipo 1 - Lenguajes de Recuperación para la Web I - Recuperación y Organización de la Información