XML validado con DTD de HTML

La validación de un documento XML utilizando DTD's requiere dos pasos.

Declaración en el Documento XML

Debe ser definido en la parte superior del archivo XML el DTD que será empleado:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html SYSTEM "html.dtd">

<html>

El parámetro !DOCTYPE siempre es utilizado para declarar DTD's, mientras el elemento que le sigue corresponde al nodo raíz del documento, en otras palabras el primero que en este caso corresponde a html, mientras que html.dtd es el DTD a emplearse; la ubicación del DTD es en el mismo directorio de trabajo que el archivo XML, aunque también es posible indicar otro directorio de residencia utilizando /(*/slashes/*).

Hasta este punto si es procesado el documento , la única validación que es llevada acabo es la de "Well Formdness" y que el DTD exista en el directorio indicado, para que sea llevada acabo una validación completa "Fully Validated" es necesario pasar unos parámetros de configuración al parser.

Modificación del Parser para utilizar DTD's

Las modificaciones al parser son llevadas acabo através de parámetros al momento de ser inicializado, si recuerda del programa procesando XML vía SAX esta inicialización fue llevada acabo através de SAXParserFactory (parte de JAXP) , para activar la validación completa es necesario definir el siguiente parámetro:

SAXParserFactory factory = SAXParserFactory.newInstance();
         factory.setValidating(true);

Para DOM resulta el mismo caso , es cuestión de agregar lo siguiente:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
         factory.setValidating(true);

El comportamiento "default" de Xerces 2.0 y de casi todos los parsers XML es únicamente realizar una revisión de "Well-Formdness" y no validar vía el DTD , la razón de este diseño es que la utilización de DTD's no siempre esta contemplada ( a pesar de ser una buena decisión de diseño) y seria innecesario generar errores solo por no ser declarado un DTD, además con el surgimiento de "Schemas" no se puede asegurar que tipo de validación será utilizada en el documento por ende permanece desactivada la "validación completa".("Fully-Validated")

Menú Curso

XML y sus Orígenes

Manipulación y Proceso de XML

DOM, SAX y JDOM

Namespaces, Schemas y DTD's

XSL: XSLT, XPath y TraX

XMLRPC y SOAP (Web Services)

Diseño con XMLRPC

Diseño con SOAP .

Apéndice "A" (Procesando XML con parsers).

Apéndice "B" (Validando XML con Schemas y DTD's).

Apéndice "C" (XSL: XPath y "XSL Stylesheets").

Apéndice "D" (XMLRPC: Diseño).

Apéndice "E" (SOAP, WSDL, UDDI y WSIL : Diseño).