
SGML o Standard Generalized Markup Language fue definido por la norma
ISO 8879
en 1986 y desde entonces ha sido considerado el lenguaje estándar para mantener los depósitos centrales de
la estructura documental. Se trata de un lenguaje
para marcar y describir documentos con independencia total del hardware y software utilizados.
En
los años 60, IBM intentó resolver los problemas asociados al tratamiento de
documentos en diferentes plataformas a través de GML (Generalized markup
Language), se trataba de encontrar un lenguaje normalizado basado en tratar
las marcas como texto accesible desde cualquier sistema ya que, hasta entonces,
cada aplicación utilizaba sus propias marcas para
describir los diferentes elementos y era imposible pasar información de un
sistema a otro sin perder el formato original. Las marcas son códigos que indican a
un programa cómo debe tratar su contenido y así, si se desea que un texto
aparezca con un formato determinado, dicho texto debe ir delimitado por la
correspondiente marca que indique cómo debe ser mostrado en pantalla, cómo debe
ser impreso o cómo debe ser almacenado.
Y lo mismo ocurre con todas las demás características de cualquier texto.
En 1978 el Instituto Nacional Americano de
Normalización (ANSI) empezó a trabajar en las especificaciones para los
procesadores de textos y el resultado fue el lenguaje SGML que, en 1986, pasó a
manos de la ISO y se convirtió en la norma 8879, SGML
(Standart
Generalized Markup Language).
Los
lenguajes de marcas no son equivalentes a los lenguajes de programación aunque
su definición como "lenguajes" induzca a confusión. Se trata de sistemas complejos de
descripción de información, normalmente documentos que, si se ajustan a
SGML,
se pueden controlar desde cualquier editor ASCII. Las marcas más utilizadas
suelen representarse por textos descriptivos encerrados entre los signos de
"menor" (<) y "mayor" (>), siendo lo más usual que
existan una marca de principio y otra de final.
Un lenguaje de marcas o
de etiquetado no es lo mismo que un
lenguaje de marcas generalizado. Con un lenguaje de marcas se describen las reglas
para el procesamiento de un texto, para describir los diferentes caracteres y
sus características de impresión. Un lenguaje de marcas generalizado, por el
contrario, no
especifica cómo deben verse las cosas o el proceso que se ha de realizar, sino
que provee información sobre la estructura del
documento e identifica las partes lógicas y el tipo de elementos que constituyen
el documento.
Al hablar de los
lenguajes hipertextuales, ya hemos establecido las
diferencias entre los 2 tipos básicos de los
lenguajes de marcado diferenciando el
etiquetado
procedimental del etiquetado
descriptivo.
El etiquetado descriptivo
identifica los elementos estructurales de un documento, determinando su
estructura lógica. Así, el lenguaje SGML utiliza un conjunto de caracteres que
se basan en el estándar
ASCII (American Standard
Coding for the Interchange of Information), que puede ser reconocido por cualquier tipo de plataforma y de sistema informático. Los caracteres especiales, que no están contemplados en el conjunto de
caracteres ASCII se transforman en representaciones
ASCII y se denominan referencias
de entidad. SGML subordina el etiquetado a los aspectos lógicos de la estructura de los documentos.
partiendo del criterio de que existe una relación directa entre cuestiones
como el cambio de tipografía y una cabecera, la utilización de la cursiva
para resaltar un término, el dibujo de un recuadro con un gráfico, etc. En SGML todo el etiquetado es lógico, es decir, se utilizan
"nombres de elementos" en vez de caracteres aleatorios, delimitados por marcas
que indican el comienzo y final de los objetos lógicos. Estos
delimitadores permiten que el software reconozca qué caracteres deben ser leídos en modo de
"etiqueta" o "marca", y
qué otros como "contenido".
La potencia de SGML
radica en dos aspectos fundamentales: por un lado, permite que se definan
lenguajes de marcas de forma independiente y, por otro lado, facilita el
intercambio y conservación de documentos y recursos digitales estructurados.
Así pues, SGML no es
un lenguaje de marcas en sí mismo, sino un metalenguaje o marco general para la
descripción de lenguajes de marcado, particularmente aquellos usados en el
intercambio electrónico, manejo y publicación de documentos. Por ejemplo,
HTML es un
ejemplo de un lenguaje definido en SGML, se trata de una simplificación de SGML
ya que la complejidad de éste hacía que este lenguaje no fuera apropiado para la
Web. En realidad, HTML es una DTD
(descripción del tipo de documento) de SGML utilizado para documentos en
la Web.
El
HTML original no era completamente compatible con SGML, ya que poseía algunas
deficiencias sintácticas a cambio de una mayor simplicidad. Ahora, las ventajas en la
compatibilidad, como la validación, la utilización de herramientas
basadas en SGML y la capacidad de interactuar, han sobrepasado a las
desventajas y HTML2 se ha convertido en el nivel común en la mayoría de los
navegadores. La compatibilidad con la
Web reside en la estandarización de los datos, no en las aplicaciones.
SGML es un estándar internacional, no propietario y abierto,
que provee un método para la descripción de la estructura de documentos
basándose en la relación lógica de sus partes. Provee una codificación estándar
para la transmisión de documentos entre sistemas de computación diferentes como
distintas plataformas, diferentes soportes físicos y lógicos, distintos sistemas de
almacenamiento y presentación, con independencia de su grado de complejidad.
El lenguaje SGML debe utilizarse cuando existan algunas de las siguientes condiciones:
- Cuando exista la necesidad de intercambiar documentos entre diferentes
sistemas de computación o de edición.
- Cuando los documentos tengan una larga vida de uso.
- Cuando sea fundamental la estructura de un documento.
- Cuando se utilice una base de datos para el almacenamiento y recuperación
de los elementos del documento.
Cuando se concibe un documento en SGML se debe tener en cuenta
que:
-
El material que constituye un documento se puede distribuir en diferentes
archivos, tantos como sean necesarios. Estos archivos, además, pueden estar
almacenados en un sistema distribuido en varios ordenadores. Un archivo puede contener la portada,
otro la introducción, otro una parte de una hoja de cálculo, otro un gráfico,
otro un organigrama, otro la bibliografía, etc.
-
En SGML, cada uno de estos objetos recibe el nombre de entidad. Las
entidades se conciben como objetos independientes.
-
Las entidades pueden tener cualquier tamaño, haber sido creadas por
cualquier programa de software o estar almacenadas en cualquier
ordenador.
-
Las entidades pueden ser compartidas por distintos documentos.
-
Un documento estará definido en función de la estructura de las entidades
que lo conforman.
-
En el índice de materias de un documento no se encontrará ninguna
referencia a los archivos que contienen las entidades.
-
Las entidades se organizan en una estructura lógica de manera
jerarquizada, en la que se definen conceptos como capítulos, tablas y párrafos
y que configuran lo que se denomina estructura de los elementos del documento.
-
Elementos y entidades pueden coincidir: un elemento lógico como tabla
puede ser también una entidad en un archivo hoja de cálculo.
Un documento SGML se marca de tal modo que no dice nada respecto a su
representación en la pantalla o en papel. Un programa de presentación (filtro)
debe unir el documento marcado con un esquema de estilo, a fin de producir una
representación impresa en la pantalla o en papel del contenido del documento. Con SGML se pueden definir varias características que dependan de las
necesidades de cada documento:
SGML
es un estándar internacionalmente aceptado que soporta diferentes tipos de
contenido, así como la estructuración lógica del documento. Como su propio
nombre indica, constituye un lenguaje y una notación para la descripción de
clases de documentos. Un documento codificado según este estándar se
estructura en una serie de elementos (párrafos, subsecciones, apéndices,
figuras, etc.) delimitados con "strings"o cadenas de caracteres comúnmente llamados
"tags" o marcas.
Un documento SGML se compone de tres partes o
archivos:
- Declaración SGML
- Declaración de tipo de documento (DTD)
- Instancia de Documento
La declaración SGML
caracteriza la DTD y, por tanto, las instancias de documento (que incluyen el
contenido propiamente dicho) que se generen a partir de ella, en términos de
conjunto de caracteres usados y otros puntos opcionales de SGML. Esta
declaración puede ser omitida, en cuyo caso se asumen unos grupos de caracteres
por defecto y ninguna característica opcional.
Una clase de documentos tiene
en común una gramática que define el marcado permitido en esa clase, el marcado
requerido, y cómo debe ser utilizado dicho marcado en la instancia de documento.
El estándar define esta gramática mediante la DTD. SGML no especifica
ningún conjunto particular de elementos; el conjunto de elementos que pueden
utilizarse se define en la DTD. También existe la posibilidad de hacer referencia a una DTD
pública, mezclar definiciones originales con la DTD pública o generar una DTD
original. La DTD es necesaria.
La
instancia de documento lleva, pues, el contenido estructurado según el marco definido
en la DTD y con las características fijadas por la declaración SGML. Sin
embargo, SGML presenta un inconveniente importante: no permite incorporar
información de apariencia (layout) del documento. Para solventar esta carencia
ha sido desarrollado otro estándar, el Document Style and Semantics
Specification Language (DSSSL).
Veamos con más detenimiento
las 3 partes de que consta un documento SGML.
La declaración SGML
La declaración SGML dice al usuario qué puede y qué no puede estar contenido
en el documento SGML, qué caracteres serán usados, qué características
específicas de SGML serán implementadas, y qué sintaxis se utilizará en el
documento. Se trata de un diagrama formal y normalizado que le indica al sistema
receptor el conjunto de caracteres, los delimitadores y las características
opcionales de SGML que se están utilizando. La declaración SGML y la DTD trabajan de forma conjunta. Si la declaración SGML
dice que una función en particular no podrá ser usada, la DTD debe respetarlo,
de otra manera existirán errores en el documento. La declaración SGML puede ser
parte de la Muestra de Documento. La declaración SGML es necesaria para cada
documento SGML que se transmite y también puede utilizarse desde cualquier
ubicación considerada no local. A través de la declaración SGML se identifican
de manera inmediata los parámetros para la marca generalizada contenida en la DTD.
Sin embargo, la declaración SGML suele omitirse cuando tanto el sistema emisor
como el receptor utilizan la sintaxis por defecto o una sintaxis de referencia
concreta.
La DTD
En la DTD (Document Type Definition o Definición del Tipo de Documento) se
identifica la estructura del documento, esto es, aquellos elementos que son
necesarios en la elaboración de un documento o un grupo de documentos
estructurados de manera similar. Contiene las reglas de dichos elementos: el
nombre, su significado, dónde pueden ser utilizados y qué pueden contener. Si la DTD se almacena en un archivo separado
(con la extensión .dtd), éste se puede referenciar sin residir
dentro del documento SGML, porque es corriente que se sustituya la DTD completa por una línea que indique que la
DTD se edita como un texto público o se encuentra ya disponible en el
sistema receptor. Sin la DTD ( o una referencia a él), el documento
SGML no será validado apropiadamente por el "parser". El parser es una herramienta
que asegura la adecuada conformación de SGML dentro de las múltiples
especificaciones que un documento SGML puede tener. Un documento no será validado por el
parser si no cumple con las
especificaciones de la DTD, por ejemplo, si carece de título, ya que éste es un elemento
obligatorio.
Las definiciones de los elementos -denominadas formalmente "declaraciones de
elementos"- tienen dos funciones: por un lado, dar un nombre formal a las
etiquetas y, por otro, describir lo que cada elemento puede contener -el
denominado "modelo de contenido"-. El nombre formal aparecerá dentro de los
delimitadores, por ejemplo: <capitulo> que será el nombre formal con el que nos
refiramos a un capítulo.
He aquí un ejemplo de definición de la DTD:
| <!ELEMENT DOCUMENTO - - (titulo, contenido, autor?) >
<!ELEMENT CONTENIDO - - (capitulo+) >
<!ELEMENT CAPITULO - (subtitulo, parrafo?) |
Lo que está situado dentro de los paréntesis especifica qué puede o debe contener el
elemento y es llamado el contenido del modelo. Es obligatorio que haya un título
y un contenido, pero es opcional que tenga autor. Dentro de CONTENIDO
puede haber uno o más capítulos, que a su vez también es otro elemento que
contiene subtítulo y párrafos. En este ejemplo puede verse claramente que existe una estructura
organizada y jerárquica.
En la definición del tipo de documento o DTD (Document Type
Definition) se utilizan los comandos ELEMENT, ENTITY y
ATTLIST. El comando ELEMENT sirve, a su vez, para definir una
etiqueta. Con el comando ENTITY se pueden indicar ciertos elementos del texto en forma
de sucesiones de caracteres ASCII y también utilizar dentro del texto los
caracteres reservados para la sintaxis de SGML, como los signos 'menor que' o
'mayor que'. El comando ATTLIST permite establecer atributos complementarios
para determinados elementos concretos. Todos los atributos pertenecientes a un
elemento se resumen aquí en una sola lista en la que se establecen los nombres
de los atributos, así como los valores autorizados de cada atributo.
Otro concepto importante dentro del SGML y del DTD
es el de secciones marcadas. Una sección marcada se inicia con la secuencia de
caracteres "". Las claves para la especificación de las secciones
marcadas son INCLUDE, IGNORE, CDATA, RCDATA o TEMP.
Otros comandos importantes son USEMAP y
SHORTREF, que sirven para establecer abreviaturas y el comando NOTATION, que
sirve para fijar anotaciones en la llamada hoja de estilo. Y por último el
comando DOCTYPE que sirve para incluir un DTD o para llamar a un archivo con la
extensión .dtd que lo contiene.
Escribir la DTD es una tarea compleja ya que hay que analizar
los documentos, pero también tener se deben tener en cuenta los posibles cambios y
requerimientos futuros: revisiones, borrado de
los documentos, etc. Además, las etiquetas definidas en la DTD servirán
para que editores,
motores de búsqueda y visualizadores interpreten los documentos SGML.
Los documentos no tienen una estructura generalizada, es decir,
cada texto tiene una estructura diferente (por ejemplo, la estructura de un
texto en prosa tiene una estructura muy diferente a la de un poema o a la de un
artículo
científico e, incluso, existen variaciones entre los documentos del mismo
tipo, por tanto, hay que analizar y definir bien la estructura de los documentos
para poder jerarquizar y seccionar adecuadamente las partes que contendrá la DTD.
El documento contendrá, pues, un subconjunto de
la declaración del tipo de documento o conjunto formal
de declaraciones de elementos, atributos y entidades que le indican a un
sistema exactamente el tipo de etiquetado que se utiliza en dicho documento.
Muestra de Documento
La Muestra de Documento contiene el marcado o etiquetado y el contenido del
texto, es decir, contiene el documento en sí que incluye tanto el texto como el
marcado. El contenido del documento tiene objetos SGML que siguen la estructura
del árbol definido en la DTD. Los objetos SGML son principalmente dos: elementos
(insertados como etiquetas y sus atributos locales); y entidades (para caracteres
especiales, texto almacenado y archivos externos).
El siguiente ejemplo es una pequeña muestra de cómo se hace el marcado de
un texto:
<titulo>HIPERTEXTO</titulo>
<autor> MARIA JESUS LAMARCA </autor>
<contenido>
<capitulo>
<subtitulo><EL NUEVO CONCEPTO DE
DOCUMENTO EN LA CULTURA DE LA IMAGEN</subtitulo>
<parrafo> Doctorado: Fundamentos, Metodología y Aplicaciones de las
Tecnologías Documentales y Procesamiento de la Información. </parrafo>
</capitulo>
</contenido>
Intuitivamente podemos distinguir las etiquetas del contenido. Las etiquetas
se distinguen del resto del texto porque están delimitadas por los caracteres < > para abrir y por </ > para cerrar.
Claramente observamos que sólo se divide un documento en partes y no se dice
cómo debe diseñarse cada una de esas partes. Para este efecto debe hacerse
un filtro, u hoja de estilo, un programa que traducirá las etiquetas SGML en
cualquiera de las aplicaciones con las cuales es compatible.
Los delimitadores o etiquetas de inicio y final permiten que
el software reconozca qué caracteres deben leerse en modo etiqueta y
cuáles en modo contenido. Los caracteres básicos utilizados en el lenguaje SGML
vienen descritos en la ISO 8879. Además, de los caracteres < > con el nombre de un elemento en su
interior), si encontramos el signo & seguido por un nombre, y éste a su vez
seguido de un punto y coma, sabremos que se están representando
entidades tales como imágenes gráficas o caracteres especiales.
El
lenguaje SGML ha logrado simplificar estos 3 pasos descritos anteriormente para
construir un documento SGML sin
que tenga que intervenir el usuario pues, en este sistema, cada
componente establece los valores y parámetros para el siguiente componente. El
único etiquetado que aparece ha sido declarado en la DTD y la sintaxis de la
DTD se ha indicado mediante la declaración SGML definida por el estándar. La
ventaja de esta secuenciación de indicaciones es que los ordenadores
pueden seguirla para comprobar si los documentos se adaptan a las reglas
establecidas. SGML, a pesar de ser un lenguaje incomprensible para los seres
humanos, es un lenguaje informático muy preciso ya que un programa llamado parser puede leer la declaración SGML
y aprender sus reglas. A continuación, lee la DTD y aprende las reglas del
marcado y
etiquetado y, finalmente, determina si la muestra de documento cumple dichas
reglas.
El procesamiento de un documento SGML se realiza, pues, de forma automática. La
máquina es quien valida el documento puesto que el parser lee el
documento SGML y separa los datos del etiquetado. Por ejemplo, si el parser detecta
que el etiquetado ha sido minimizado, lo expande. O, si por ejemplo, el
contenido incluye una referencia a una hoja de cálculo o a un gráfico, dará las instrucciones al sistema
para encontrar dichas entidades y que aparezca la imagen de dicho gráfico. Si el contenido incluye
alguna instrucción especial para el sistema de edición en su propio lenguaje
interno (llamada en SGML instrucción de procesamiento), ésta pasará directamente a
la aplicación. O, si por ejemplo, se utiliza el componente de sección marcada y
se ha indicado que algunas partes de su documento no han de aparecer en la
versión editada, el parser sabrá que no tiene que enviarlas, al igual que
si se utiliza el componente de declaración de comentarios para enviar
y recibir una nota o un mensaje entre autor y editor, el "parser" sabrá que
no ha de enviarlo a la aplicación receptora.
Así, pues, SGML es un lenguaje muy potente y flexible para construir
aplicaciones e intercambiarlas de forma independiente. SGML ofrece un enfoque lógico en el
tratamiento de la información, basado en la estructura, los objetos y los
atributos, y va más lejos que las interfaces para índices, plantillas y hojas
de estilo que se suelen utilizar en otros lenguajes.
El estándar SGML, además de dar origen a otros lenguajes tan conocidos
como HTML, ha servido de punto de partida para otros muchos subconjuntos de lenguajes como el
Extensible Markup Language (XML),
publicado como una Recomendación del W3C en 1998. Dependiendo de las
perspectivas y requerimientos, las diferencias entre SGML y XML son nimias o
inmensas. SGML es más flexible y más poderoso que XML, pero más complejo. Ambos, SGML y XML,
son metalenguajes porque se usan para definir
lenguajes de marcas. Un lenguaje de definición de marcas que usa SGML o XML
tiene un vocabulario específico (etiquetas para elementos y atributos) y una
sintaxis declarativa (gramática que define la jerarquía y otras
características).
Cada lenguaje tiene sus propias característica, por ejemplo,
HTML representa estructura y diseño;
XML permite definir etiquetas
propias y representa la estructura definida en la DTD, permite validar el
documento XML, que se concreta en
MathML (para fórmulas
matemáticas), XSL
(para hojas de estilo en XML), SMIL
(para documentos multimedia), WML (para tecnología WAP),
XTM ( para Topic Maps), etc.
RDF sirve para la descripción de
recursos, XHTML es una reformulación de
HTML como aplicación
XML, etc.
Bibliografía:
CLARK's, James. Comparison of SGML and XML.
http://www.w3.org/TR/NOTE-sgml-xml.html
Cover
Pages.
SGML: General Introductions and Overviews.
http://xml.coverpages.org/general.html
Cover Pages. Standard Generalized Markup Language (SGML).
http://xml.coverpages.org/sgml.html
Cover Pages. SGML/XML Special Topics.
http://xml.coverpages.org/topics.html
FAUSEY, John. All my data is in
SGML, Now what?. Journal of the American Society for Information Science,
1997, vol. 7, nº 48.
GAYNOR, Edward. From MARC to Markup: SGML and Online Library
Systemas. Charlottesville, University of Virginia Library, Special Collections.
http://xml.coverpages.org/gaynorMARC96.html
MÉNDEZ RODRÍGUEZ, Eva.
Metadatos y recuperación de información: Estándares, problemas y
aplicabilidad en bibliotecas digitales. Gijón, Trea, 2002.
ISO 8879:1996 Information processing
-- Text and office systems -- Standard Generalized Markup Language (SGML)
http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=16387
|