Capitulo 2: Publicación XML en InDesign: Estudio de Caso del Catálogo Universitario

 Muchas personas ven a InDesign principalmente como una herramienta de maquetación para diseños gráficos altamente estilizados, ricos en color y controles tipográficos. Algunos usuarios también importan datos en tablas o exportan contenido de InDesign a HTML. InDesign CS tiene plena capacidad para realizar todas estas tareas, pero si alguien se interesa por XML, usualmente es porque han escuchado algo como: "Necesitamos usar XML para poder crear páginas web y PDFs a partir del mismo contenido". Tal vez la organización ya esté utilizando XML para su sitio web y alguien haya descubierto que InDesign puede trabajar con XML. O quizás alguien que ha usado InDesign se pregunta cómo extraer el contenido de una manera que un servicio web u otra aplicación pueda utilizarlo.

Aunque InDesign ofrece funcionalidades útiles de importación y exportación de XML, Adobe no lo considera una característica destinada a los usuarios típicos. Sus demostraciones se centran en plantillas de tarjetas de presentación y libros de recetas; crear XML que coincida con lo que otra aplicación o proceso utiliza no es el foco de sus ejemplos. Sin embargo, Adobe ha provisto numerosas características en InDesign para importar, crear y exportar XML.

Para aprovechar al máximo las capacidades XML de InDesign, es importante pensar en los problemas más amplios de los procesos que tienes en marcha, el flujo de trabajo que facilitará estas tareas y si necesitas crear XML a partir de contenido que ya tienes en InDesign (es decir, exportar XML), crear documentos de InDesign a partir de XML (es decir, importar XML), o realizar ambos procesos (es decir, importación/exportación bidireccional de XML).

Como ejemplo, utilizaré un proyecto real que necesitaba tanto la importación como la exportación: un catálogo de cursos universitarios. Este catálogo consta de varios capítulos, que incluyen temas como:

  • - Información general sobre la universidad, su historia, énfasis del programa y calendario académico.
  • - Ayuda financiera, criterios de admisión y el proceso de aplicación.
  • - Programas de estudio.
  • - Descripciones de cursos.
  • - Servicios estudiantiles, manual de reglamentos y políticas y procedimientos.
  • - Listado de facultad y personal, directorio y mapas del campus.

De estos capítulos, algunos datos de ayuda financiera, las descripciones de los cursos y los programas de estudio se almacenaban en tablas de base de datos. El contenido de la base de datos se publicaba directamente en el sitio web de la universidad como páginas HTML utilizando Páginas de Servidor Activo de Microsoft (ASP). El resto del contenido era creado por miembros del personal que enviaban documentos de Word al maquetador de InDesign; estos documentos no existían en la base de datos como entradas de texto.

Los archivos de InDesign se utilizaban principalmente para la salida impresa, un catálogo en papel encuadernado. El objetivo era hacer de la base de datos una "fuente única", siendo el sitio web y el catálogo impreso dos salidas del mismo contenido. Para sincronizar los procesos actuales, el contenido en InDesign se añadiría a la base de datos, y el contenido de la base de datos se pasaría a InDesign.

Nos enfrentamos a dos tipos diferentes de contenido en el catálogo: algunos se podían asignar ordenadamente a filas y celdas en una base de datos, y otros eran más narrativos o estaban organizados en temas. Cada tipo de contenido necesitaba su propio proceso de análisis y diseño para lograr la importación/exportación de XML. Los problemas clave y las soluciones propuestas fueron:

  • - El contenido de la base de datos se extraía como texto plano (separado en párrafos) y se entregaba al maquetador en un archivo .txt grande. El maquetador importaba el texto plano y luego tenía que marcar cada párrafo con el estilo de párrafo de InDesign correcto. Dado que aproximadamente dos tercios del contenido del catálogo estaban en la base de datos, esto significaba que el maquetador tenía que marcar manualmente más de 130 páginas del catálogo. La solución propuesta era proporcionar el contenido de la base de datos al maquetador de tal manera que se formateara automáticamente al importarlo en InDesign.
  • - Todo el texto sobre admisiones, políticas, registro, reglamentos y personal se creaba en documentos de Word. Estos documentos se importaban como material fuente para el catálogo de InDesign. El texto luego se editaba en InDesign y finalmente se añadía a la base de datos y al sitio web mediante operaciones de copiar y pegar desde archivos RTF exportados desde InDesign. Había problemas con recibir los cambios a tiempo y errores en la edición que llevaban a diferencias en los textos resultantes. La solución propuesta era proporcionar la salida a los desarrolladores de la base de datos y del sitio web de tal manera que pudiera importarse como bloques de texto enriquecido pero que aún tuvieran algún significado semántico que ayudara en la localización y reutilización del mismo. Tras la importación inicial en la base de datos, el programador de la base de datos proporcionaría un formulario web para la edición, de modo que la base de datos sería la "fuente única" continua para este contenido.

