Table des matières
Les technologies mises en jeu dans DocBook sont l'XML et ses dialectes telles que XSLT, XSL-FO, SVG, ... On peut préciser que tous ces langages sont des standards libres.
Les langages à base d'XML sont robustes, ce qui facilite l'interopérabilité et la communication, et sont manipulables aussi bien par des humains que par des machines. C'est cette dernière capacité qui rend XML si attractif.
La robustesse est principalement dûe au format text d'XML et au processus de validation qui permet de vérifier qu'un document XML est conforme à sa grammaire, qui est généralement sous la forme d'une DTD. Si le document XML est valide par rapport à sa DTD, il est dit cohérent.
Sous linux, on peut utiliser la commande suivante pour effectuer la validation (la pluspart des éditeurs XML procèdent directement la validation) :
xmllint -valid mydocument.xml
Nous serons donc amenés à utiliser :
XML (eXtensible Markup Language) : Langage de balisage.
XSL (eXtensible Stylesheet Language) : Langage de description de feuilles de style associé à XML.
Pour XSL Transform, langage pour transformer l'XML. Il est généralement utilisé pour transformer l'XML vers un autre format de type texte mais il peut aussi être utilisé pour générer des fichiers binaires.
En effet, on utilise très peu XML pour faire de l'affichage, ... mais on utilise une feuille de transformation XSLT afin de transformer un document XML source en un autre document permettant l'affichage, l'impression, ...
On prendra le document XML suivant comme source :
<catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> </catalog>
et utiliser la feuille XSLT suivante pour transformer la source en HTML :
Exemple 1. Exemple XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">Title</th> <th align="left">Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Sous linux, on peut utiliser la commande suivante pour réaliser une transformation :
xsltproc stylesheet.xsl mydocument.xml
Pour XSL Formattion Objects, vocabulaire XML de mise en forme indépendant du support : papier, écran, ...
Ce vocabulaire est assez complexe car très pointu pour effectuer de publication de bonne facture.
Voici un exemple présentant la structure de base d'un document XSL-FO :
Exemple 2. Exemple XSL-FO
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="A4"> <!-- Page template goes here --> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4"> <!-- Page content goes here --> </fo:page-sequence> </fo:root>
Pour XML Path Language, langage d'expression utilisé par XSLT pour travailler sur les arbres XML.
On prendra le document xml suivant comme source :
<article> <title>Titre</title> <para id="terminator"></para> </article>
et les expressions XPath suivantes :
Expression XPath | Résultat |
---|---|
/ | Récupère tout le document |
/article | Récupère l'élément article |
//para | Récupère tous les éléments
para |
//para[@id="terminator"] | Récupère sulement les éléments para
dont l'id est
terminator . |
Pour Math Modeling Language, vocabulaire XML permettant l'expression de symboles mathématiques.
Standard destiné à l'affichage d'expressions mathématiques sur le web.
s'écrit de la manière suivante en Tex :
s'écrit de la manière suivante en MathML :
Exemple 5. Formule mathématique en MathML
<math> <mrow><mi>x</mi>
<mo>=</mo>
<mfrac> <mrow> <mrow> <mo>-</mo> <mi>b</mi> </mrow> <mo>±</mo>
<msqrt> <mrow> <msup> <mi>b</mi> <mn>2</mn> </msup> <mo>-</mo> <mrow> <mn>4</mn> <mo>⁢</mo>
<mi>a</mi> <mo>⁢</mo> <mi>c</mi> </mrow> </mrow> </msqrt> </mrow> <mrow> <mn>2</mn> <mo>⁢</mo> <mi>a</mi> </mrow> </mfrac> </mrow> </math>
Exemple 7. Formule mathématique en MathML : Sommes
<mrow> <mstyle displaystyle='true'> <munderover> <mo>sum</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>&infty;</mi> </munderover> <msup> <mi>x</mi> <mi>i</mi> </msup> </mstyle> <mo>+</mo> <mstyle displaystyle='false'> <munderover> <mo>sum</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>&infty;</mi> </munderover> <msup> <mi>x</mi> <mi>i</mi> </msup> </mstyle> </mrow>