HTML, SGML, XHTML, XML...

Probablemente hayas leído que HTML es una aplicación de SGML, y probablemente no sepas muy bien qué significa eso. También habrás leído sobre otros lenguajes más "exóticos" como XHTML y XML, y probablemente también te estarás preguntando qué son exactamente.

SGML y HTML

SGML significa Standard Generalized Mark-up Language, algo así como Lenguaje Generalizado Estándar para el Formato de Documentos ("mark-up" es un término de imprenta que significa el conjunto de instrucciones estilísticas detalladas escritas en un manuscrito que debe ser tipografiado). Es un estándar internacional que permite definir lenguajes para dar formato a documentos (mark-up languages). Por ejemplo, el HTML, es un lenguaje de formato de documentos definido de acuerdo con SGML (o en otras palabras una aplicación de SGML) para dar formato a documentos de hipertexto.

El HTML es un lenguaje muy simple. El formato de los documentos se marca mediante etiquetas (tags) que indican el comienzo y el final de los elementos que componen el documento. Cada uno de estos elementos tiene un significado estructural diferente. Por ejemplo, el elemento p contiene un párrafo de texto. El comienzo del párrafo se marca con la etiqueta <p> y el final del párrafo se marca (opcionalmente) con la etiqueta </p>. El elemento h1 contiene un encabezado (por ejemplo, el título de un capítulo) y está delimitado por las etiquetas <h1> y </h1>. El elemento a indica un hipervínculo (o más concretamente el origen o el destino de un hipervínculo, según cómo se marque en el documento), etc.

En teoría, el código HTML sólo contiene por tanto información sobre la estructura de los contenidos. Si escribimos, por ejemplo, el siguiente párrafo:

<p>Esto es un párrafo.

Aunque haga un salto de línea, seguirá siendo un párrafo.</p>

se representará como un solo párrafo; porque así es como está marcado, como un párrafo. En tu navegador se representa así:

Esto es un párrafo. Aunque haga un salto de línea, seguirá siendo un párrafo.

La simplicidad del HTML es un punto a su favor: como los contenidos están estructurados de manera lógica, pueden ser representados de acuerdo con esa estructura por cualquier navegador, según sus capacidades. Él mismo se encargará de escribir los títulos con un tipo más grande que el de los párrafos, de poner el espacio entre párrafos, de dibujar los marcadores de las listas, de dibujar las líneas entre las celdas de una tabla, etc., sin que nosotros tengamos que preocuparnos de esos aspectos.

Sin embargo, los documentos así obtenidos carecen de atractivo visual. Hoy es posible utilizar hojas de estilo para especificar la apariencia de los elementos, pero durante varios años ha sido necesario recurrir a trucos y a elementos inventados para ello: por ejemplo, el elemento font para cambiar la fuente de un elemento, la utilización de tablas para colocar los elementos en la pantalla en lugar de para contener datos tabulares, o la división de un mismo documento en marcos. Todo ello introdujo rápidamente problemas: el HTML se complicó y los documentos se hicieron menos accesibles: los navegadores más antiguos ya no eran capaces de entender la estructura de los nuevos documentos al estar ésta mezclada con los elementos presentacionales. De hecho los documentos perdieron su estructura, lo cual era la base misma del HTML.

La última especificación de HTML, la HTML 4.01 de 1997, declaró todos los elementos presentacionales como desaprobados, es decir, en riesgo de ser declarados como obsoletos en próximas especificaciones, de modo que los nuevos navegadores no se verían obligados a soportarlos. En su lugar, deberían utilizarse hojas de estilo.

SGML y XML

Como hemos visto, desde su creación, el HTML ha ido aumentando su complejidad para responder a las demandas de los usuarios de la Web. Al principio era suficiente para los físicos nucleares para los que iba a servir, pero hoy los documentos HTML tienen gráficos, animaciones, música; cada día llega a tecnologías diferentes (dispositivos portátiles, teléfonos móviles) y algún día se convertirá en una Web realmente interactiva. El lenguaje de la Web necesita seguir evolucionando.

XML es una respuesta a esta necesidad. XML no es un nuevo lenguaje que vaya a suplantar a HTML. En realidad es, como el SGML, un lenguaje para definir lenguajes. Es una versión de SGML, más sencilla y más fácil de aplicar que el SGML, diseñada precisamente para hacer frente a los problemas de compatibilidad y adaptabilidad de las nuevas tecnologías a Internet.