Ambos procesos involucraban las capacidades XML de InDesign, como verás.

El programador de la base de datos y el maquetador de InDesign proporcionaron su opinión sobre cómo veían el contenido, cómo trabajaban con él y qué problemas encontraban al intercambiar el contenido entre las dos aplicaciones. El personal editorial del catálogo también contribuyó con su opinión sobre cómo revisaban y hacían correcciones al catálogo durante el proceso de publicación.

Ejemplo de Contenido Similar a Datos: El XML de Descripciones de Cursos

La tabla de datos que contenía las descripciones de los cursos era una de las más grandes en la base de datos. Cientos de descripciones de cursos se gestionaban en ella, conteniendo datos en un formato regular, como se muestra en la Tabla 2-1.

Tabla 2-1. Campos de la base de datos para las descripciones de cursos

CampoDescripción
ÁreaContabilidad
Código del CursoACC 101
Nombre del CursoPrincipios de Contabilidad I
Créditos4
DescripciónPrincipios básicos de contabilidad financiera para empresas, con énfasis en la valoración de activos empresariales, medición del ingreso neto y técnicas de doble entrada para registrar transacciones. Introducción al ciclo de trabajo contable, preparación de estados financieros y procedimientos de ajuste y cierre. Cuatro horas de clase.
NotasRequisito: MTH 098 o MTH 130 o equivalente.

Publicación XML en InDesign: Estudio de Caso del Catálogo de Cursos Universitarios

En InDesign, deseábamos que el contenido apareciera como en la Figura 2-1. Se definieron cuatro estilos de párrafo en InDesign para el contenido:

- Descripciones de Cursos — Mayor

Encabezado para la especialidad a la que pertenece el curso.

- Descripciones de Cursos — Nombre 

 Texto en negrita para el número del curso, el nombre oficial y los créditos otorgados, todo en una sola línea.

- Descripciones de Cursos — Texto 

  Texto normal para la descripción del curso, como un párrafo.

- Descripciones de Cursos — Nota al pie 

  Nota al pie en cursiva, que incluye prerrequisitos, limitaciones para la inscripción, aprobaciones necesarias y similares. Puede haber más de un párrafo de notas al pie para un curso.

Nombrar todos los estilos de párrafo con el mismo prefijo ayuda a agruparlos en la paleta de estilos de párrafo de InDesign.

Exportación de Datos como XML

Cuando exportamos el contenido de descripciones de cursos desde la base de datos, combinamos algunos de los campos de datos (el nombre y número del curso y los créditos se convirtieron en un solo elemento, con tabulaciones separando los valores) para alinear mejor con lo que sería el diseño en InDesign. El Ejemplo 2-1 muestra cómo se escribieron los elementos de una descripción de curso en nuestro XML.

Ejemplo 2-1. Estructura XML de muestra basada en campos de base de datos

<CourseDescription_Major>Contabilidad</CourseDescription_Major>

<CourseDescription_Name>ACC 101&#9;Principios de Contabilidad I&#9;4 Créditos</CourseDescription_Name>

<CourseDescription_Text>Principios básicos de contabilidad financiera para la empresa, con énfasis en la valoración de activos empresariales, medición del ingreso neto y técnicas de doble entrada para registrar transacciones. Introducción al ciclo de trabajo contable, preparación de estados financieros y procedimientos de ajuste y cierre. Cuatro horas de clase.</CourseDescription_Text>

<CourseDescription_Footnote type="prereq">

Prerrequisito: MTH 098 o MTH 130 o equivalente.</CourseDescription_Footnote>

