Arxiu d'etiquetes: XML

Importar taules xml a InDesign conservant el format

Arran d’un debat obert per la Cristina Mallafré al LinkedIn, m’ha semblat interessant plantejar un exemple on es mostri, a grans trets, el procés que ens permet crear una taula i etiquetar-la per tal d’utilitzar-la en un flux de treball amb xml.

La idea és tenir una plantilla en InDesign on importarem un xml que haurem generat en una font externa. En el cas de la Cristina era un catàleg de productes que es maquetava automàticament a partir d’un xml generat des d’una base de dades. En aquest exemple ens centrem en els estils de paràgraf i de cel·la, al final de l’article faig un esment als estils de taula.

Primer pas: definir l’estructura

Partim del nostre disseny a InDesign, en el qual tenim una taula on hem aplicat estils de paràgraf i estils de cel·la. Ens interessa diferenciar entre tres tipus de cel·la: la de títol, la de la descripció i la dels valors. Hem anomenat els estils de paràgraf p_descripcio, p_titol i p_valor, i els estils de cel·la c_descripcio, c_titol i c_valor.

taula-inicial

Després hem etiquetat els paràgrafs i les cel·les. Hem creat les etiquetes amb els mateixos noms que els estils. A la següent imatge podem veure els elements etiquetats (menú Ver > Estructura > Mostrar marcadores de etiquetas).

etiquetes-estils

I el resultat al panell d’Estructura (menú Ver > Estructura > Mostrar estructura):

estructura

Com que no hem etiquetat ni la caixa de text ni la taula, InDesign fa servir les etiquetes que té per defecte (en aquest cas Artículo i Tabla) per etiquetar-les.

Exportem l’xml

El següent pas serà exportar l’xml per obtenir l’estructura que caldrà replicar quan generem l’xml amb les dades definitives. En el cas de l’exemple seria:

xmlDocBrut

InDesign exporta el text compacte, però podem indentar-lo per entendre’l millor (podem fer la transformació amb un editor o a través d’un servei online com el de codebeautify.org). Cliqueu sobre la imatge per ampliar.

xmlDoc

Què podem observar al codi?

  1. Les etiquetes que hem creat al nostre document es converteixen en els elements de l’xml. Podem veure la similitud amb el panell d’Estructura d’InDesign.
  2. InDesign declara l’espai de noms xmlns:aid=”http://ns.adobe.com/AdobeInDesign/4.0/” per treballar amb taules. La declaració es pot fer també en un nivell superior o en l’element arrel.
  3. Per identificar un element de taula fa servir l’atribut aid:table. El valor de l’atribut “table” indica la taula; el valor “cell” indica una cel·la. És a dir, podem posar el nom que vulguem a l’element i, per tant, a l’etiqueta de la cel·la, perquè Indesign entendrà que és una cel·la a través de l’atribut.
  4. Finalment, podem veure la informació sobre les files, les columnes i l’amplada de la cel·la.

Aquests són els elements que necessitarem quan es generi l’xml.

El punt clau: assignació d’etiquetes a estils

Quan importem l’xml al document, InDesign carrega l’estructura i afegeix les dades o les combina segons les opcions d’importació. Però l’xml no porta informació sobre el format de les dades.

El que necessitem fer és relacionar les etiquetes amb el format que ens interessa. I això ho fem a través de l’opció d’assignació d’etiquetes a estils (menú desplegable del panell Estructura o del panell Etiquetas > Asignar etiquetas a estilos…). Podríem fer-ho manualment però com que hem creat les etiquetes amb els mateixos noms que els estils podem utilitzar el botó Asignar por nombre.

Automàticament els estils que tinguin el mateix nom que les etiquetes queden relacionats, tant si es tracta d’estils de paràgraf com de cel·la.

estils-assignats

L’assignació només cal fer-la un cop si no eliminem ni afegim estils o etiquetes. El document guardarà la relació entre les etiquetes i els estils. D’aquesta manera, cada cop que importem xml amb les etiquetes definides al document i amb els estils assignats, la taula agafarà el format que ens interessa.

Addenda: aplicar estil de taula

Tot i que no forma part de l’exemple, cal dir que també es pot assignar l’etiqueta de la taula a un estil de taula, de manera que quan importem l’xml la taula tingui les propietats que haguem definit a l’estil. Usualment farem servir tant l’estil de taula com els de cel·la per tenir un màxim control sobre el contingut.

Quan una taula pot ser definida totalment amb un estil de taula no caldria que les etiquetes de les cel·les tinguessin un nom diferent perquè l’estil de taula s’encarregaria d’aplicar el format necessari. No obstant això, l’etiquetatge diferenciat pot ser útil si hem de fer servir altres eines o si necessitem un script per recórrer l’estructura de l’xml.