Blog de Luis Arévalo


vDocXML library: A library for the management of XML versions


Dic 08

Posted: under eXist, Investigación, XML, XQuery.
Tags: , ,

It is a pleasure for me to announce the release of a new software for the management of XML versions which is called vDocXML. Its implementation has been made by XQuery modules and it can be used to extend the XML native database (eXist) for adding versioning features in a native way. You can find more information in http://code.google.com/p/vdocxml/.

Comments (0)

vDocXML. A data model for managing XML versions


Nov 11

Posted: under eXist, Investigación, XQuery.
Tags: , , ,

Last week, I was in Germany for a meeting in Rostock (3rd Model Meeting: Modeling biological systems. Bio-model versioning – how to identify, interpret and annotate changes in models). Besides I took advantages of this trip to visit Berlin. what wonderful cities!
My contribution consisted of giving an overview of different techniques for the management of XML versions as well as to show our versioning system which is called vDocXML (slides). If you have any questions, just let me know adding a comment.
The abstract of this talk is: In this talk an overview of different techniques for the management of XML versions will be explained. Traditional systems, temporal databases, procedures based on XML change operations (delta XML) or by integrating the different versions into a single XML document using a temporal, a version or a temporal-version technique will be revised. The main advantages and disadvantages of each one will be discussed. In the second part of this talk, the vDocXML data model will be shown which uses a versionstamp instead of a timestamp technique. It allows us to manage branched versioning in an easy way. Furthermore, the vDocXML library, which is a versioning system based on this model and using XQuery modules, will be explained.

Comments (0)

XQDoc: Una herramienta para la Auto-Documentación de código XQuery


Feb 08

Posted: under eXist, XML, XQuery.
Tags: , ,

XQDoc es una herramienta para la generación automática de documentación en formato HTML a partir de código fuente XQuery, es decir, es la herramienta Javadoc para código XQuery (Javadoc una utilidad de Sun Microsystems para la generación de documentación automática de APIs en formato HTML). Este post surgió a partir de mi anterior entrada sobre «Guía de estilos en XQuery«.

Al igual que en Javadoc, es necesario introducir comentarios especiales en los módulos/ficheros XQuery para que posteriormente la herramienta pueda generar la documentación HTML. Principalmente deben documentarse dos elementos: more_link_text

Comments (0)

Guía de Estilo para XQuery


Feb 01

Posted: under eXist, XML, XQuery.
Tags: , ,

Todo lenguaje de programación tiene su propia «guía de codificación», consensuada generalmente por un grupo de «expertos» en la materia, que facilitan la codificación y compresión de código para dicho lenguaje. Y para no ser menos, también existe una guía para el lenguaje XQuery (Guía de Estilo).

En ella se establece entre otras cosas:

  • Modulos XQuery. Como realizar la correcta definición de modulos  XQuery y posteriormente realizar su importación.
  • Indentación
  • Comentarios donde existe un formato similar a Javadoc para posteriormente generar la documentación HTML automáticamente (Herramienta xqdoc)
  • El correcto orden de las expresiones
  • Colocación de los espacios en blancos.
  • Buenas prácticas de codificación.

A partir de ahora, otro manual para tener siempre encima de la mesa de trabajo.

Comments (0)

Configuración de eXist. Cambio de puerto y de memoria.


Ene 20

Posted: under eXist.
Tags: , ,

Después de una larga temporada sin poder añadir entradas, me he propuesto intentar una a la semana. En la entrada de hoy voy a indicar cómo configurar dos aspectos básicos de eXist: cambiar el puerto de la base de datos y cómo incrementar la memoria qué esta utiliza.

more_link_text

Comments (0)

Recuperación de un documento XML completo en XQuery


Sep 22

Posted: under eXist, XML, XQuery.

Después de unos meses absorbido por completo con la tesis, ya tengo un poco más de tiempo para continuar con el blog. El objetivo de las siguientes entradas será proporcionar algunos códigos XQuery/XSLT de utilidad. En la entrada de hoy mostraré una función XQuery para recuperar un documento XML completo.

Estamos habituados a usar doc(«/db/examples.xml») para recuperar un documento XML en XQuery, pero que sucede si queremos recuperar el documento XML completo con sólo algunos elementos hijos o con algunos atributos concretos. En este caso es necesario hacer una función XQuery recursiva para esta operación.


01. declare namespace f='f.ns';
02. declare function f:RetrieveXML($nodes as node()*) {
03. for $x in $nodes
04. return
05.    if ($x instance of comment()) then $x
06.    else if ($x instance of processing-instruction())then $x
07.   else if ($x instance of element()) (:también $x:)
08.   then element {node-name($x)} {
09.     for $y in $x/@* (: también $x/@*:)
10.       return attribute {local-name($y)}{$y}
11.      ,
12.      for $y in $x/node()
13.        return f:RetrieveXML($y)
14.   }
15.   else if ($x instance of text()) then xs:string($x)
16.   else ()
17. };
(: Ejemplo de uso : )
18. f:RetrieveXML(doc("/db/examples.xml")/*)

La implementación se realiza mediante la instrucción instance of. En primer lugar y a partir del nodo XML recibido (línea 2) se procesan todos sus descendientes y dependiendo de su tipo se realiza un procesamiento distinto: comentario (5), instrucción de procesamiento (6), elemento (7) o texto(15). En el caso de un elemento XML se procede a crear el elemento en cuestión (element), sus atributos (attribute) y a llamar recursivamente a sus descendientes.

En el caso de los atributos o elementos se podría hacer directamente $x pero he utilizado las instrucciones element y attribute de XQuery para entender su funcionamiento.

Comments (0)

Retrieving Binary Documents from an eXist Database


May 13

Posted: under eXist, XML, XQuery.
Tags:

eXist is an XML database, that is,  it allows us to store XML documents  as well as to store another kind of documents, such as :XQuery Query documents (. xq),  XQuery Module documents (. xqm),  stylesheet documents (.xslt), etc… in a binary way. In this post, I will show an XQuery code to retrieve the textual information from a binary document stored in eXist.

let $binary := util:binary-doc("/db/queries/query.xq")
let $text := util:binary-to-string($binary) //Convertir binario a texto
return $text

where the binary document (query.xq) is stored in the /db/queries collection.  In case you want to retrieve a binary document from an external eXist database, you should use the following URL in the previous binary-doc function:

xmldb:exist://HOST:PORT/db/queries/vdoc2doc.xq

Comments (0)

Java y eXist. Un par inseparable 2/2


Mar 14

Posted: under eXist, java, XML, XQuery.

En el anterior post vimos como ejecutar una consulta en XQuery sobre eXist desde un programa escrito en Java. En este post continuamos viendo otros códigos  para realizar las operaciones más habituales sobre eXist desde Java. more_link_text

Comments (0)

Java – eXist. Un Par Inseparable


Mar 08

Posted: under eXist, XML, XQuery.

Hasta ahora sólo me he preocupado de enseñaros como utilizar las herramientas que proporciona eXist. Pero, ¿Cómo podemos interactuar desde nuestra aplicación Java con eXist?. Esta pregunta espero responderla en este post.

more_link_text

Comments (4)

Compilar eXist


Feb 23

Posted: under eXist, XML, XQuery.
Tags:

Como os dije en mi anterior post, la opción más recomendable para instalar eXist es descargándote directamente el código fuente y compilándolo. Como veréis es muy sencillo y únicamente requiere de varios pasos:

more_link_text

Comments (0)