SGML

  1. Presentación
  2. Un nuevo concepto de información
  3. Dos tipos de contenido: datos y etiquetas
  4. El etiquetado procedimental
  5. Ventajas del etiquetado descriptivo
  6. Cómo son las etiquetas SGML
  7. ¿Cómo funciona SGML?
  8. La declaración de un documento SGML
  9. ¿Cómo se procesa un documento SGML?

Presentación

SGML fue diseñado para permitir el intercambio de información entre distintas plataformas, soportes físicos, lógicos y diferentes sistemas de almacenamiento y presentación (bases de datos, edición electrónica, etc.), con independencia de su grado de complejidad.

Un nuevo concepto de información

Cuando se concibe un documento electrónico en SGML se debe tener en cuenta que:

Dos tipos de contenido

En toda comunicación se pueden distinguir dos niveles de información:

  1. Por un lado, el conjunto de datos que componen lo que tradicionalmente entendemos por contenido,
  2. y por otro, una información más sutil, que se superpone a ese contenido. Esta otra información es la negrita en un libro, el subrayado en un manuscrito, un tono alto de voz en una conversación y se denomina etiquetado (markup).

La función del etiquetado es aportar información que por lo general refleja la estructura jerárquica de un documento, de forma que ayude al lector humano o al ordenador a procesar su contenido.

