6.- XQuery.
Caso práctico
Una vez que María vuelve de vacaciones Juan y Félix le ponen al día de sus estudios.
La única cuestión que queda por decidir es el modo de acceder a los datos guardados en los archivos XML.
Juan les explica que existe un lenguaje semejante al SQL, con el que están familiarizados, llamado XQuery y que a su vez está basado en XPath.
XQuery es un lenguaje diseñado para escribir consultas sobre colecciones de datos expresadas en XML. Puede aplicarse tanto a archivos XML, como a bases de datos relacionales con funciones de conversión de registros a XML. Su principal función es extraer información de un conjunto de datos organizados como un árbol de etiquetas XML. En este sentido XQuery es independiente del origen de los datos.
Permite la construcción de expresiones complejas combinando expresiones simples de una manera muy flexible.
De manera general podemos decir que XQuery es a XML lo mismo que SQL es a las bases de datos relacionales. Al igual que éste último, XQuery es un lenguaje funcional.
Los requerimientos técnicos más importantes de XQuery se detallan a continuación:
- Debe ser un lenguaje declarativo.
- Debe ser independiente del protocolo de acceso a la colección de datos. Esto significa que una consulta en XQuery, debe funcionar igual al consultar un archivo local, que al consultar un servidor de bases de datos, o que al consultar un archivo XML en un servidor web.
- Las consultas y los resultados deben respetar el modelo de datos XML.
- Las consultas y los resultados deben ofrecer soporte para los
namespaces
. - Debe soportar XML-Schemas y DTDs y también debe ser capaz de trabajar sin ellos.
- Ha de ser independiente de la estructura del documento, esto es, funcionar sin conocerla.
- Debe soportar tipos simples, como enteros y cadenas, y tipos complejos, como un nodo compuesto.
- Las consultas deben soportar cuantificadores universales (para todo) y existenciales (existe).
- Las consultas deben soportar operaciones sobre jerarquías de nodos y secuencias de nodos.
- Debe ser posible combinar información de múltiples fuentes en una consulta.
- Las consultas deben ser capaces de manipular los datos independientemente del origen de estos.
- El lenguaje de consulta debe ser independiente de la sintaxis, esto es, pueden existir varias sintaxis distintas para expresar una misma consulta en XQuery.
Lenguaje en el que cada consulta es una expresión que es evaluada y devuelve un resultado.
Lenguaje en el que hay que indicar qué se quiere, no la manera de obtenerlo.