DocbookSample

Soit le fichier docbookSample.xml valide par rapport au schéma Docbook 5.0.

1
<?xml version="1.0" encoding="UTF-8"?>
2
<?oxygen RNGSchema="http://www.oasis-open.org/docbook/xml/5.0/rng/docbook.rng" type="xml"?>
3
<book 
4
  xmlns="http://docbook.org/ns/docbook"
5
  xmlns:xlink="http://www.w3.org/1999/xlink"
6
  xmlns:svg="http://www.w3.org/2000/svg"
7
  xmlns:m="http://www.w3.org/1998/Math/MathML"
8
  version="5.0">
9
  <info>
10
    <title>Book  Title</title>
11
    <author>
12
      <orgname>Organization Name</orgname>
13
      <address>
14
        <city>City</city>
15
        <street>Street</street>
16
        <postcode>000000</postcode>
17
        <country>Country</country>
18
      </address>
19
      <email>user@example.com</email>
20
    </author>
21
  </info>
22
  <part>
23
    <title>First Part</title>
24
    <subtitle>Subtitle of First Part</subtitle>
25
    <chapter>
26
      <title>Chapter Title</title>
27
      <subtitle>Subtitle of Chapter</subtitle>
28
      <sect1>
29
        <title>Section1 Title</title>
30
        <subtitle>Subtitle of Section 1</subtitle>
31
        <para>Text</para>
32
      </sect1>
33
    </chapter>
34
  </part>
35
</book>

Question

Pourquoi peut-on dire que le schéma Docbook 5.0 représente un format ou un langage ? Caractérisez-le, justifiez.

Solution

XML est un méta-langage, un schéma XML permet de définir un langage ou format en fixant une liste des balises possibles ainsi que leurs agencements possibles.

Voir aussi : XML : un méta-langage

Ce langage est un langage orienté document structuré standard (standardisé par Oasis).

Voir aussi : Langages XML orientés documents ; Langages standard et langages locaux

Question

Expliquez ce que sont les 4 attributs de l'élément book commençant par xmlns. Montrez qu'ils ne sont pas utiles dans le fichier docbookSample.xml. Inventez un exemple dans lequel deux d'entre eux seraient utiles.

Solution

Les 4 attributs de l'éléments book sont des namespaces :

  • le premier est le namespace par défaut (il qualifie les éléments sans préfixe) associé au langage principal Docbook (Oasis)

  • les trois suivants sont des langages (du W3C) utilisés dans le langage Docbook : XLink pour la gestion des liens, SVG pour les dessins vectoriels et MathML pour les formules de mathématiques.

Ils ne sont pas utiles ici car seul le namespace par défaut est utilisé, en particulier il n'y a aucun risque de conflit de noms dans les balises.

Voir aussi : Namespace

Soit l'exemple ci-après intégrant un graphique dans une section.

1
<sect1>
2
   <title>Section1 Title</title>
3
   <subtitle>Subtitle of Section 1</subtitle>
4
   <svg:svg>
5
    <svg:circle cx="100" cy="200" r="75"/>
6
  </svg:svg>
7
 </sect1>

Question

Concevez un schéma S1 permettant de valider des fichiers du type de docbookSample.xml, en faisant des hypothèses adéquates pour les cardinalités. Expliquez pourquoi S1 est un sous-schéma de Docbook 5.0.

Solution

1
<?xml version="1.0" encoding="UTF-8"?>
2
<grammar 
3
  xmlns="http://relaxng.org/ns/structure/1.0"
4
  ns="http://docbook.org/ns/docbook">
5
<start>
6
<element name="book">
7
  <attribute name="version"><text/></attribute>
8
  <optional>
9
  <element name="info">
10
    <element name="title"><text/></element>
11
    <optional>
12
    <element name="author">
13
      <element name="orgname"><text/></element>
14
      <element name="address">
15
        <element name="city"><text/></element>
16
        <element name="street"><text/></element>
17
        <element name="postcode"><text/></element>
18
        <element name="country"><text/></element>
19
      </element>
20
      <element name="email"><text/></element>
21
    </element>
22
    </optional>
23
  </element>
24
  </optional>
25
  <oneOrMore>
26
  <element name="part">
27
     <ref name="Title"/>
28
    <oneOrMore>
29
    <element name="chapter">
30
      <ref name="Title"/>
31
      <zeroOrMore>
32
      <element name="sect1">
33
        <ref name="Title"/>
34
        <zeroOrMore>
35
        <element name="para"><text/></element>
36
        </zeroOrMore>
37
      </element>
38
      </zeroOrMore>
39
    </element>
40
    </oneOrMore>
41
  </element>
42
  </oneOrMore>
43
</element>
44
</start>
45
<define name="Title">
46
  <element name="title"><text/></element>
47
  <optional>
48
  <element name="subtitle"><text/></element>
49
  </optional>
50
</define>
51
</grammar>

S1 est un sous-schéma de Docbook car tout fichier valide par rapport à S1 est aussi valide par rapport à Docbook 5.0.

Question

Proposer une représentation UML de S1.

Question

Proposez une feuille de transformation XSLT permettant de publier une instance de S1 en HTML. Intégrez une table des matières. Ajoutez une liste avec le titre de la section précédente et le titre de la section suivante à la fin de chaque section.

Réutilisation par transclusion

L'on souhaite à présent pouvoir réutiliser des fragments sect1 entre plusieurs documents, sans les recopier.

Question

Proposez un exemple de fichiers XML tels que docbookSample2.xml utilise sect1_001.xml par transclusion (inclusion par référence). Expliquez en quoi cela permet la réutilisation sans recopie. Présentez un avantage et un inconvénient de cette technique.

Question

Proposez deux schémas S2main et S2sect1 permettant de valider les fichiers précédents.

Question

Proposez une modification de votre XSLT permettant de gérer la transclusion au moment de la transformation en HTML.

Question

Proposez un programme XSLT permettant de créer un fichier XML valide par rapport à S1, à partir d'un fichier valide par rapport à S2main et des fichiers valides par rapport à S2sect référencés.