El lenguaje de etiquetado SGML permite distinguir entre el contenido o datos (compuestos por caracteres de datos, las letras del alfabeto, los números, la puntuación, etc.) y el etiquetado (compuesto por caracteres de etiquetado, los cuales, en este caso concreto, son también letras, números y signos de puntuación.

El etiquetado procedimental

La idea de etiquetar un texto no es nueva.

Hasta fechas muy recientes, los maquetadores de las imprentas marcaban los textos con instrucciones para que el cajista supiera cómo reflejar el diseño, esto es, si los títulos debían aparecer más grandes, en negrita o centrados, los renglones sangrados con una cierta anchura, etc.

Estas instrucciones eran una secuencia de signos ininteligibles para el profano y, muchas veces, solo tenían sentido para la máquina concreta con la que se iba a imprimir.

Las instrucciones podían contener códigos de control específicos que trasladados a otro entorno podían bloquear la composición tipográfica.

Por lo demás de las veces, estas instrucciones, que estaban además intercaladas en el texto, imposibilitaban la reutilización posterior de la información.

Si el texto era revisado con intención de reeditarlo, había que utilizar el mismo sistema de composición, para entonces probablemente obsoleto.

Si se deseaba cambiar el diseño, había que manipular los archivos para modificar todos losa códigos, muchos encriptados u ocultos, como por ejemplo, el efecto de centrar un título escrito en negrita con letra Times Roman de 36 puntos.

La utilización de técnicas informáticas de búsqueda y recuperación globales podían resolver parcialmente el problema, pero a veces ocasionando efectos no deseados.

Las mismas instrucciones pueden aparecer en una amplia diversidad de lugares no relacionados de manera lógica.

Por ejemplo, si se cambiasen a negrita todos los extranjerismos que se hallaban en cursiva en un texto, también se convertirían de manera accidental, aunque automática, todas las referencias de obras en cursiva en la bibliografía, así como cualquier otra parte del texto resaltado con cursiva.

El etiquetado procedimental es esta técnica que estamos describiendo, por medio de la cual un operario utiliza instrucciones crípticas y dependientes del funcionamiento de un sistema determinado para que ejecute una acción, como por ejemplo activar la tipografía, poner en negrita, centrar, etc.

El etiquetado descriptivo por el contrario, identifica los elementos estructurales de un documento, determinando su estructura lógica, de manera que se solucionan muchos de los problemas mencionados.

Ventajas del etiquetado descriptivo

  1. En primer lugar, el estándar SGML utiliza un conjunto de caracteres basado en el estándar ASCII (American Standard Coding for the Interchange of Information), reconocido de manera prácticamente universal por cualquier tipo de plataforma y de sistema informático.
    Los caracteres especiales, que no están contemplados en el conjunto de caracteres ASCII (propios de sistemas de escritura distintos del inglés, símbolos matemáticos, etc.) se transforman en representaciones ASCII y se denominan referencias de entidad.
    Así se evitan otros caracteres especiales o de control.
  2. La segunda mejora tiene que ver con la subordinación del etiquetado a los aspectos lógicos de la estructura de los documentos.
    SGML parte 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, en lugar de utilizar códigos crípticos, se utilizan nombres de elementos, delimiatados por marcas que indican el comienzo y final de los objetos lógicos.

Cómo son las etiquetas SGML

En SGML, las etiquetas se distinguen del resto del texto mediante caracteres de delimitación. Estos delimitadores permiten que el software reconozca qué caracteres deben ser leídos en modo de ETIQUETA, y deben por ello traducirse al lenguaje concreto de composición o tratarse de manera específica, y qué otros caracteres de CONTENIDO deberán ser transferidos posteriormente a la aplicación para su procesamiento.

Delimitadores

Los caracteres utilizados como delimitadores deben elegirse cuidadosamente, ya que no han de aparecer con demasiada frecuencia como parte del contenido de un documento.

El ISO 8879 describe un conjunto de caracteres básicos entre los que se incluyen el paréntesis angular de apertura y de cierre para destacar las etiquetas de inicio (los caracteres < > con el nombre de un elemento en su interior) y el signo & seguido por un nombre, y éste a su vez seguido de un punto y coma para representar entidades tales como imágenes gráficas o caracteres especiales (por ejemplo, &bullet; para un redondelito negro).

¿Cómo funciona SGML?

Cualquier base de datos cuenta con una representación interna que indica, por ejemplo, dónde termina el campo de "nombres" y donde comienza el campo de "direcciones".

Todos los procesadores de texto utilizan algún sistema de codificación interno para marcar cuestiones como la negrita, la cursiva, el sangrado, el centrado, etc. Pero el problema con estos códigos es que cada programa usa un sistema propio, sistemas que incluso cambian de una versión a otra en un mismo programa. Aunque existen programas para convertir, los problemas que esta disparidad ocasiona son considerables.

Etiquetado genérico

En las primeras reuniones del Comité que abordó la creación de SGML, una de las principales cuestiones que se debatieron fue la codificación genérica, esto es, un sistema de códigos universal e independiente de la aplicación, por medio del cual, por ejemplo <P> significara siempre párrafo y <H1> indicara siempre un encabezado de primer nivel. La intención inicial era lograr especificar un conjunto de etiquetas que fueran válidas para un elevado número de documentos.

Sin embargo, a pesar de que el principio de la codificación genérica está bien fundado, la variedad de documentos, así como la diversidad de elementos que contienen, lo hacen prácticamente inabordable.

Se vislumbró además un segundo problema: ¿Qué se hace con los errores? ¿Existe algún sistema por el que el ordenador pueda ayudar a asegurar que se codifican correctamente los nombres de los elementos? ¿Puede ser de utilidad el ordenador en la aún más difícil tarea de comprobar que los usuarios introducen los códigos en los lugares correctos?

Cabecera

Curiosamente, existía una respuesta a ambos problemas, y ésta llegó desde el entorno de la programación informática.

Habitualmente, los lenguajes informáticos proporcionan al programador un conjunto de operaciones básicas "primitivas" que suelen agruparse en un cabecera (heading) que sirve para definir un conjunto específico de instrucciones que utilizará el programa.

Definición de tipo de documento (DTD)

Los miembros del Comité adoptaron exactamente este enfoque. De esta forma SGML no se quedó como un mero conjunto de códigos normalizados, sino que se convirtió en un lenguaje con el que se podía crear una definición del tipo de documento (DTD), mediante la que se definen con precisión aquellos elementos que son necesarios en la elaboración de un documento o un grupo de documentos estructurados de manera similar.

Declaración de elementos

Las definiciones de los elementos -formalmente denominadas declaraciones de elementos- tienen dos funciones:

  1. aportan el nombre "oficial" de las etiquetas (los nombres que aparecerán dentro de los delimitadores, por ejemplo <chapter>);
  2. y describen lo que cada elemento puede contener, el modelo de contenido

Un capítulo se puede definir como algo que comienza con un título, seguido de una serie de párrafos, con subsecciones:

<!Element chapter (chptitle, (para | heading)+) >

El lenguaje SGML proporciona la sintaxis necesaria para realizar esta declaración. Cualquier sistema SGML la reconocería, gracias a la presencia de la marca<!ELEMENT como declaración de un elemento:

La coma significa "seguida por", la barra vertical "o" y el signo de la suma como "uno o más". Los paréntesis facilitan la agrupación, exactamente de la misma manera que lo hacen en cualquier operación aritmética.

El siguiente paso que habría que dar sería declarar los contenidos de los subelementos del capítulo, "chptitle", "para" y "heading". Podemos declarar todos los contenidos de manera conjunta si cuentan con el mismo modelo de contenido. El signo > finaliza la declaración de este elemento.

<!ELEMENT (chptitle | para | heading) (#PCDATA) >

El sistema reconoce la palabra reservada de SGML, PCDATA, dando a entender que "chptitle", "para" y "heading" no tienen ningún subelemento propio. Más bien contienen lo que se denomina datos de caracteres analizados sintácticamente: las letras, los números, la puntuación y los caracteres especiales concretos que constituyen el contenido.

Al llegar a este punto el usuario crearía el documento utilizando el etiquetado declarado en la DTD, acompañado por los delimitadores apropiados procedentes de los datos de los caracteres:

<chapter><chptitle<My Summer vacation</chptitle>

<para>It was a dark night, not stormy at all, no hint of a storm, really ... </para>

<para>A pirate ship appeared on the horizon ... </para> ... </chapter>

Tal y como se puede suponer, las etiquetas que comienzan con el delimitador </ son etiquetas de fin. El contenido del título del capítulo se halla completamente definido entre sus etiquetas de inicio y de fin.

Además de declarar los nombres de los elementos y qué contenidos son permitidos, la DTD también puede incluir una lista de entidades. Dichas entidades representan la codificación de los caracteres especiales, de los puntos negros de adorno y de los archivos externos, con independencia de la máquina que se utilice. Cada sistema las incorporará en la pantalla o en el papel de manera particular.

En algunas ocasiones no existe suficiente información en el nombre de un elemento como para que pueda utilizarse de acuerdo con unas necesidades individuales concretas. Quizás, nuestro usuario ficticio desee que el párrafo de inicio del capítulo sea clasificado como de alto secreto. Un atributo para un párrafo podría definirse de la manera expuesta a continuación:

<!ATTLIST para secrecy (topsec|public) "public">

El "public" entre comillas representa el valor por defecto. Todos los párrafos en los que el usuario no especifique topsec o public, tendrán el valor "public".

<para secrecy=topsec>It was a dark night, not stormy at all, no hint of a storm, really ...

<para>A pirate ship appeared on the horizon ...</>

Adviértase que en algunas ocasiones puede utilizarse la minimización del etiquetado para ahorrar pulsaciones de teclas. (En el ejemplo previo se ha omitido la etiqueta de fin del primer párrafo, ya que la etiqueta de inicio del siguiente párrafo implica el final del elemento del primer párrafo. Además, se ha omitido el nombre del elemento "para" en la secuencia </>). Existen varias técnicas de minimización válidas para las etiquetas de fin, así como para las etiquetas de inicio y para las especificaciones de atributos.

La declaración de un documento SGML

Cuando se le comunica a alguien que se le está enviando un documento SGML, esa persona sabe de antemano:

Gracias a SGML se ha conseguido simplificar todos los pasos. 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 auténtica ventaja de esta secuenciación de indicaciones es que los ordenadores pueden seguirla para comprobar si los documentos se adaptan a las reglas establecidas para ellos mismos. SGML, a pesar de ser un lenguaje incomprensible para los seres humanos, es un lenguaje informático muy preciso. Esto significa que un programa informático -un parser- puede leer la declaración SGML y aprender sus reglas, a continuación leer la DTD y aprender las reglas del etiquetado y finalmente determinar si la muestra de documento cumple dichas reglas.

¿Cómo se procesa un documento SGML?

Se trata de una validación automática realizada por una máquina. Y en la medida en que asegura que el contenido que se está enviando a una base de datos o a una máquina de composición no sufrirá problemas excesivamente graves, no tendrá rivales en el mercado.

La función del parser es leer el documento SGML y separar los datos del etiquetado. El parser detecta cuándo el etiquetado ha sido minimizado y en tal caso lo expande. Si el contenido incluye referencias a una hoja de cálculo electrónica de un capítulo concreto (capítulo 2), y el gráfico del organigrama de otro capítulo (capítulo 6), dará las instrucciones pertinentes al sistema sobre cómo encontrar dichas entidades. Si el gráfico se halla en alguna notación de contenido de datos especial, generada por un programa de diseño de gráficos, el parser lo dispondrá todo para introducir la imagen (en este caso para ser editada). Si su contenido incluye instrucciones especiales para el sistema de edición en su propio lenguaje interno -SGML las denomina instrucciones de procesamiento- éstas pasarán directamente a la aplicación. Si se ha utilizado el componente de sección marcada en SGML y 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. Si se está utilizando el componente de declaración de comentarios SGML para enviar y recibir notas y mensajes entre los escritores y los editores, el parser también sabrá que no ha de enviarlos a la aplicación receptora. Todo esto y más.

Todo esto y más, y lo que es más importante, sin que resulte visible al ojo humano. Esta lista -y se trata tan sólo de parte de lo que un parser y un sistema SGML pueden hacer- describe procesos que pueden llevarse a cabo sin necesidad de que intervenga el usuario, excepto para corregir errores humanos.

En la actualidad está surgiendo una nueva generación de software que vive y respira SGML; que saca partido de la DTD para guiar a los usuarios a la hora de crear documentos que estén bien estructurados; que se sirve de la estructura para dar a los usuarios una funcionalidad que nunca antes habían tenido.

En un futuro no muy lejano, los usuarios encontrarán de gran utilidad toda la información que aparece en este artículo. Las complicaciones ocultas detrás de los interfaces intuitivos no representarán ya un problema al disponer al alcance de su mano de los poderosos y flexibles componentes de SGML.

La posibilidad de exportar archivos SGML facilitará la integración de su software de hojas de cálculo, hipertextos y procesamiento de textos. Esta nueva generación de software trabajará directamente con las DTD y ofrecerá un enfoque lógico con respecto al tratamiento de la información -basado en la estructura, en los objetos y en los atributos- mucho más útil que los interfaces para índices, plantillas y hojas de estilo de hoy en día.

"El intercambio de información independientemente del grado de complejidad" es uno de los principales objetivos de cualquier estándar. Es por ello que un estándar diseñado como un lenguaje para construir aplicaciones tendrá muchas posibilidades de triunfar en el mercado actual.

Por lo tanto, la función de este artículo es presentar los componentes del lenguaje que se utilizan a la hora de diseñar aplicaciones, con el fin de que se conozcan todas las posibilidades que ofrece el estándar SGML.