Exposé système - DocBook

Table des matières

Historique
Les technologies
XSLT
XSL-FO
XPath
MathML
DocBook
DocBook : strucurée
DocBook : multi supports
Modulaire
Rappel des bénéfices
Rappel des difficultés
Step in
Elements de hiérarchie
Elements d'information
Exemples
Outils d'édition
XMLmind XML Editor
Conclusion
Ressources
Téléchargements
Liens

Les technologies

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 :

XSLT

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

XSL-FO

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>

XPath

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 XPathRésultat
/Récupère tout le document
/articleRécupère l'élément article
//paraRécupère tous les éléments para
//para[@id="terminator"]Récupère sulement les éléments para dont l'id est terminator.

MathML

Pour Math Modeling Language, vocabulaire XML permettant l'expression de symboles mathématiques.

Standard destiné à l'affichage d'expressions mathématiques sur le web.

Exemple 3. Formule mathématique

s'écrit de la manière suivante en Tex :

Exemple 4. Formule mathématique en Tex

x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}

s'écrit de la manière suivante en MathML :

Exemple 5. Formule mathématique en MathML

<math>
 <mrow> 1
  <mi>x</mi> 2
  <mo>=</mo> 3
  <mfrac>
    <mrow>
      <mrow>
        <mo>-</mo>
        <mi>b</mi>
      </mrow>
      <mo>&PlusMinus;</mo> 4
      <msqrt>
        <mrow>
          <msup>
            <mi>b</mi>
            <mn>2</mn>
          </msup>
          <mo>-</mo>
          <mrow>
            <mn>4</mn>
            <mo>&InvisibleTimes;</mo> 5
            <mi>a</mi>
            <mo>&InvisibleTimes;</mo>
            <mi>c</mi>
          </mrow>
        </mrow>
      </msqrt>
    </mrow>
    <mrow>
      <mn>2</mn>
      <mo>&InvisibleTimes;</mo>
      <mi>a</mi>
    </mrow>
  </mfrac>
 </mrow>
</math>
1

Conteneur d'expression mathématique.

2

Identifiant

3

Operateur

4

Entités pré-codées

5

Exemple d'opérateur multiplié non visible

Exemple 6. Formule mathématique : Sommes

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>