Breve explicativo sobre el funcionamiento y terminología de DocBook.

Esta sección está dedicada sólo para aquellas personas nuevas en la composición tipográfica de documentos utilizando DocBook. Dado que el funcionamiento de la herramienta DBTexMath está muy relacionado con los procesos de composición y publicación de los documentos DocBook, nos parece que el lector merece el contenido de esta sección. Así, llegado el punto, no estará obligado a manejarse sólo con terminología vacía, sino que podrá entender, o al menos hacerse una idea de, de qué se habla. Así es como aquel lector que no esté interesado en estos aspectos bien puede saltear el contenido de esta sección.

A continuación se muestran dos breves esquemas de los procesos por los que pasan los archivos fuentes DocBook SGML y XML, respectivamente, para llegar a formatos de salida como PDF, HTML, PostScript, etc.

Figura 1. Formateo de un archivo SGML-DocBook

Figura 2. Formateo de un archivo XML-DocBook

Un pequeño comentario respecto a los esquemas anteriores: Es posible procesar un archivo DocBook XML a través de las hojas de estilo DSSSL con openJade. Esto se debe, en un principio a que XML es un subconjunto de SGML.

Puede decirse que el formato DocBook fue creado gracias a los meta-lenguajes de etiquetas SGML y XML[1]. ¿Qué es un meta lenguaje? Son básicamente lenguajes para la creación de otros lenguajes. Tanto en el caso de SGML o XML, estos se basan en el uso de la etiqueta. Una etiqueta es todo aquel conjunto de caracteres encerrado entre los símbolos < y >. En el caso de SGML, este lenguaje sólo define reglas básicas sobre el uso y anidación de etiquetas. Por ejemplo, se encuentra explícito en el lenguaje que cada etiqueta debe tener una etiqueta de final correspondiente y que la anidación de etiquetas debe ser perfecta, lo que significa que las etiquetas internas deben ser cerradas antes de las etiquetas externas. Por supuesto, las definiciones SGML son mucho más complejas que esto, pero básicamente esas son las reglas principales.

Dadas estas reglas básicas, todo lo demás se deja a discreción de quien programa en el meta lenguaje. Este tendrá que crear los nombres para las etiquetas, sus parámetros y las reglas específicas de anidación de estas etiquetas (i.e qué etiqueta puede estar dentro de qué otra).

DTD Document Type Definition . Ahora ya podemos definir lo que es una DTD. Si cualquiera puede realizar su propio lenguaje de etiquetas con SGML, tiene que haber un modo de poner en vigor las reglas que hemos inventado. Esto es implementado por lo que se denomina como DTD o Definición de Tipo de Documentos. Un DTD define los nombres de las etiquetas, el orden legal de las ocurrencias y las reglas de anidación para una implementación SGML particular. A la vez, los DTDs se escriben en SGML y se representan como un simple archivo en el sistema. En especial, DocBook es un DTD que se usa para definir libros y artículos.

DTD son las siglas de "(Document Type Definition", o en español "Definición del Tipo de Documento".

Como hasta ahora hemos venido haciendo, nos sentimos obligados a explicar qué es una hoja de estilo DSSSL (o en inglés DSSSL stylesheet) de las cuales se hablará a lo largo de este documento.

Hojas de estilo (stylesheets). Para componer y validar el documento utilizamos el lenguaje SGML que define, por medio de la DTD DocBook (como ya se explicó), las reglas que se deben respetar para que el documento sea válido, pero nada más. Sin embargo, esta es sólo la mitad del trabajo ya que también podríamos querer publicar nuestro documento. Con publicar nos referimos a obtener salidas en formatos orientados a la impresión (como PDF o PostScript) u orientados a Internet (como el formato HTML) u otros formatos como RTF.

En ningún momento la DTD define qué fuentes, qué espaciado entre párrafos, alineación, etc se usará. Es decir, no hay ninguna información sobre el estilo que se usará para publicar el documento DocBook en una DTD. Tan sólo existen definiciones de etiquetas, y reglas de anidación.

Es aquí dónde entran en juego las hojas de estilo. Éstas, son simples archivos que definen el estilo de la publicación del documento. Es decir, entre otras cosas definen, para cada formato de salida, la fuente y su tamaño utilizada para cada parte del documento, la alineación del mismo en la hoja, el espaciado entre párrafos, la distribución de secciones como el índice, la bibliografía, los apéndices, los pies de nota, etc.

Durante años se ha intentado producir un lenguaje estándar para realizar hojas de estilo. Entre otros se pueden destacar FOSIs[2], DSSSL[3] (lenguaje soportado por Jade, openJade y otras), CSS [4] y XSL[5]. Cabe destacar que el lenguaje DSSSL es parecido a los lenguajes de programación tipo lisp o Scheme, y el lenguaje para hojas de estilo XSL es el mismo lenguaje XML.

En nuestro caso, supondremos que el usuario usa un sistema DocBook basado en SGML y no en XML y que el lenguaje utilizado para sus hojas de estilo es DSSSL. En este caso, el último paso de la publicación de documentos es utilizar una herramienta como Jade o openJade, que interpreta el lenguaje DSSSL de la hoja de estilo y toma como entrada un documento SGML. Si le indicamos el tipo de salida deseado, esta herramienta nos lo proporcionará.

Para usuarios con experiencia en programar con lenguajes como C, el proceso de composición y publicación tipográfica puede parecer análogo al de programar. Nuestro documento *.sgml sería nuestro código fuente C, la DTD sería lo análogo al lenguaje C (las reglas de sintaxis que se deben respetar para que el documento-programa sea válido y que describen cada etiqueta-estructura) y las hojas de estilo junto con las herramientas de publicación como Jade, openJade, JadeTeX podrían verse como el compilador C. Cualquiera de las salidas ya sean PDF, HTML, RTF, etc podrían ser vistas como el archivo ejecutable compilado.

A continuación expondremos otro esquema más, visto desde el punto de vista de los lenguajes y no de los procesos que intervienen en la composición y publicación de un documento DocBook.

Notas

[1]

Aunque el término meta-lenguaje no es incorrecto, hace más fácil al usuario entender el cómo se define sintácticamente DocBook. Sin embargo, formalmente se dice que tanto "SGML como XML son estándares internacionales que describen cómo definir lenguajes de etiquetas" (mark-up languages)

[2]

"Markup Requirements and Generic Style Specification for Electronic Printed Output and Exchange of Text" (Especificación de los requerimientos de marcado y estilo genérico para la publicación electrónica e intercambio de textos). Fue el primer lenguaje para producir hojas de estilo y fue creado por el Departamento de Defensa de Estados Unidos para estandarizar su documentación militar.

[3]

El segundo lenguaje para hacer hojas de estilo. Fue creado por ISO (International Organization for Standarization) y su nombre proviene de "Document Style Semantics and Specification Language" (algo así como "Lenguaje de Especificación y Estilo Semántico de Documentos").

[4]

Es un tipo de lenguaje de estilo adjunto, en un principio pensado para HTML, pero actualmente también pensado para XML. Fue creado por W3C CSS Working Group.

[5]

Extensible Style Language (Lenguaje de Estilo Extensible. Fue creado por el proyecto XML.