Saltar al contenido principal

XQuery

XQuery es un lenguaje de consulta que permite extraer y procesar información de documentos XML o bases de datos XML.

A nivel semántico, tiene similitudes con el lengugaje SQL, aunque incluye algunas capacidades de programación a mayores. XQuery permite la construcción de expresiones complejas combinando expresiones simples de una manera muy flexible.

También comparte similitudes con XPath, con el cual comparte modelo de datos y soporta las mismas funciones y operadores.

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.

Aplicaciones

Los principales usos de XQuery se resumen en tres:

  • Recuperar información a partir de conjuntos de datos XML.
  • Transformar unas estructuras de datos XML en otras estructuras que organizan la información de forma diferente.
  • Ofrecer una alternativa a XSLT para realizar transformaciones de datos en XML a otro tipo de formatos, como HTML o PDF.

Requerimientos técnicos

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 de manera idéntica en cualquiera de los siguientes casos:
    • Al consultar un fichero XML local.
    • Al consultar un fichero XML en un servidor web.
    • Al consultar un servidor de bases de datos.
  • 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 (XSD) 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.