Ir directamente al contenido de esta página

codexexempla.org

Breve introducción a SGML y su relación con HTML. Motivos de la sustitución de SGML por XML, y la reformulación de HTML sobre este último

Tabla de contenidos

  1. ¿Qué es SGML?
  2. ¿Qué es HTML?
  3. ¿Qué es XML?
  4. ¿Por qué XHTML?

¿Qué es SGML?

Cuando tenemos un documento en soporte físico y lo convertimos en información digital, sobre lo que es su contenido añadimos una capa de metainformación comprensible para las máquinas que van a procesar ese contenido.

En un principio, esos metadatos consistían en códigos de control o macros que especificaban el formato de ese contenido para una aplicación concreta, por lo que se conocían también por «código específico». Para permitir la interoperabilidad de los documentos era necesario un «código genérico», que no dependiese de la aplicación, al menos en teoría.

De aquí surgió el concepto de lenguaje de marcado, un método de añadir por medio de etiquetas genéricas información al contenido de un documento. Uno de los padres de este concepto, Charles Goldfarb inventó en 1969 el primer lenguaje de marcado junto a sus compañeros Edward Mosher y Raymond Lorie del Almaden Research Center de IBM: GML. Además de coincidir con las iniciales de sus apellidos, GML significa Generalized Markup Language, Lenguaje de Marcado Generalizado, y además de la idea de marcar textos con etiquetas añadía dos conceptos importantes: la definición formal del tipo de documento, y la estructura de elementos anidados.

Posteriormente, en 1978, el ANSI creó un comité de Lenguajes de Ordenador para Procesado de Texto —Computer Languages for the Processing of Text—, para desarrollar como un estándar GML, y en 1980 publicaron un borrador de SGML, Standard Generalized Markup Language, Lenguaje Estándar de Marcado Generalizado, y en 1986 ya se aprobó como ISO 8879.

Así, SGML se convertía en un lenguaje para marcar textos para medios electrónicos, y que podía restringirse para generar lenguajes específicos para fines específicos. Algunas de sus aplicaciones más conocidas son PostScript o RTF, pero sobre todo HTML.

Puede encontrarse más información en la página de recursos sobre SGML del W3C (inglés).

¿Qué es HTML?

Cuando Tim Berners-Lee desarrolló el funcionamiento de Internet, desarrolló paralelamente el lenguaje con el que habrían de ser marcados los documentos científicos para sus transmisión por la red y para su interpretación en los navegadores. Así, junto a una comunidad de colaboradores, y en especial junto a Dave Raggett, creó una aplicación de SGML a la que llamó HyperText Markup Language, Lenguaje de Marcado de HiperTexto, y cuya especificación de HTML (inglés) es de noviembre de 1992, donde se recogían los elementos básicos para el marcado de textos.

A esta especificación siguieron otras:

Todas estas especificaciones recogen cuestiones sobre definición del tipo de documento HTML, notas sobre sintaxis y estructura, listas con las definiciones de elementos y atributos, y otras cuestiones técnicas.

Como desarrolladores, nos interesa saber que en cada recomendación se recogen los elementos válidos para el marcado de nuestros documentos web, y también que se indican aquellos que en sucesivas versiones van a ser excluidos. También es importante señalar que originalmente apenas hay elementos que identifiquen la presentación del documento, sino que básicamente los elementos expresan la estructura del documento o la naturaleza semántica del texto marcado.

