19 Información de referencia de SGML para HTML

Nota: Este documento es parte de una traducción al castellano de la Recomendación del W3C "HTML 4.01 Specification" (más información). Puede consultar la versión original del mismo. Para cualquier comentario o corrección acerca de la traducción póngase en contacto con el traductor en jrpozo@conclase.net. Gracias por su colaboración.

Véase el Aviso de copyright de la traducción.

Contenidos

  1. Validación de documentos
  2. Catálogo SGML de ejemplo

Las secciones siguientes contienen la definición formal SGML de HTML 4. Incluye la declaración SGML, la Definición del Tipo de Documento (Document Type Definition, DTD), y las Referencias a entidades de caracteres, así como un catálogo SGML de ejemplo.

Estos ficheros también están disponibles en formato ASCII según se indica a continuación:

N.T.: Estas son las versiones originales en inglés de los documentos correspondientes.

DTD por Defecto:
strict.dtd
DTD Transicional:
loose.dtd
DTD para Documentos con Marcos:
frameset.dtd
Declaración SGML:
HTML4.decl
Ficheros de definición de entidades:
HTMLspecial.ent
HTMLsymbol.ent
HTMLlat1.ent
Un catálogo de ejemplo:
HTML4.cat

19.1 Validación de documentos

Muchos autores se basan en un conjunto limitado de navegadores para comprobar los documentos que producen, y suponen que si los navegadores pueden representar sus documentos, es que éstos son válidos. Desafortunadamente, esto es una manera muy poco efectiva de verificar la validez de un documento, precisamente porque los navegadores están diseñados para que al encontrar documentos no válidos los representen lo mejor posible para evitar la frustración de los usuarios.

Para una mejor validación, debería comprobar su documento con un analizador SGML tal como nsgmls (ver [SP]), para verificar que los documentos HTML sean conformes con el DTD de HTML 4. Si la declaración del tipo de documento de su documento incluye un URI y si su analizador SGML soporta este tipo de identificador de sistema, obtendrá el DTD directamente. En otro caso puede usar el catálogo SGML de ejemplo que sigue. Éste asume que el DTD ha sido guardado como "strict.dtd" y que las entidades se encuentran en los ficheros "HTMLlat1.ent", "HTMLsymbol.ent" y "HTMLspecial.ent". En cualquier caso, asegúrese de que su analizador SGML es capaz de trabajar con [ISO10646]. Vea la documentación de su herramienta de validación para más detalles.

Tenga muy en cuenta que esta validación, aunque es útil y muy recomendable, no garantiza que el documento sea completamente conforme con la especificación HTML 4. Esto se debe a que el analizador SGML se basa únicamente en el DTD de SGML dado, el cual no expresa todos los aspectos de un documento HTML 4 válido. Más concretamente, una analizador SGML asegura que la sintaxis, la estructura, la lista de elementos y sus atributos son válidos. Pero, por ejemplo, no puede detectar errores tales como dar al atributo width de un elemento IMG un valor no válido (p.ej., "blabla" o "12.5"). Aunque esta especificación restringe el valor de este atributo a "un entero que representa una longitud en píxeles", el DTD sólo lo define como CDATA, que en realidad admite cualquier valor. Sólo un programa especializado podría englobar la totalidad de la especificación de HTML 4.

De todos modos, este tipo de validación sigue siendo altamente recomendable, ya que permite la detección de un gran conjunto de errores que hacen a los documentos no válidos.

19.2 Catálogo SGML de ejemplo

Este catálogo incluye la directriz override para asegurarse de que los programas procesadores tales como nsgmls utilicen identificadores públicos con preferencia sobre los identificadores de sistema. Esto significa que los usuarios no deben estar conectados a la Web para obtener los identificadores de sistema basados es URIs.

OVERRIDE YES

PUBLIC "-//W3C//DTD HTML 4.01//EN" strict.dtd
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" loose.dtd
PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" frameset.dtd
PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML" HTMLlat1.ent
PUBLIC "-//W3C//ENTITIES Special//EN//HTML" HTMLspecial.ent
PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" HTMLsymbol.ent