3.2. El procés de transformació, una visió més a fons.

3.2.1. Transformant arbres, no documents.
3.2.2. Actors que intervenen al procés de transformació.
3.2.3. El model de publicació de DocBook.

3.2.1. Transformant arbres, no documents.

Abans d'aplicar les transformacions indicades a les fulles d'estil XSLT per part del processador XSLT, la informació del document XML s'ha d'extraure de l'arxiu on està en forma de text. Aquesta tasca la realitza l'analitzador o Parser. La funció d'aquest software és de representar la informació de manera estructurada en forma d'arbre, aquesta estructura ve determinada per les etiquetes del llenguatge XML emprat al document font, i aquesta estructura és la que utilitzen diferents elements de la cadena de transformació per representar documents XML.

El llenguatge XSLT defineix les seves operacions en termes d'una representació en forma d'arbre del document XML. Aquesta representació no defineix el tipus de dades ni la API, només és un model conceptual que defineix els objectes en l'arbre, les seves propietats i les relacions que tenen entre sí. Per tant, el model de dades emprat pot variar en la seva implementació, en tant que respecte l'estructura que defineix XSLT.

Tant el document a transformar com les fulles d'estil són representats amb aquesta estructura llògica per tal de ser accedits pel processador. El resultat de les transformacions també està representat d'aquesta manera pel que necessita ser transformat a text. Aquesta tasca la realitza una part del software anomenada serialitzador, que normalment i al igual que l'analitzador formen part del processador.

En la següent imatge podem vore amb més detall la cadena de transformació XSLT

Figura 3.2. Cadena de transformació XSLT, amb API, Parser i arbres lògics.

El Parser o Analitzador tenint com a entrada el document XML i l'esquema associat, dona com a resultat una representació llògica de la informació del document en forma d'arbre, fent-la accessible al processador XSLT mitjançant una API: DOM, SAX o JAXP. El processador aplica les transformacions especificades a la fulla d'estil XSLT, aquestes transformacions accedeixen als elements de l'arbre mitjançant el llenguatge XPath.El resultat final és un document en un altre format XML.


Existeixen diverses implementacions o models de dades d'aquesta representació en forma d'arbre i diferents API's que han de complir tant l'analitzador com el processador per a poder comunicar-se.

Dels models de dades i API's existents, els més importants són:

  • DOM: és un model de dades definit pel W3C a la seva recomanació DOM Level 2 que a més inclou una API.

  • SAX: ha esdevingut un estándar de facte. La principal diferència amb DOM és que aquesta API és interactiva i no cal processar tot el document per a donar l'eixida, pel que estalvia en l'ús de memòria però no té la visió de context del DOM.

  • JAXP: desenvolupada en llenguatge Java per al software del mateix llenguatge.

Com que aquestes API's no són exclutòries, és a dir, que un mateix processador XSLT pot ser compatible amb més d'una, serà un factor a tindre en compte alhora d'escollir el software per a la transformació.

Suggeriment

Més informació sobre la representació en forma d'arbre i les diferents implementacions i API's es pot trobar al llibre de Key, Michael - XSLT: Programmers Reference [MKay] i al de Tidwell, Doug - XSLT [DTid].

3.2.2. Actors que intervenen al procés de transformació.

En primer lloc tenim el document XML amb format DocBook sobre el que apliquem les transformacions. Aquest document ha de ser vàlid i ben format. Després tenim les fulles d'estil, que amb llenguatge XSLT defineixen les transformacions a aplicar als diferents elements de DocBook. Hi ha un conjunt de fulles d'estil per a la transformació a HTML i un altre conjunt de fulles d'estil per a la transformació a XSL:FO

El document i les fulles d'estil són les entrades al processador XSLT, però abans s'han de presentar de manera adequada, ja que el processador treballa amb una representació llògica en forma d'arbre per als documents XML, tant el DocBook com les fulles d'estil. L'encarregat d'aquest procés és l'analitzador o parser, qui a petició del processador XSLT implementa aquesta estructura en forma d'arbre a la memòria.

En les fulles d'estil entra en joc un altre element, el llenguatge XPath, que amb una sintaxi pareguda a la que utilitza UNIX per al sistema d'arxius, és utilitzat per a accedir als elements en l'estructura d'arbre i aplicar les transformacions definides per a cada element.