Por desgracia, con el éxito de Internet en los 90 la aplicación de HTML se vio afectada por dos males endémicos:

  1. El primer mal era intrínseco, y era su flexibilidad a la hora de permitir inconsistencias de marcado, como cierres de elementos ausentes, anidación incorrecta o falta de elementos estructurales.

    Puede parecer que esto es una ventaja para el desarrollador, pero no lo es para el agente de usuario. Este documento, por ejemplo, es válido en HTML 4.01 en su versión más estricta, aunque no he incluido los elementos estructurales del documento y apenas he cerrado las etiquetas. Con ello, obligo a que el navegador tenga que realizar un trabajo de desambiguación: revisa los elementos, y cuando ya no encuentra ninguno de los que son propios de un encabezado —como meta o title—, implícitamente asume el cierre de head y la apertura de body. Además, para los elementos del contenido, para cada uno debe inferir su extensión buscando la siguiente etiqueta de apertura.

  2. Peor que el anterior fue el desarrollo de código propietario1 por parte de los principales desarrolladores de navegadores, en lo que en los manuales se recoge como la browser war, o «guerra de los navegadores», que involucró a Internet Explorer y Netscape Navigator.

    Aprovechando lo recogido en la especificación de HTML 2 sobre el manejo de errores de marcado no declarado (inglés) —que aconseja que los navegadores ignoren simplemente los elementos de marcados que no coincidan con la especificación—, para hacerse con un mayor sector del tráfico web los programadores de estos dos navegadores comenzaron a ofrecer a los desarrolladores elementos y atributos que permitían un mayor control de la presentación de las páginas web2. Las empresas y sus diseñadores abrazaron encantados esta posibilidad, con lo que la creación de nuevos elementos siguió una pronunciada curva.

Las consecuencias se sufrieron a mediados y finales de los 90 y pricipios del nuevo siglo:

Se necesitaba, por tanto, un medio de volver más estricta la sintaxis de HTML, y por otro un mecanismo que pudiese contrastar un documento con las gramáticas públicas definidas para establecer su validez. Justo esas características son las que poseía XML.

¿Qué es XML?

XML es descendiente del propio SGML, creada por Jon Bosak, Tim Bray, C. M. Sperberg-McQueens, James Clark y otros, que pretendía ser como éste un lenguaje de marcado general, pero liberado de aquellas características redundantes, difíciles de implementar, confusas o inútiles, comprobadas después de veite años de su aplicación. Su desarrollo comenzó en 1996, y actualmente existen dos versiones:

La sintaxis de XML es mucho más estricta que la de SGML, y al igual que éste, puede especificarse un esquema o una DTD para convertirlo en una aplicación XML. Y eso es justo lo que nos lleva al último punto de esta introducción, la reformulación de HTML como una aplicación XML.

¿Por qué XHTML?

El objetivo en mente del W3C al convertir el viejo HTML en una aplicación de XML era acabar con los dos problemas que comentábamos arriba:

¿Es esto lo que hacen o van a hacer los navegadores? Bueno, es la idea, pero aún hay una serie de limitaciones, como veremos al tratar de las DTD en la sección de la capa de estructura de un documento web.

Lo importante de todo esto es que el W3C pretendía dotar al lenguaje de marcado de documentos web de la consistencia de XML, y salvarnos del caos de los años noventa. Así, ha desarrollado varias versiones de XHTML, aunque manteniendo los elementos de HTML para no forzarnos a tener que aprender un nuevo lenguaje. Veremos esas versiones brevemente más adelante.

Y así, con esta visión general, no parece mala idea aprender algo de XML para comprender después más profundamente lo que es XHTML.

Además, no duele.

Notas

  1. Por código propietario se entiende un elemento o atributo HTML que no está reconocido por el W3C en ninguna de sus especificaciones, y que por lo general sólo soporta el navegador para el que se ha creado. Un ejemplo es embed, una etiqueta empleada para incrustar objetos en un código creada para Netscape Navigator, que Internet Explorer no comprende. Volver
  2. Si repasamos las especificaciones de la 2.0 hasta la 4.01, las etiquetas que hacen referencia a la estructura —h1, p, blockquote, code, etc.— apenas han variado en los últimos doce años. Lo que sí ha variado, e incrementado exponencialmente, han sido las etiquetas y atributos que tienen que ver con la presentación de los contenidos de los documentos —font, border, etc.—. El W3C incluyó en sus especificaciones esa caterva de marcado en un intento de imponer orden marcándolos como depreciados, además de para desarrollar una DTD que pudiera dar cuenta en el futuro de los documentos antiguos de la Red. Volver

Contacto

En virtud de la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal le informo de que los datos que proporcione no serán empleados para otro fin que el de responder a su mensaje. En especial, me comprometo a no cederlos a terceros ni a emplearlos para enviar información no solicitada.

Del blog de Digital Icon