XML significa "Extensible Mark-up Language". En XML no hay elementos. Cada usuario (o grupo de usuarios) puede crear su propio lenguaje para el formato de datos y documentos, su propio vocabulario, según sus necesidades, siguiendo las reglas de XML. Por ejemplo, si quieres crear una lista de libros, puedes definir tus propios elementos, encerrados entre las etiquetas correspondientes: <titulo>, <autor>, <precio>, <editorial>, etc. A partir de ahí, podrías definir una hoja de estilo para definir la presentación de cada tipo de elemento en un navegador visual o en una salida impresa; pero también podrías utilizar una aplicación (tal vez una de las muchas aplicaciones ya existentes para el manejo de documentos XML) para buscar libros por autor, para ordenarlos, etc. Si por ejemplo quisieras vender tus libros por Internet podrías utilizar estas aplicaciones para permitir a tus clientes realizar búsquedas y hacer pedidos.

Por supuesto, la idea no es que cada usuario se cree su propio lenguaje, sino que haya estándares generales, y que se escojan los apropiados combinándolos entre sí si es necesario. La extensibilidad se refiere precisamente a eso. Hay muchos lenguajes definidos de acuerdo con las reglas de XML (aplicaciones XML). Por ejemplo, DocBook es un lenguaje para el formato de libros electrónicos. MathML es un lenguaje para el formato de ecuaciones matemáticas. En DocBook hay un elemento para párrafos (<Para>). En MathML hay definidos elementos útiles para las fórmulas matemáticas, como sumatorios (<sum>), exponenciales (<exp>), etc., pero no hay un elemento para párrafos.

Esto permite crear lenguajes específicos para cada aplicación o para cada tecnología, lo cual finalmente puede simplificar las cosas. Por ejemplo, los teléfonos móviles tienen una capacidad de procesamiento mucho menor que la de los ordenadores personales. Como el HTML es demasiado complicado para ellos, se desarrolló un nuevo lenguaje simplificado llamado WAP específico para teléfonos móviles. Desgraciadamente, WAP no es una aplicación XML. En el futuro se espera que los teléfonos móviles soporten XML, pero esto va a suponer esperar un tiempo de adaptación que se podría haber evitado. Vemos aquí un ejemplo de cómo los estándares pueden ayudar a facilitar la adaptación de nuevas tecnologías a la Web.

XML y XHTML

Si con XML se pueden definir lenguajes para formato de documentos, ¿se podría definir HTML como aplicación de XML? Sí. Es más, ya lo hicieron, y lo llamaron XHTML 1.0. El XHTML 1.0 es exactamente igual que el HTML 4, excepto en que sigue las reglas de XML, que son más estrictas que las de SGML. Por ejemplo, en HTML el elemento p no necesita la etiqueta final </p>. En XHTML sí: todos los elementos necesitan una etiqueta inicial y otra final. En HTML puedes escribir <p> o <P>, no importa. En XHTML, las etiquetas tienen que ir obligatoriamente en minúsculas.

Como ves, son diferencias formales. Las capacidades de XHTML 1.0 son exactamente las mismas que las de HTML 4.

¿Es necesario entonces escribir las nuevas páginas en XHTML? Realmente no, no va a haber ninguna diferencia. El XHTML fue en el fondo la forma que tuvo el W3C de dar entender que habían decidido apostar por la implementación de XML.

Pero ése es el motivo de fondo por el que el W3C creó XHTML: el posibilitar en el futuro la modularización del HTML. Hemos visto que para algunas aplicaciones conviene definir un subconjunto simplificado del HTML; para otras podría ser interesante ampliarlo con nuevas capacidades. Una solución es dividir el HTML en partes o módulos independientes y que cada navegador tome los que necesite según sus capacidades: un módulo de texto, un módulo de imágenes, un módulo de scripts, un módulo de formularios, etc.

Hoy XHTML ya es modular. Es de esperar que en el futuro existan aplicaciones que permitan crear fácilmente documentos XHTML, utilizando los módulos necesarios. Pero HTML no va a desaparecer de golpe. Los millones de páginas web que existen hoy son HTML. Los navegadores seguirán entendiendo HTML. La modularización de XHTML se ha hecho con vistas a las nuevas tecnologías, y hasta que no haya editores capaces de crear documentos eficientemente, no deberíamos preocuparnos en exceso. Sin embargo las cosas evolucionan muy rápido, así que nunca está de más mantenerse al día.

Más información

© 2001-2003, Juan R. Pozo