Schemas XML. Introducción esquemas XML

1
46196

XML Schema. Definición y validación

Está claro que XML es una revolución dentro de la tecnología. Un dicho
dice, lo bueno si sencillo, dos veces bueno.

En concepto de XML es muy sencillo aunque poco a poco, la tecnología que lo
acompaña se va haciendo más amplia. No es que sea demasiado complicada la
tecnología pero hay que aprender mil cosas sencillas (lo cual es complejo).

Cuando trabajamos con documentos XML, nos preocupamos de que esté bien
formado (las etiquetas se empiecen y terminen, se utilicen caracteres adecuados,
etc. ) y que sea válido ( las etiquetas sean las correctas, estén en el orden
adecuado, etc. ).

Las DTDs son los documentos que definen las etiquetas válidas dentro de un
documento XML. Un documento XML normalmente tiene asociado una DTD (el documento
es del tipo de la DTD)

El problema de las DTDs es, que no son documentos XML en sí mismos, no son
demasiado extensibles y además, no nos permite establecer validaciones más
complejas que la propia existencia y orden de los elementos y atributos.

Podéis ver un

tutorial básico sobre XML y su DTD en este enlace
. También podéis ver como
manipular un documento XML y su DTD de un modo automático en NetBeans
.

 Era de esperar que las DTDs evolucionasen. Esta evolución son los
schemas (Esquemas XML).

Debemos ir a la fuente, donde encontraremos la especificación, documentación
y algunas herramientas interesantes …

Vamos a trabajar con NetBeans, creando un nuevo proyecto. Le damos el nombre
schemaxml.

Seleccionaremos un directorio de trabajo y pinchando el botón derecho,
invocaremos al asistente de generación de código.

Vamos a modificar a mano es fichero. NetBeans no proporciona
demasiadas facilidades para editar esquemas pero es un buen punto de partida
para poder hacer validaciones de un modo automático.

Este es el aspecto del esquema:

 

<?xml version=»1.0″ encoding=»ISO-8859-1″?>

<xsd:schema xmlns:xsd=»http://www.w3.org/2001/XMLSchema»
targetNamespace=»https://www.adictosaltrabajo.com/esquemas/libro»
xmlns=»https://www.adictosaltrabajo.com/esquemas/libro»
elementFormDefault=»qualified«>

<xsd:element name=»libro«>
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element
name=»titulo» type=»xsd:token«/>
            <xsd:element
name=»autor» type=»xsd:token«/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

<xsd:element name=»libros» >
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element
ref=»libro» maxOccurs=»unbounded» />
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

</xsd:schema>
 

En este caso, hemos indicado que hay:

  • Un elemento principal libros,
    que es de tipo complejo
    y que
    contiene una secuencia
    de libros
    con un número de ocurrencias indeterminado
  • Cada libro posee un titulo y autor, donde serán de tipo texto donde
    ignoraremos los espacios sobrantes
    .

Hemos indicado una clausula que da problema habitualmente elementFormDefault=»qualified«.
En este caso indicamos que todos los elementos dentro del XML deben esta
cualificados por un espacio de nombres (que puede ser el espacio por defecto del
documento) .

 

Ahora, vamos a crear un documento XML e indicar que queremos utilizar este
esquema de validación  …

Utilizamos de nuevo el asistente para crear el documento …

Elegimos el tipo… basado en esquemas

Y seleccionamos el esquema y el elemento principal..

Ahora editamos el documento XML

<?xml version=»1.0″ encoding=»ISO-8859-1″?>

<libros xmlns=’https://www.adictosaltrabajo.com/esquemas/libro
xmlns:xsi=’http://www.w3.org/2001/XMLSchema-instance’
xsi:schemaLocation=’https://www.adictosaltrabajo.com/esquemas/libro
file:/C:/ejemplos/schemaxml/libroroberto.xsd’>
    <libro>
        <titulo>El fin de una
odisea</titulo>
        <autor>Desconocido</autor>
    </libro>
    <libro>
        <titulo>Un lugar en la mente
de Kerz</titulo>
        <autor>Desconocido</autor>
    </libro>
</libros>
 

Podemos ahora depurar si el documento cumple con el esquema

Y comprobamos que es correcto.

Checking file:/C:/ejemplos/schemaxml/libros.xml…
Referenced entity at «file:/C:/ejemplos/schemaxml/libroroberto.xsd».
XML validation finished.

Podemos crear de un modo automático la DTD del documento anterior  (ver
última imagen) para comparar con el esquema …

<?xml version=’1.0′ encoding=’UTF-8′?>
<!ELEMENT autor (#PCDATA)>
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT libro (autor|titulo)*>
<!ELEMENT libros (libro)*>
<!ATTLIST libros xsi:schemaLocation CDATA #IMPLIED
xmlns CDATA #IMPLIED xmlns:xsi CDATA #IMPLIED>

 

Como podéis ver… hay sutiles diferencias…

Otras herramientas

Si queremos validar los documentos contra sus esquemas, podemos utilizar
algunas herramientas gratuitas más ligeras que NetBeans.

Vamos al Web de topoligi y podemos descargarnos un valilador.


http://www.topologi.com/products/validator/index.html

Para que nos funcione, debemos instalar los componentes Microsoft para el
soporte de XML (en enlace esta la página anterior)

Instalamos siguiendo el Wizard

Ahora nos descargamos la herramienta y arrancamos el instalador

Hay algunos ejemplo de schemas xml y documentos en el directorio de trabajo.

C:\Program Files\Topologi\Schematron Validator\Data

Vemos el aspecto de la aplicación. En el lado izquierdo seleccionamos el
documento y en el derecho el esquema.

Si pulsamos el botón Run

Podemos comprobar que el documento se valida correctamente

Ya hemos empezado con los schemas XML…. Ya os enseñaremos
otras herramientas que nos simplificarán la labor.

Si lo analizáis detenidamente,  acabamos de abrir el camino
para trabajar con las bases de datos XML …. el futuro para muchos tipos e
aplicaciones como portales web, gestores documentales, etc…

Sobre el
Autor ..

 

1 Comentario

  1. Bueno, yo creo que al título le sobra la palabra \\\»Definición\\\». Vamos salvo que por definición entiendas escribir en un editor de texto algo que no sabes lo que significa.

Dejar respuesta

Please enter your comment!
Please enter your name here