```

El contenido de "Notas" de la entrada de la base de datos para un curso se nombró `<CourseDescription_Footnote>` para que se reconociera como un tipo específico de nota. `<CourseDescription_Footnote>` se le asignó un atributo llamado `type`, que se usa generalmente como indicación de un prerrequisito para el curso, si lo hay. Este enfoque permitió buscar notas que pertenecen a prerrequisitos dentro del contenido XML.

Modelando la Estructura para el XML de Importación

Se generó un DTD simple para los datos de descripciones de cursos a partir del XML que extraímos de la base de datos. Todos los elementos de descripción del curso se agruparon en un elemento raíz llamado `CourseDescriptions`:

<?xml version="1.0" encoding="UTF-8"?>

<!-- DTD generado del contenido XML de la base de datos usando XML Spy -->

<!ELEMENT CourseDescriptions (CourseDescription_Major* |

CourseDescription_Name* | CourseDescription_Text* |

CourseDescription_Footnote*)+>

<!ELEMENT CourseDescription_Major (#PCDATA)>

<!ELEMENT CourseDescription_Name (#PCDATA)>

<!ELEMENT CourseDescription_Text (#PCDATA)>

<!ELEMENT CourseDescription_Footnote (#PCDATA)>

<!ATTLIST CourseDescription_Footnote

type CDATA #REQUIRED>

```

Podríamos haber envuelto la estructura básica de cada curso con todos sus campos dentro de un elemento llamado `<CourseDescription>`, pero InDesign trabaja mejor con XML que no tiene muchos niveles de jerarquía de contenido. Así que arbitrariamente simplificamos esta estructura para facilitar el trabajo al maquetador de InDesign.

Con un DTD simple y un entendimiento de la estructura básica de XML y los estilos de párrafo que íbamos a usar en InDesign, nuestro trabajo de preparación para esta importación estaba completo. Profundizaremos en los detalles de la importación y la asignación de estilos de párrafo más adelante. (Si deseas entender mejor los DTDs, busca "fundamentos de XML DTD" en línea).

Contenido Temático: El XML del Manual

Necesitábamos invertir el proceso cuando queríamos exportar el XML de InDesign para introducirlo en la base de datos. Comenzamos observando el contenido en InDesign, pensando en cómo íbamos a almacenarlo en la base de datos y diseñando el marcado XML que lograría nuestros objetivos.

Evaluando el Texto del Manual para Estructurarlo

El texto en el manual estaba organizado en temas:

  • - Derechos y libertades de los estudiantes
  • - Código de conducta
  • - Procedimiento de quejas
  • - Regulaciones de estacionamiento
  • - Políticas sobre alcohol y drogas

Algunos de estos temas incluían muchos subtemas, algunos incluían procedimientos, y algunos incluían tablas de referencia o ilustraciones. Comparado con el contenido de la base de datos, este contenido era mucho más libre y difícil de predecir, por lo que la estructura XML tenía que ser más genérica.

Para hacer un XML que fuera útil para el flujo de trabajo específico de este colegio, determinamos que haríamos que cada tema principal de texto fluyera hacia un archivo XML, que se convertiría en un blob de texto enriquecido en la base de datos (porque esa sería la forma más editable del contenido para los futuros ciclos de edición).

Modelando la Estructura como un Conjunto de Temas

El contenido generalmente se editaba como una única "historia" o flujo de texto en InDesign. Algunos de estos eran lo suficientemente pequeños y simples como para ser convertidos en una estructura muy superficial: un elemento `<Story>` que contenía un elemento `<IntroBlock>` opcional, al menos un `<SectionHead>`, algunos `<SubsectionHead>s`, `<Subhead>s`, y `<para>s` y elementos opcionales `<listitem>` y `<table>`. El contenido más complejo podría incluir varios temas dentro de una historia, con los mismos encabezados básicos, párrafos, listas y tablas dentro de un tema.

Decidimos que el contenido generalmente no debería tener más de tres niveles de profundidad dentro de una historia o un tema.

Nuestra estructura básica para estos tipos de contenido se captura en un diagrama de árbol como se muestra aquí:

Story

@name

↳ IntroBlock

↳ para

↳ SectionHead

↳ SubSectionHead

↳ Subhead

↳ keyword

↳ para

↳ keyword

↳ listitem

↳ Table

↳ Cell

↳ keyword

↳ topic

@title

↳ para

↳ keyword

↳ listitem

↳ keyword

↳ Table

↳ Cell

Estrategias de Nombramiento y Atributos en el Diseño XML para InDesign

Usamos nombres de estilos de párrafo existentes para algunos elementos, manteniendo su capitalización, como `<SectionHeading>`, mientras que todos los elementos más genéricos fueron escritos en minúsculas, como `<para>`. Esto facilitó recordar cuáles nombres de elementos provenían del diseño de InDesign.

