¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. XML práctico
  3. Relax NG
Extrait - XML práctico Bases esenciales, conceptos y casos prácticos (2ª edición)
Extractos del libro
XML práctico Bases esenciales, conceptos y casos prácticos (2ª edición) Volver a la página de compra del libro

Relax NG

Principio de Relax NG

Para describir el árbol de un documento ya contamos con DTD y XMLSchema, los cuales hemos presentado en los capítulos anteriores. Se puso de relieve que la DTD no era lo suficientemente potente en lo que respecta a la definición de tipos y XMLSchema acabaría reemplazándola. De hecho, XMLSchema, a nivel de los elementos y atributos, permite definir de manera precisa los tipos de datos utilizando una gramática XML.

Sin embargo, XMLSchema sigue siendo bastante complejo en cuanto a su escritura.

Así, Relax NG (REgular LAnguage for XML Next Generation) se creó con el objetivo de simplificar la descripción de un documento XML. Este lenguaje proviene de la fusión de dos lenguajes: TreX de James Clark y Relax de Murata Makoto.

Relax NG se ocupa de la descripción y no de la coherencia de los valores de los elementos (de la cual se encarga XMLSchema). Por lo tanto, Relax NG no reemplaza a XMLSchema, pero simplifica el lenguaje.

En este capítulo, vamos a aprender a describir documentos XML más fácilmente que con XMLSchema.

A diferencia de las DTD y los esquemas XML, no es posible vincular directamente un documento XML a un esquema Relax NG. Por lo tanto, le recomendamos que en la práctica utilice validadores Relax NG como JING en http://www.thaiopensource.com/download/.

Sintaxis XML y sintaxis compacta

Existen dos tipos de sintaxis de Relax NG: la sintaxis XML y la sintaxis compacta.

La sintaxis XML, como su propio nombre indica, utiliza XML para describir un documento XML, a diferencia de la sintaxis compacta, que no está en XML, pero es más concisa y simple.

Para ilustrar el uso del lenguaje Relax NG vamos a trabajar sobre las dos sintaxis con el siguiente documento XML simple, que representa a los miembros de una asociación:


<asociación>   
    <miembro>   
        <nombre>Pedro Durán</nombre>   
        <email>Pedro@web.com</email>   
    </miembro>   
    <miembro>   
        <nombre>Juan Querol</nombre>   
        <email>Juan@web.com</email>   
    </miembro>   
</asociación>
 

1. Sintaxis XML

En la sintaxis XML, definiremos los elementos y los atributos en un documento XML, que se guardará con la extensión .rng.

En nuestro ejemplo, tenemos los elementos asociación, miembro, nombre y email. Con el patrón element, vamos a definir estos últimos. Con el patrón zeroOrMore, vamos a indicar si el elemento puede aparecer varias veces o ninguna.

Esto nos da un esquema simple:


<element name="asociación" xmlns="http://relaxng.org/ns/structure/1.0"> 
    <zeroOrMore>   
        <element name="miembro">   
            <element name="nombre">   
                <text/>   
            </element>   
            <element name="email">   
                <text/>   
            </element>   
        </element>   
    </zeroOrMore>   
</element>
 

El nombre de los elementos se describe mediante el argumento...

Conclusión

Relax NG es fácil de aprender y de utilizar. En la descripción de documentos XML, este lenguaje permite ir más lejos que las DTD. Es más simple que XMLSchema. Existen herramientas como Trang, disponible para su descarga en http://www.thaiopensource.com/relaxng/trang.html, que permiten pasar de XMLSchema, DTD a Relax NG y viceversa.

Parece impensable que Relax NG reemplace a XMLSchema, que es mucho más maduro. Sin embargo, los programadores valoran la simplicidad del lenguaje.