Figura 3.3. Transformació XSLT, amb la representació en forma d'arbre

El Parser o Analitzador accedeix al document font i a les fulles d'estil i crea una representació llògica en forma d'arbre per tal que el processador XSLT puga aplicar les transformacions i done com a resultat un altre document representat en forma d'abre que el serialitzador s'encarrega de passar a un arxiu de text.

Com a resultat d'aplicar les transformacions, el processador genera un document nou però al igual que la entrada, està representat en forma d'arbre. L'encarregat de passar aquesta estructura en memòria a un arxiu de text és el serialitzador. El més normal es que tant l'analitzador com el serialitzador estiguen inclosos al processador.

Si s'han utilitzat les fulles d'estil per a generar HTML el procés ja ha acabat. Si pel contrari les fulles d'estil emprades han generat XSL:FO, encara falta fer una última transformació. De manera similar a com actua el processador XSLT, el processador XSL:FO transforma el document en format XSL:FO en PDF

3.2.3. El model de publicació de DocBook.

Ara que ja hem vist com funciona el procés de transformació és hora de veure en global tot el procés que té lloc en la publicació del nostre document en format DocBook a HTML i PDF. En la següent figura es representen tots els elements que entren en joc al procés de publicació, alguns d'ells són opcionals.

Figura 3.4. Model de publicació de DocBook.

Diagrama de caixes que representa tots els elements que tenen lloc al procés de publicació d'un document DocBook a HTML i PDF.

El paper que juguen aquests elements són:

  • XML DTD DocBook: L'arxiu que conté l'esquema del format DocBook, en aquest cas està en format DTD, però també podria estar-ho en XML Schema, RELAX NG o SGML. Aquest document especifica la estructura i sintaxi que ha de seguir el document DocBook que anem a transformar. És utilitzat per la part del processador XSLT que analitza l'arxiu XML en format DocBook per a comprovar la seva validesa. Opcionalment pot tindre una capa de personalització, un arxiu amb el mateix format que indica alguns canvis i/o elements nous introduïts per l'autor del document per tal d'adaptar DocBook a alguna necessitat que aquest no cobria.

  • Fulles d'estil XSLT: Conjunt d'arxius que amb el llenguatge XSLT defineixen les transformacions a realitzar. Segons a quin format es vol transformar el DocBook s'empraran un conjunt de fulles o un altre. En aquest cas utilitzem dos fulles d'estil per a transformar a format HTML i a XSL:FO.

  • Capa de personalització de les fulles d'estil: com es vorà posteriorment, les fulles d'estil emprades en aquest projecte tenen gran quantitat de paràmetres per a personalitzar la transformació. Aquests paràmetres es poden passar per la línia de comandaments al processador, però com que són molts és més adequat posar-los en aquest fitxer. Segueix el mateix format que les fulles d'estil i també té extensió .xsl. D'aquesta manera es manté la modularitat de les fulles d'estil, i en cas que fos necessari modificar alguna plantilla s'inclou en aquest fitxer.

  • Document DocBook XML: Arxiu XML en format DocBook que anem a transformar.

  • Catàleg XML: Un catàleg XML és un fitxer XML, l'element document del qual s'anomena catalog i segueix l'esquema DTD definit per OASIS a http://www.oasis-open.org/committees/entity/spec.html Aquest element és opcional. La seva funció és la de mapejar referències globals a referències locals, tant per a localitzar el DTD associat a DocBook com per a les fulles d'estil. La ventaja que ofereix és que sense necessitat de canviar la declaració DOCTYPE en cada document XML amb el que treballem, aquest catàleg pot mapejar el esquema associat a una còpia local per a que l'accés per part del processador siga més ràpid.

  • Processador XSLT: Software que s'encarrega d'aplicar les transformacions. Alguns dels processadors més coneguts són: Xalan, Saxon i Xsltproc. Com a resultat de la transformació i segons quines fulles d'estil hem utilitzat i amb quins paràmetres, el resultat pot ser un arxiu HTML amb tot el contingut, varis arxius HTML amb enllassos entre sí, o un arxiu en format XSL:FO.

  • FOP: És el processador XSL:FO d'Apache, un dels més utilitzats. Utilitzant com a entrada l'arxiu generat per el processador XSLT en format XSL:FO el transforma a format PDF.