Algunos elementos y atributos fueron diseñados para ayudarnos a gestionar o buscar el contenido después de la exportación. Hay un atributo, `name`, para un elemento `<Story>` que nos ofrece un indicativo sobre el tipo de información contenida en una Historia, como "Programas de Carrera y Transferencia, Certificados y Asesoramiento". Un atributo similar, `title`, se utilizó en un elemento `<topic>`, para que pudiéramos identificar la información en un tema incluso si no tenía un encabezado visible. El elemento `<keyword>` podría usarse dentro de un elemento `<Subhead>` o `<para>`.

No tuvimos que ser muy rigurosos en el desarrollo de nuestra estructura. Elegimos nombres bastante genéricos y aplanamos estructuras para las cuales pensamos que los "elementos contenedor" no serían necesarios. Por ejemplo, no envolvimos un conjunto de elementos `<listitem>` dentro de un elemento `<list>`. Aunque tal enfoque es común en HTML, sería innecesario en la etiquetación de texto en InDesign, donde queremos la correspondencia más cercana posible entre los elementos entrantes y la cantidad de estilos de párrafo que usaremos. (Adobe tiene una estrategia similar en cuanto a las tablas, habiendo decidido prescindir de los elementos `<Row>` y usar solo los elementos `<Table>` y `<Cell>`).

Con esta estructura básica convertida en un DTD, estábamos listos para comenzar a marcar contenido en InDesign como XML y validarlo.

Iteración y Refinamiento

No obtuvimos la estructura que usamos en el primer intento. Las primeras versiones de la estructura XML eran más granulares (tenían más pequeños elementos dentro de los niveles `<topic>` y `<para>`) y tenían muchos más "elementos contenedor". Probamos importando XML con diversas estructuras y diferentes configuraciones del diálogo de Opciones de Importación para ver qué resultados obteníamos en InDesign. Si los resultados no nos gustaban, cambiábamos la estructura y probábamos de nuevo. Cuando terminamos este proceso, generé un DTD a partir de nuestro XML final y usé ese DTD para validar el contenido.

En el Capítulo 8, verás por qué prefiero ir con el mínimo de reglas estructurales y desarrollar DTDs después de crear ejemplos de trabajo del contenido (si estás "creando tu propio" DTD). En el proyecto de ejemplo, solo teníamos que asegurarnos de que una persona de maquetación de InDesign y un desarrollador de bases de datos pudieran entender cómo crear, gestionar e intercambiar un conjunto específico de elementos de contenido.

Resultados Netos: Mejoras Significativas en Comprensión y Velocidad

Nuestro proyecto logró numerosos éxitos. Entre los más significativos estuvo la mejora en la comprensión de la base de datos por parte del grupo editorial y un mayor entendimiento por parte del equipo de la base de datos sobre el proceso de publicación. Dado que la mayor parte del trabajo consistía en pasar contenido de la base de datos a la aplicación de publicación a través de XML, el programador de la base de datos estuvo profundamente involucrado en entender cómo el maquetador percibía el contenido y qué tareas necesitaba realizar con él.

Además de la mejora en la comprensión entre los grupos funcionales, también hubo una mejora muy importante en el tiempo de entrega para el maquetador. Se le proporcionó un breve tutorial sobre la importación de XML y ajustó los nombres de los estilos de párrafo antes de importar el XML. A partir de entonces, donde antes había pasado días (literalmente) marcando las 130 páginas de párrafos de texto plano, ahora podía importar todo el contenido en unos minutos, observarlo autoformatearse al ingresar y luego revisarlo página por página, aplicando saltos de columna y de página según fuera necesario. El tiempo estimado ahorrado en la maquetación manual de las 130 páginas fue de aproximadamente el 80 por ciento.

El texto que se exportó como XML desde InDesign fue marcado por un proveedor externo para minimizar el impacto en el ciclo de producción del catálogo. El programador de la base de datos fue nuevamente una persona crucial en el éxito del cambio de proceso; él descubrió cómo hacer que la base de datos (que no almacenaba XML de forma nativa) importara XML y lograra un conjunto útil y editable de nuevas piezas de contenido dentro de la base de datos.

Nuestro proyecto se extendió durante un ciclo de publicación de un año, y celebramos reuniones regulares y usamos un wiki para ayudar a rastrear el progreso y documentar el proyecto. Considero que fue un piloto exitoso de los procesos que estoy describiendo en este libro. El proceso ha estado en uso durante siete años (hasta 2012), y los desarrolladores del colegio han podido ajustar el proceso sin dificultad.


Comentarios

Entradas populares de este blog

Efecto Agua con Adobe Photoshop

Efecto código binario en Adobe Photoshop

Tutorial: Introducción a la Terminología y Sintaxis Básica de JavaScript en Adobe Acrobat