Estás en:

informaciónDESARROLLADO POR:
icono_twiter icono_linkedin icono_linkedin icono_xing

Creador y propietario de AdictosAlTrabajo.com, Director General de Autentia S.L., Ingeniero Técnico de Telecomunicaciones y Executive MBA por el Instituto de Empresa 2007. Twitter: @rcanalesmora

Autor del Libro: Informática profesional, las reglas no escritas para triunfar en la empresa

Puedes consultar mi CV y alguna de mis primeras aplicaciones (de los 90) aquí

Fecha de publicación del tutorial: 2003-12-17
Tutorial visitado 25.455 veces25.455
Descargar el tutorial en PDF


Regístrate para votar
Share |
http

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="http://www.adictosaltrabajo.com/esquemas/libro"
xmlns="http://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='http://www.adictosaltrabajo.com/esquemas/libro'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://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 ..

 

Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.


(Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

Comentarios

  1. Curioso
    2009-04-20 - 12:46:07 PM

    Habla mucho de herramientas a usar (por cierto sólo para windows) y poco de schemas. El ejemplo es tan básico que no aporta nada

  2. doniney
    2006-05-26 - 06:40:55 PM

    me gusto mucho este tutorial, la verdad tenia unas dudas con respecto a los esquemas de xml pero ahora entiendo un poco mejor. Muchos exitos.

  3. fatty
    2006-04-24 - 06:59:47 AM

    Esta muy bueno el tutorial... GRacias por ponetlo en la red...