sábado, 23 de agosto de 2014

XML con C# (C1A3): Validación de Documentos XML con Esquemas y Definición de Tipo de Documentos

Índice

0. Introducción
1. Validación de Documentos XML
2. Validación con DTD
3. Validación con Esquema
4. Conclusiones
5. Glosario
6. Literatura & Enlaces

0. Introducción

En el artículo XML Reglas de la Gramática de XML estudiamos la composición de documentos XML a partir del uso de reglas de la gramática general para la creación correcta de este tipo de documento. Vimos que a diferencia de otros lenguajes derivados de SGCML, como HTML, XML no permite la omisión de etiquetas. Este tipo de adherencia a una gramática nos asegura la correcta formación de documentos (o well formed). Además de esta operación, estudiaremos un mecanismo de validación de las partes integrales (elementos, atributos, por ejemplo) de un documento XML; precisamente eso es lo que haremos, a modo de introducción, a lo largo del desarrollo de este artículo.

1. Validación de Documentos XML

Si lo que queremos es crear un documento XML que además de corresponder con las reglas de la gramática de este lenguaje de marcado, entonces el siguiente paso, y quizás más imporante, es el de validar su estructura. La validación consiste en crear documentos que sigan las reglas de una estructura de datos (e.g., un cliente con sus atributos básicos: nombre, apellido, dirección de correo electrónico, dirección); esto va a permitir que diferentes usuarios del documento XML puedan coincidir con la misma estructura sin la omisión o adición de nuevos atributos no requeridos o simplemente no admitidos por la parte que impone las reglas de validación.

Validar un documento XML, inclusive, responde a preguntas como:
  • ¿Cuál estructura se debe seguir para componer un documento de determinado tipo?
  • ¿Cómo garantizo que los demás programadores o sistemas generadores de archivos XML sigan la estructura impuesta para un documento XML?
Sencillamente, el proceso de validación se realiza siguiendo una de estas dos soluciones, cada una con sus desventajas y ventajas (las cuales trataremos a fondo en futuras entregas):
  • Document Type Definition (DTD), y 
  • Esquemas de documentos XML
Proceso de validación de un documento XML
Figura 1. Proceso de validación de un documento XML.

2. Validación con DTD

De acuerdo con [2] DTD (Document Type Definition) comprende un conjunto de declaraciones de lenguaje de marcado para la definición de un tipo de documento basado en SGCML (XML, HTML). La definición comprende, como se ha mencionado, el tipo de documento, es decir, su estructura. Esta estructura nos dice cuales bloques de construcción (elementos, atributos, valores, &c.) estarán permitidos sobre un documento XML que pretendamos editar.

Continuando, las reglas de composición o de validación podrán estar embebidas dentro del mismo documento XML o en un archivo externo. Esta última modalidad facilita la administración, pues sigue el enfoque de división y conquista.

Ahora, en breve veremos un ejemplo de uso para validar la composición de un documento XML para la estructura de datos Empleado.

El siguiente paso, una vez definida la estructura para Empleado, es componer un documento XML que emplee esta estructura:

Archivo XML Empleado.xml [enlace alternativo]:

Notemos cómo en la línea 2 referenciamos al archivo EmpleadoDefinicion.dtd como fuente de las reglas de validación del documento XML actual.

Para validar este archivo XML utilizaré una herramienta online XML Validation [4]:
Demostración de validación con DTD.
Figura 2. Demostración de validación con DTD.

3. Validación con Esquema

A pesar de que DTD constituye un método de validación apropiado y útil existe una alternativa que como se menciona en [1] tiene mayores ventajas: Esquema XML (o en inglés, XML schema). Esta alternativa de validación consiste en una descripción de los tipos permitidos en un documento XML. Esta descripción incluye las restricciones de las estructuras de datos además del contenido de estas.

Además, como mencionan en [5], las restricciones son expresadas en términos de las reglas gramaticales (cfr. Reglas de la Gramática de XML), predicados booleanos (lógicos), tipos de datos permitidos y sus atributos, entre otras reglas de integridad referencial entre tipos. Veamos un ejemplo de definición de un archivo de esquema:

Aquí podemos destacar a simple vista que este archivo de definición para la validación de un documento XML que incluya tipos Empleado, resulta más natural e intuitivo (independiente de su extensión); pues sigue las convenciones de declaración de un archivo XML en lo que se refiere a sus reglas de gramática.


[Nota: En futuras entregas discutiremos las ventajas de este tipo de validación frente al uso de DTD.]

4. Conclusiones

Hemos estudiado los conceptos básicos de validación de documentos XML. A modo de introducción aprendimos que existen dos métodos de validación: DTD y XML schema. Mostramos ejemplos de uso de estos dos resaltando algunas diferencias superficiales (seguro en un futuro cercano profundizaremos en aspectos más complejos de las diferencias para resaltar las ventajas existentes entre estos dos métodos de validación). En el próximo artículo XML estudiáremos a modo de introducción el proceso de parsear (parsing) de un documento XML.

5. Glosario

  • DTD
  • Esquema
  • Estructura de datos
  • HTML
  • SGML
  • Validación
  • XML

6. Literatura & Enlaces

[1]: Beginning XML with C# 2008 From Novice to Professional by Bipin Joshi. Copyright 2008 Bipin Joshi, 978-1-4302-0998-0.
[2]: Document type definition - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/Document_Type_Definition
[3]: XML DTD - http://www.w3schools.com/xml/xml_dtd.asp
[4]: XML Validation: XML Validation - http://xmlvalidation.com/index.php?id=1&L=0
[5]: XML schema - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/XML_schema
[6]: XML con C# (C1A2): Reglas de la Gramática de XML | OrtizOL - Experiencias Construcción Software (xCSw) - http://ortizol.blogspot.com/2014/08/xml-con-csharp-c1a2-reglas-de-la-gramatica-de-xml.html


J

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.