Cuando no existían ordenadores, la forma de referenciar en la edición de textos los atributos de formato era mediante una notación específica, desarrollada ex profeso. Se trataba de marcas añadidas a un documento original para indicar algún tipo de información. Para definirlas se utilizó un tipo de sintaxis u otra, según el caso. Se imponía por tanto desarrollar un mecanismo más o menos definido para desarrollar las marcas necesarias. Para distinguir dichas marcas del resto del texto original, se incluyen dentro de unos símbolos de uso poco frecuente dentro de los textos normales, por ejemplo:
Este texto es #neg#una prueba#neg#
La universalidad de los lenguajes de marcas utilizados, exige la utilización de una sintaxis común, que permita su compatibilidad y su correcta interpretación. Una simple lista de marcas no es suficiente. Para excluir la utilización de marcas contrapuestas es necesario definir las reglas de jerarquía que deben tener las marcas entre sí. Estos dos aspectos, a saber,
- definir las marcas y
- definir la jerarquía de utilización entre ellas,
son lo que precisamente lleva a cabo XML. La informática permite la utilización de lenguajes de marcas muy estructurados. En base a este conjunto de consideraciones surge SGML, como lenguaje que permite a su vez definir lenguajes de marcado.
SGML, Standard Generalized Markup Language, no es por ello un lenguaje de marcado, sino un lenguaje que permite definir lenguajes de marcas, como HTML. Surge en 1986, y se trata de una norma ISO, siendo por lo tanto un estándar.
SGML es por otra parte un lenguaje muy potente, que permite desarrollar todas las funcionalidades del mundo editorial, al que en un principio se dirigía. Desarrollado inicialmente por Goldford (IBM), fue posteriormente estandarizado por la agencia internacional ISO. Sin embargo, su gran potencia es quizás su principal desventaja fuera del mundo editorial y de las grandes empresas. En 1998 surge XML como una versión simplificada de SGML. La filosofía de SGML se basa en dos principios básicos:
- El entorno del documento, en el que hay que distinguir: contenido, estructura y
- Independencia de La distinción que se establece en el entorno del documento, ha de establecerse con independencia de la plataforma.
En un lenguaje de marcado, el contenido es el contenido original que va a ser marcado, mientras que la estructura se verá reflejada en una serie de etiquetas o marcas alusivas al tipo de contenido. El tratamiento sería por su parte los diversos usos que podemos realizar con el documento marcado: imprimirlo, hacer búsquedas por texto u otros parámetros, enviarlo, convertirlo a otro formato, etc.
En cuanto al tratamiento, si bien SGML permite la posibilidad de implementar atributos relativos al tratamiento en las etiquetas de la estructura, es aconsejable no hacerlo, desde la perspectiva de separar los tres aspectos del entorno del documento mencionados anteriormente, en este caso la estructura del tratamiento. Hay por ello que tratar de evitar definir atributos de tratamiento dentro de las etiquetas, como hace por ejemplo HTML, ya que ello va contra los principios que rigen la filosofía de SGML y por extensión la de XML.
Esta separación es fácil de implementar en HTML, ya que al tratarse de etiquetas fijas, es posible referenciarlas fácilmente desde un archivo externo de definición de atributos de tratamiento (CSS). En XML, al no tratarse de un conjunto de etiquetas o marcas fijas, sino reglas para definirlas, con una semántica de utilización limitada, no se define de ningún modo el tratamiento de las mismas. En SGML y por extensión en XML, el tratamiento se define:
- A través de un programa realizado mediante un lenguaje de programación de propósito
- Mediante el estándar ISO DSSSL, que permite pasar XML a otro tipo de lenguaje más adecuado para la presentación de los
La independencia de plataforma se garantiza en SGML ya que sólo implementa caracteres ASCII, entendibles por cualquier plataforma y por cualquier editor de texto. Los caracteres ASCII garantizan por tanto una mayor perdurabilidad de los datos.
El desarrollo de SGML se basa en el uso de lo que se conoce como gramáticas independientes de contexto, que permiten desarrollar lenguajes de programación y lenguajes de definición de lenguajes de marcado.