MiniTutorial XQL (XML Query Lenguaje)

Introducción a XQL

XQL es una notación para manejar los elementos y texto de los documentos XML. XQL es una extensión natural del sistema de patrones XSL.

XQL es un lenguaje de consultas para recuperación y organización de información en XML. XQL amplia XSL permitiendo identificar nodos, añadiendo filtros, logica booleana, indexar nodos,... Las aplicaciones de XQL son enormes algunas de ellas son linkar nodos, recuperación de información de repositorios, acceso a bases de datos nativas en XML y un largo etcétera.

XQL es una notación para recuperación de información de un documento. La información puede ser un conjunto de nodos, información sobre las relaciones entre nodos, o valores derivados.

Dependiendo de la implementación, el resultado de una consulta será un documento XML, un árbol, un conjunto de punteros a nodos, etc.

Sintaxis de XQL

Para comprender como funciona la recuperación de información organizada en XML mediante XQL necesitamos saber que es el contexto. El contexto es el conjunto de nodos sobre el que se recuperará la información en XQL .

Si se desea la recuperación de la información desde la raíz, utilizaremos "/" como prefijo.
Si deseamos la recuperación de la información desde el nodo actual, utilizaremos "./" como prefijo (normalmente no es necesario).
Si deseamos hacer búsquedas de información recursivas descendentes utilizaremos "//" como prefijo.
Si deseamos hacer búsquedas de información recursivas descendentes a partir del nodo actual utilizaremos ".//" como prefijo.

Ejemplos de XQL:

Recuperación de todos los nodos autor desde el nodo actual.

   ./author o author

Encuentra el elemento raíz "bookstore" de este documento:

   /bookstore

Recuperación de todos los elementos autor del documento:

   //author

Recuperación de todos los libros ("book") desde el nodo actual, en los que el estilo sea igual al atributo "specialty" del nodo raíz de este documento "bookstore":

   book[/bookstore/@specialty = @style]

Para seleccionar nodos hijos o descendientes de cierto tipo utilizamos "/" o "//" con ayuda del elemento "*", este devuelve todos los hijos del contexto actual. Para recuperar atributos utilizamos "@" delante del nombre del atributo.

Ejemplos de XQL:

Recuperación de los elementos "first-name" de los autores:

   author/first-name

Recuperación de los elementos "title" que estén uno o más niveles por debajo de "bookstore":

   bookstore//title

Recuperación de los elementos "title" que estén dos niveles por debajo de "bookstore":

   bookstore/*/title

Recuperación de los elementos "title" que estén uno o más niveles por debajo del contexto actual:

   .//title

Recuperación del atributo "style" de todos los libros:

   Book/@style

XQL también nos permite realizar recuperaciones de información condicionales, para ello se utiliza la clausula "[expresion]", los operadores lógicos "$and$", "$or$" y "$not$" y las equivalencias igual "=" ($eq$) y distintas "!=" ($ne$).

Ejemplos de XQL:

Recuperación de los elementos "author" que contengan un nodo "degree" y no tengan "publication":

   author[degree $and$ $not$ publication]

Recuperación de los elementos "author" cuyo elemento "last-name" sea "Bob":

   author[last-name = 'Bob'] o
   author[last-name $eq$ 'Bob']

Aunque toda la información (los elementos y atributos) es String podemos querer realizar comparaciones numéricas, ello también es posible, pero siempre colocando la variable a la izquierda. Para realizar estas comparaciones tenemos "<", "<=", ">" y ">=".

Ejemplo de XQL:

Recuperación de los elementos "author" cuyo precio es mayor que 50

   author[price >= 50]

Recuperación de los elementos "author" cuyo precio es mayor que 50.5

   author[price >= 50.5]

XQL permite operaciones sobre conjuntos con los operadores "$union$" e "$intersect$". Y también algunas funciones de agregación como "count()" que devuelve el numero de nodos de un conjunto.

Ejemplo de XQL:

Recuperación de la información de todos los libros y los autores

   book $union$ book/author

XML de ejemplos

<?xml version='1.0'?>
<bookstore specialty='novel'>
    <book style='autobiography'>
        <title>Seven Years in Trenton</title>
        <author>
            <first-name>Joe</first-name>
            <last-name>Bob</last-name>
            <award>Trenton Literary Review Honorable Mention</award>
        </author>
        <price>12</price>
    </book>
    <book style='textbook'>
        <title>History of Trenton</title>
        <author>
            <first-name>Mary</first-name>
            <last-name>Bob</last-name>
            <publication>
                Selected Short Stories of <first-name>Mary</first-name> <last-name>Bob</last-name>
            </publication>
        </author>
        <price>55</price>
    </book>
    <magazine style='glossy' frequency='monthly'>
        <title>Tracking Trenton</title>
        <price>2.50</price>
        <subscription price='24' per='year'/>
     </magazine>
    <book style='novel' id='myfave'>
        <title>Trenton Today, Trenton Tomorrow</title>
        <author>
            <first-name>Toni</first-name>
            <last-name>Bob</last-name>
            <degree from='Trenton U'>B.A.</degree>
            <degree from='Harvard'>Ph.D.</degree>
            <award>Pulizer</award>
            <publication>Still in Trenton</publication>
            <publication>Trenton Forever</publication>
        </author>
        <price intl='canada' exchange='0.7'>6.50</price>
        <excerpt>
            <p>It was a dark and stormy night.</p>
            <p>But then all nights in Trenton seem dark and stormy to someone who has gone through what <emph>I</emph> have.</p>
            <definition-list>
                <term>Trenton</term>
                <definition>misery</definition>
            </definition-list>
        </excerpt>
    </book>
</bookstore>

Recuperación Organización Información Tutorial XQL Recuperación Organización Información Tutorial XQL [Valid RSS]

Recuperación y organización de la información - Tutorial de XQL