XML et DocBook, une initiation

Transcription

XML et DocBook, une initiation
XML et DocBook, une initiation
Dominique Gonzalez
Université Lille3-Charles de Gaulle
XML et DocBook, une initiation
par Dominique Gonzalez
Publié 12/07/2006
Copyright © 2005 D.Gonzalez
Ce document est soumis à la licence GNU FDL. Permission vous est donnée de distribuer, modifier des copies de ces pages tant que
cette note apparaît clairement.
Table des matières
1. Pourquoi et comment ? .............................................................................................................................................1
1.1. Pourquoi ce document ? ................................................................................................................................1
1.2. Comment a-t-il été construit ? ......................................................................................................................1
1.3. Où trouver ce document ?.............................................................................................................................2
1.4. QBullets..........................................................................................................................................................2
2. XML, Généralités .......................................................................................................................................................3
2.1. Qu’est-ce que XML ? ......................................................................................................................................3
2.2. À quoi ça ressemble ?.....................................................................................................................................3
2.3. Syntaxe détaillée .............................................................................................................................................4
2.4. Technique.........................................................................................................................................................5
3. Validation Xml............................................................................................................................................................7
3.1. Introduction aux DTD ...................................................................................................................................7
3.2. Validation ?......................................................................................................................................................7
3.3. xmllint ............................................................................................................................................................7
3.3.1. Documents corrects et incorrects.....................................................................................................7
3.3.2. Validation interne ..............................................................................................................................7
3.3.3. Validation externe ..............................................................................................................................8
4. Plus loin : XSLT ..........................................................................................................................................................9
4.1. Objectifs ...........................................................................................................................................................9
4.2. Aperçu..............................................................................................................................................................9
4.3. Sémantique ....................................................................................................................................................10
4.4. Modes.............................................................................................................................................................10
5. Exercices : XML.........................................................................................................................................................11
6. DocBook, présentation............................................................................................................................................13
6.1. Historique ......................................................................................................................................................13
6.2. Que faire avec DocBook ?.............................................................................................................................13
6.2.1. Les difficultés de l’écriture .............................................................................................................14
6.2.2. Les difficultés de la transformation...............................................................................................14
7. DocBook, les premières balises.............................................................................................................................15
7.1. Structure du document................................................................................................................................15
7.1.1. Structure générale ............................................................................................................................15
7.1.2. Différences et points communs entre article et book ....................................................................15
7.2. Les principales balises de structure ...........................................................................................................15
7.2.1. sect1, sect2, sect3, sect4, sect5 ..............................................................................................15
7.2.2. para ....................................................................................................................................................15
7.2.3. blockquote .......................................................................................................................................15
7.2.4. itemizedlist ..................................................................................................................................16
7.2.5. orderedlist.....................................................................................................................................16
7.2.6. listitem ...........................................................................................................................................16
7.3. Quelques balises d’avertissement ..............................................................................................................16
7.4. Les principales balises d’information sur le document ..........................................................................16
7.5. Quelques balises génériques.......................................................................................................................17
7.5.1. emphasis ...........................................................................................................................................17
7.5.2. ulink..................................................................................................................................................17
7.6. Références bibliographiques pour les différentes balises.......................................................................17
8. DocBook, transformer .............................................................................................................................................19
8.1. Les outils de base..........................................................................................................................................19
8.2. Utiliser openjade pour produire un PDF ..................................................................................................19
8.3. Utiliser xsltproc pour produire des pages web.....................................................................................20
9. Exercices : DocBook .................................................................................................................................................21
10. Exercices sur XML, correction..............................................................................................................................23
11. Exercices sur DocBook, correction ......................................................................................................................27
12. Bibliographie ..........................................................................................................................................................29
12.1. XML ..............................................................................................................................................................29
12.2. XML, plus loin ............................................................................................................................................29
12.3. DocBook.......................................................................................................................................................29
12.4. DocBook, plus loin .....................................................................................................................................29
12.5. Quanta..........................................................................................................................................................30
iii
12.6. Règles de typographie ...............................................................................................................................30
12.7. Les inconvénients du WYSIWYG ............................................................................................................30
12.8. Exercices.......................................................................................................................................................31
Index ...............................................................................................................................................................................33
iv
Chapitre 1. Pourquoi et comment ?
1.1. Pourquoi ce document ?
Ces pages ont pour origine un cours destiné aux étudiants de 2ème année du Master Pro Métiers de la Rédaction
de l’université Lille III-Charles de Gaulle, à Villeneuve d’Ascq, depuis l’année universitaire 2005-2006.
Le but principal de cet enseignement est de sensibiliser des étudiants (destinés à devenir des rédacteurs
de documents, techniques ou pas) à la nécessité et l’utilité de la séparation données-traitement (c’est-à-dire
texte-présentation, ou encore sens-apparence) dans la création d’un texte, surtout quand celui-ci est destiné
à être manipulé par plusieurs personnes aux fonctions complémentaires.
Il est en effet important, par exemple, que celui qui écrit le texte ne se préoccupe pas de la façon dont il sera
présenté dans sa version finale, mais aussi que celui qui en fait une version papier n’ait pas à modifier le
texte original, pas plus que celui qui l’utilisera pour produire un site web.
Dans cette optique il est important de choisir une méthode de représentation des données (ou des textes) qui
permette cette séparation, et même qui y oblige. XML est une solution, et DocBook en est une application
particulière.
C’est pour sa valeur d’exemple représentatif que cette solution a été choisie dans cet enseignement. Mais il
faut bien garder à l’esprit que d’autres solutions existent (d’autres solutions XML, l’utilisation de systèmes de
gestion de bases de données, etc.). Le point commun de ces solutions sera la séparation données-traitement.
Et c’est bien à cette notion que cet enseignement a pour but de sensibiliser.
Ces pages ne sont pas destinées à être un cours autonome : elles ne sont qu’un support de cours, et beaucoup
de choses, qui sont transmises à l’oral pendant les cours, ne sont pas écrites.
De plus le public auquel s’adresse ce cours est fondamentalement « non technique ». De ce fait les aspects
« mains dans le cambouis » de l’utilisation de DocBook (installation, rédaction ou modification des feuilles de
style, utlisation de XSLT, etc.) ne seront pas abordés. Nous nous placerons volontairement dans une situation
où nous supposerons que des « gens qui s’y connaissent » (appelés aussi habituellement « informaticiens »)
ont installé les logiciels et seront disponibles pour régler les petits problèmes techniques si ennuyeux qui
surgissent aussitôt qu’on s’approche d’un ordinateur... Le but du cours est bien la compréhension d’une
notion, et non l’entraînement à l’utilisation d’un logiciel.
Cependant, malgré ce qu’aurait pu laisser supposer la « non technicité » du public visé, il a été choisi de ne
pas utiliser d’outil WYSIWYG1, et cela pour plusieurs raisons :
•
la notion de WYSIWYG est un leurre : ne serait-ce que par la différence de résolution entre l’écran et la
moindre imprimante, même bas de gamme, il est matériellement impossible de garantir que ce qui est à
l’écran sera ce qu’on imprimera ;
•
les outils WYSIWIG sont totalement inefficaces en terme de résultat, et c’est encore plus évident quand on
les compare aux outils de description de texte (il suffit de mettre côte à côte un document produit par un
traitement de texte et un document LaTeX pour s’en persuader) ;
•
mais, surtout, le but de ce cours est justement de bien montrer qu’il faut différencier l’écriture du texte
de sa présentation, ce qui sera totalement caché si on on utilise un outil WYSIWIG (qui de plus ne nous
montrera sans doute pas la structure du document, alors que c’est elle qui nous intéresse en priorité).
On trouvera dans la Bibliographie quelques liens vers des documents qui vous en diront plus sur les inconvénients du WYSIWIG.
L’environnement technique du cours est constitué de machines sous linux. Son installation ne sera pas non
plus abordée et ne fait pas partie du contenu du cours.
1.2. Comment a-t-il été construit ?
Ce polycopié a été rédigé au format DocBook :
•
Le texte source a été écrit au format XML avec emacs et Quanta, en respectant la DTD de DocBook.
•
Le code source a été compilé au format PDF avec openjade et au format HTML avec xsltproc.
1. WYSIWYG (What You See Is What You Get) : catégorie d’outils d’éditions (traitements de texte, éditeurs de pages
web, etc.) qui prétendent, la plupart du temps à tort, vous permettre de créer un document en vous assurant que vous
obtiendrez à l’impression exactement ce que vous voyez à l’écran. Non utilisable au Scrabble.
1
Chapitre 1. Pourquoi et comment ?
•
La version que vous avez devant les yeux a été compilée le 12/07/2006 .
1.3. Où trouver ce document ?
Ce document est disponible sous plusieurs formats sur le web :
•
Un seul document HTML : http://www.grappa.univ-lille3.fr/polys/xml-DG/xml.html (Lourd à charger,
mais facile à sauvegarder ou à imprimer)
•
Plusieurs pages HTML : http://www.grappa.univ-lille3.fr/polys/xml-DG/index.html (Plus faciles à consulter)
•
Une version HTML sans feuilles de style : http://www.grappa.univ-lille3.fr/polys/xml-DG/book1.htm
(Quelle idée ? Mais si vous y tenez...)
•
PDF : http://www.grappa.univ-lille3.fr/polys/xml-DG/xml.pdf
1.4. QBullets
Les petites images animées qui illustrent les liens de la version web de ce document proviennent de QBullets
2
2.
2
http://www.matterform.com/
Chapitre 2. XML, Généralités
2.1. Qu’est-ce que XML ?
Cette partie provient des cours de Fabien Torre1 et Marc Tommasi2.
XML=eXtensible Markup Language.
C’est une famille de langages de représentation de données dans un format particulier. Ce format repose sur
la présence de balises (langages de balisage).
XML n’est pas un langage à proprement parler comme peut l’être HTML : XML est une famille de langages
ayant en commun le respect de certaines règles. Nous allons voir que là où HTML est simple, bien défini et
non contraignant à la fois, XML est extensible et rigoureux.
XML est un standard ouvert et universel. En pratique, un fichier XML est un simple fichier texte, contenant
des balises. La particularité de XML est qu’aucune balise n’est prédéfinie : c’est au concepteur de définir les
balises qui ont du sens pour lui. En particulier, XML permet à l’utilisateur de différencier le fond de la forme,
de travailler sur la structure logique du document sans se soucier de sa présentation.
On trouve aujourd’hui XML dans les domaines les plus variés :
•
édition (description d’ouvrage avec DocBook),
•
graphisme (format SVG),
•
mathématiques (formules avec MathML),
•
chimie (description de molécules en 3D),
•
musique (partition musicale),
•
etc.
Les buts et avantages de XML sont, entre autres, de :
•
représenter des données pour les manipuler, favoriser l’interopérabilité, l’échange ;
•
rendre pérennes les données ;
•
les rendre manipulables à la fois par les hommes et les machines.
Exemples :
•
Documents de bureautique : OpenOffice
•
Documents texte : DocBook
•
Données informatiques : configurations...
•
Données échangées : XHTML, jabber, RSS
•
Données stockées : bases de données XML et beaucoup d’autres choses nouvelles, chaque jour ou presque !
2.2. À quoi ça ressemble ?
Cette partie provient du cours de Fabien Torre3.
On a dit qu’un document XML était essentiellement du texte. Au milieu de ce texte, on va pouvoir trouver
des éléments (ou balises), des attributs associés aux éléments et enfin des entités.
Les règles que doit suivre un document XML sont les suivantes (si toutes ces contraintes sont respectées, le
document XML est dit bien formé) :
•
1.
2.
3.
la première ligne doit être de la forme <?xml version="1.0" encoding="iso-8859-1" ?> ; les deux
attributs spécifient la version de XML utilisée (1.0 ou 1.1) et le codage des caractères ;
http://www.grappa.univ-lille3.fr/~torre/guide.php?id=coursxmlintro
http://www.grappa.univ-lille3.fr/~tommasi/Homepage/SurXml.html
http://www.grappa.univ-lille3.fr/~torre/guide.php?id=coursxmlintro
3
Chapitre 2. XML, Généralités
•
les balises sont repérées par les caractères < et >, on écrira par exemple <balise>contenu</balise> ; la
balise ouvrante peut contenir des attributs ;
•
toujours donner une valeur aux attributs, en suivant la syntaxe <balise attr="val"> (les guillemets sont
obligatoires, les attributs ne sont pas répétés dans la balise fermante) ;
•
les entités sont systématiquement de la forme &nom; ;
•
fermer toutes les balises ouvertes ; une balise sans contenu pourra être ouverte et immédiatement fermée
en faisant suivre son nom d’un slash, comme par exemple la balise br (passage à la ligne en HTML) : <br
/> ;
•
veiller à l’ordre de fermeture des balises : la première ouverte est toujours la dernière fermée ;
•
respecter la casse : on peut utiliser majuscules et minuscules dans les noms de balises mais une fois qu’un
nom d’élément a été fixé, il faut s’y tenir, la balise <cv> ne pourra être fermée ni par </Cv> ni par </CV> ;
•
ne pas utiliser de caractères réservés à XML dans le texte du document : <, > et & ; ces caractères pourront
être respectivement obtenues à l’aide des entités &lt;, &gt; et &amp; ;
•
les noms de balises et d’attributs doivent être des noms XML :
•
le premier caractère est une lettre quelconque ou un « _ » (underscore ou tiret bas) ;
•
les caractères suivants peuvent être des lettres, des chiffres, des tirets bas (« _ »), des traits d’union (« - »)
ou des points (« . ») ;
•
il n’y a pas de limitation sur la longueur d’un nom XML.
À noter que cette dernière règle interdit à un nom de balise de commencer par un chiffre. Cependant, la
liberté pour choisir un nom d’élément reste grande car on peut y faire figurer n’importe quelle lettre... or,
le codage privilégié dans les documents et applications XML est l’UTF-8 qui contient les alphabets latin,
arabe, japonais, etc. Plus spécifiquement, on n’hésitera pas à utiliser des lettres accentuées dans les noms
d’éléments.
Finalement, voici un exemple de document XML bien formé :
<?xml version="1.0" encoding="iso-8859-1" ?>
<!-- commentaire : voici mon curriculum vitae -->
<cv>
<!-- commentaire : état civil -->
<identité naissance="1980">
<nom>Moustique</nom>
<prénom>Jules</prénom>
<prénom>Édouard</prénom>
<nationalité>grolandaise</nationalité>
</identité>
<!-- commentaire : mes diplômes maintenant -->
<diplome année="2005" intitulé="Master ID" mention="TB" />
<diplome année="2003" intitulé="Licence " mention="AB" />
</cv>
2.3. Syntaxe détaillée
Cette partie provient du cours de Marc Tommasi4.
•
Blanc : un blanc est une suite d’au moins une espace, une tabulation ou un retour à la ligne.
•
Un nom XML s’écrit à l’aide de caractères ou de symboles et des caractères « _ », « - » ou « . ». Il ne peut
contenir de blanc. Les symboles sont autorisés par le codage XML du document. On a donc droit aux
accents par exemple. Il ne peut commencer que par un symbole ou « _ »
•
Élément : un élément s’écrit par un nom XML. Les éléments ont un nom qui ne peut commencer par « xml ».
•
La valeur (ou le contenu) d’un élément elt s’écrit entre deux balises ouvrante
<elt>
et fermante
</elt>
4.
4
http://www.grappa.univ-lille3.fr/~tommasi/Homepage/SyntaxeXml.html
Chapitre 2. XML, Généralités
Un élément elt vide s’écrit
<elt />
•
Un élément peut avoir des attributs qui se décrivent dans la balise ouvrante sous la forme att=valeur où
att est un nom XML et valeur est entre « " » ou « ’ ».
•
Un attribut peut être défini une et une seule fois dans la balise ouvrante d’un élément.
•
Les symboles
< > & " ’
sont réservés et ne peuvent être insérés dans un document que sous la forme d’appel d’entité :
&lt; &gt; &amp; &quot; &apos;
•
La syntaxe
<![CDATA[ ici n’importe quoi ]]>
permet d’insérer n’importe quelle suite de caractères, même réservés sauf la chaîne de terminaison ]]>
•
Les commentaires s’écrivent entre « <!-- » et « --> » et peuvent être ignorés par les applications. Ne
comportent pas de « -- ».
•
Les instructions de traitement sont des textes libres entre « <? » et « ?> » destinés à être communiqués aux
applications.
•
Les parties CDATA, les instructions de traitement et les commentaires ne peuvent se trouver ni dans une
balise ni dans un commentaire.
•
Dans les déclarations XML de la forme
<?xml version="..." encoding="..." standalone="..." ?>
version décrit le numéro de version d’XML (souvent 1.0 ou 1.1), encoding décrit le codage XML qui est
unicode par défaut et standalone précise si le document fait référence à des objects hors du fichier et qui
vaut no par défaut.
•
Les caractères non accessibles au clavier peuvent être décrits par leur code décimal dec ou hexadécimal
hex par
&#dec;
et
&#xhex;
•
Les entités sont des parties du document XML référencées par un nom XML. On appelle l’entité ent par
%ent;
dans une balise ou par
&ent;
dans les données.
•
Un document XML est bien formé s’il respecte les règles syntaxiques ci dessus, si les balises ne se recouvrent pas et s’il a un élément racine.
•
Pour tester si un document est bien formé, on peut utiliser xmllint (l’option noout permet de n’observer
que les erreurs éventuelles) :
xmllint monfichier.xml --noout
2.4. Technique
Cette partie provient du cours de Fabien Torre5.
La simplicité et l’ouverture de XML font qu’un document XML peut facilement être modifié par un être
humain, sans outil spécifique.
La rigueur de XML (sensibilité à la casse, guillemets obligatoires pour encadrer les valeurs des attributs,
fermeture systématique des balises, etc.) autorise des traitements automatiques, qui pourront être partagés
par tous les langages XML.
Exemples de traitement :
•
5.
contraindre un langage XML : DTD, Schémas, Relax NG ;
http://www.grappa.univ-lille3.fr/~torre/guide.php?id=coursxmlintro
5
Chapitre 2. XML, Généralités
•
mise en page avec CSS
<?xml-stylesheet href="livres.css" type="text/css">
en particulier utilisation de la propriété display (block ou inline) ;
•
transformation de documents avec XSLT ;
•
mise en page avec XSL-FO (Formatting Objects) et un programme comme FOP.
6
Chapitre 3. Validation Xml
Cette partie provient du cours de Marc Tommasi sur les DTD1 et sur la validation XML2.
3.1. Introduction aux DTD
Tout document XML doit respecter une syntaxe pour être correct vis à vis de la norme XML.
Dans une application qui va utiliser XML, des restrictions complémentaires sont apportées pour restreindre
l’ensemble des documents jugés comme valides en rapport avec cette application.
Pourquoi appliquer de telles restrictions ? La principale raison est de rendre l’application plus robuste et
éviter des erreurs, des incohérences.
Exemple : dans un document il n’y a qu’un titre et un élément décrivant le titre ne doit apparaître qu’une
fois.
Les DTD apportent ces règles complémentaires aux règles de correction pour établir un critère de valididité.
Les DTD se présentent comme un ensemble de règles portant sur les éléments et leurs attributs. Ce sont
essentiellement des règles dirigeant la structure et pas les valeurs aux feuilles des arbres XML.
La référence des DTD se trouve dans la norme de XML 1.0.
3.2. Validation ?
Le processus de validation permet de vérifier qu’un document XML est conforme avec une déclaration de
type donnée sous la forme d’une DTD, d’un Schéma, de RelaxNG, etc.
Ce processus est à distinguer de la vérification de forme qui contrôle qu’un document suit les règles de la
syntaxe XML.
3.3. xmllint
C’est l’outil de base écrit par D. Veillard. Il fait partie de la suite d’outils XML écrits pour linux et particulièrement Gnome.
Une petite documentation des options est donnée par simple appel de xmllint.
3.3.1. Documents corrects et incorrects
$>xmllint incorrect.xml incorrect.xml:2:
parser error : Opening and ending tag mismatch: a line 1 and b
</b>
$>xmllint correct.xml
<?xml version="1.0"?>
<a nom="ifiif"><b_w>
<a>coucou</a>eddd </b_w>
</a>
Remarquez que xmllint peut transformer légèrement le document. Ici, l’instruction de traitement
<?xml version="1.0"?>
a été ajoutée.
L’option --debug affiche des informations plus complètes. Par contre, l’option --noout permet de ne pas
afficher le document analysé.
1.
2.
http://www.grappa.univ-lille3.fr/~tommasi/Homepage/SurDtd.html
http://www.grappa.univ-lille3.fr/~tommasi/Homepage/ValidationXml.html
7
Chapitre 3. Validation Xml
3.3.2. Validation interne
Avec une DTD SYSTEM la validation s’obtient de la façon suivante.
$> xmllint -valid doc.xml
Certaines options permettent d’améliorer la sortie :
• --noblank
: Enlève tout séparateur dans la sortie
• --format
: reformate la sortie en un beau code xml
• --encode
: modifie l’encodage de la sortie et ajoute les bonnes instructions de traitement...
3.3.3. Validation externe
3.3.3.1. Les catalogues
Ce sont les associations entre les noms logiques (comme des URNs) et les URI qui permettent de retrouver
des entités externes. Par exemple c’est le cas pour les DTD publiques comme DocBook, TEI, XHTML, HTML,
etc...
Pour des raisons d’efficacité, les catalogues permettent de gérer un système de cache évitant d’avoir constamment à aller chercher des ressources sur le net.
Il existe des catalogues pour SGML et XML tous deux gérés par libxml. Dans un processus de recherche
d’entités, libxml consulte /etc/xml/catalog. Ce qui lui permet d’obtenir des ressources localement ou
l’adresse des ressources externes.
3.3.3.2. Utilisation
Un premier exemple simple est le cas où la définition de type de document n’est pas donnée dans le document.
$>xmllint --format --dtdvalid doc.dtd validsansdoc.xml
Un deuxième cas est l’utilisation de DTD sur le net.
$>xmllint --format \
--dtdvalid http://www.grappa.univ-lille3.fr/~tommasi/doc.dtd \
validsansdoc.xml
8
Chapitre 4. Plus loin : XSLT
Ce texte provient du cours de Marc Tommasi1.
4.1. Objectifs
On s’intéresse aux transformations de documents XML lorsqu’il s’agit d’échanger des documents entre applications. Tout particulièrement, lorsqu’on désire afficher, imprimer un document XML, on fait appel à une
feuille de transformation :
•
L’application qu’est le navigateur Web est par exemple responsable de la présentation de données, parfois
interactivement à un utilisateur.
•
Des logiciels ou langages d’impressions sont aussi visés par les feuilles de transformation, comme par
exemple PDF ou des langages intermédiaires comme FO ou LaTeX.
•
OpenOffice intègre un moteur XSLT et se base sur cette technologie pour les entrées sorties (enregistrersous, ouvrir)
Les feuilles XSLT sont écrites dans le format XML, cela nécessite donc de connaître et se rappeler les contraintes
liées à ce format notamment sur l’utilisation des opérateurs comme « < » et « > ».
Les feuilles de style ne suffisent plus à l’affichage lorsque la structure du document à afficher n’est pas
isomorphe à la structure du document finalement affiché.
4.2. Aperçu
On considère un document en entrée, la source de données et un document en sortie, les données résultantes
de l’application de la transformation sur l’entrée.
Principalement, un document XSLT se présente comme une suite de règles appelées modèles. Chaque modèle consiste en une suite d’actions à réaliser dans le cas où une expression XPATH est satisfaite.
Les actions à réaliser sont :
•
insérer du texte dans le document de sortie
•
insérer des données provenant du document en entrée dans le document de sortie
•
appeler d’autres règles de transformation
Les actions peuvent être combinées dans des structures de contrôle classiques en programmation (alternatives, itérations...). Dans l’exemple suivant nous n’utilisons pas de structure de contrôle.
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title><xsl:value-of select="coordonnées/nom"/></title>
</head>
<body>
<h1>Curriculum Vitae de
<xsl:value-of select="/cv/coordonnées/prénom" />
<xsl:value-of select="/cv/coordonnées/nom"/>
</h1>
<xsl:apply-templates select="/cv/coordonnées" />
</body>
</html>
</xsl:template>
<xsl:template match="coordonnées">
1.
http://www.grappa.univ-lille3.fr/~tommasi/Homepage/SurXslt.html
9
Chapitre 4. Plus loin : XSLT
<h2>Coordonées</h2>
à suivre...
</xsl:template>
</xsl:stylesheet>
La feuille de transformation prendra un document de type CV en entrée pour produire un document XHTML.
L’entête du document XSL définit un espace de noms utilisé pour chaque balise provenant de l’application
XSLT. On voit ici l’intérêt des espaces de noms puisque trois catégories de noms d’éléments seront présentes
dans la feuille de transformation (les CVS, XSLT, XHTML). Les espaces de noms éviteront les ambiguïtés.
Le premier modèle s’applique pour la racine du document en entrée, par la présence de « match"/"= ». Il
écrit les balises xhtml classiques pour un entête simple. Il utilise l’instruction « xsl:value-of » qui permet
d’obtenir la valeur d’un élément dans le document en entrée. La valeur d’un élément désigne le contenu
des feuilles du sous-arbre xml sous l’élément. L’instruction « xsl:apply-templates » fait appel à d’autres
modèles.
Vous pouvez obtenir le résultat de cette transformation en utilisant xsltproc :
$> xsltproc cv.xsl cv.xml
Les documents XML peuvent faire référence explicite à une feuille de transformation sous la forme d’une
instruction de traitement dans le préambule du document. De cette façon il n’est pas nécessaire de donner la
feuille de transformation en argument à xsltproc. Il est alors aussi possible d’utiliser le navigateur comme
interprète de la feuille de style.
<?xml-stylesheet type="text/xsl" href="cv.xsl"?>
L’instruction est similaire à celle utilisée pour les feuilles de style (qui sont des feuilles de transformation
particulières). Seul le type (Mime) diffère.
4.3. Sémantique
XSLT lit les documents en entrée dans l’ordre d’apparition des éléments dans le fichier. C’est la balise ouvrante qui déclenche l’exécution d’un modèle. Cela correspond à une lecture de l’arbre de gauche à droite,
en profondeur d’abord avec une évaluation préfixée. L’ordre d’application des modèles peut être modifié
par les instructions apply-templates.
Les modèles sont définis en spécifiant, à l’aide d’une expression xpath, à quels éléments ils s’appliquent.
Cependant plusieurs modèles peuvent s’appliquer pour un nœud donné. L’ordre des modèles dans la feuille
importe peu. La sélection du modèle qui va s’appliquer dépend de l’expression xpath. Le modèle dont
l’expression xpath est la plus spécifique s’applique.
Des modèles implicites existent pour tous les types de nœuds d’un document XML. De la sorte, il existe
toujours une règle pour tout nœud du document en entrée. Notez que les attributs ne sont pas considérés :
le modèle par défaut n’est jamais activé pour les attributs ; il doit être activé par apply-templates.
•
Pour les nœuds texte et attribut, la valeur est copiée.
•
Pour les nœuds commentaire et les instructions de traitement, la valeur est ignorée.
•
Pour les espaces de noms, le moteur XSLT applique une transformation fixe, non modifiable dans la feuille
XSLT.
Chaque modèle est appliqué avec le nœud courant dans le parcours de l’arbre XML du document en entrée
comme argument implicite.
4.4. Modes
Le mécanisme des modes permet des rendus différents pour des éléments identiques. Un exemple simple
est le cas des titres de section qui apparaissent différemment dans la table des matières et dans le corps du
texte.
L’attribut mode apparaît dans la définition des modèles et dans l’instruction apply-templates.
10
Chapitre 5. Exercices : XML
1. Distinguez les noms XML corrects des noms incorrects et corrigez les erreurs.
1.1. <Drivers_License_Number>98 NY 32</Drivers_License_Number>
1.2. <Driver’s_License_Number>98 NY 32</Driver’s_License_Number>
1.3. <month-day-year>7/23/2001</month-day-year>
1.4. <first name>Alan</first name>
1.5. <àçttûä>øåú</àçttûä>
1.6. <first_name>Alan</first_name>
1.7. <month/day/year>7/23/2001</month/day/year>
1.8. <_4-lane>I-610</_4-lane>
1.9. <téléphone>011 33 91 55 27 55 27</téléphone>
1.10. <4-lane>I-610</4-lane>
2. Pour le document suivant, relevez toutes les fautes et commentez-les. Dites si ce sont des fautes de
validité ou de syntaxe XML et expliquez comment les corriger. Faites le d’abord à la main, puis faites
le faire par lint.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE montypedoc [
<!ENTITY copy "right">
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
document (p*|(élémént,p)*)>
p (a|(a,b))*>
a (#PCDATA)>
b (#PCDATA)>
a (#PCDATA)>
élément (#PCDATA)>
<!ATTLIST document ii ID #REQUIRED>
<!ATTLIST document oo ID #REQUIRED>
<!ATTLIST p att1 NMTOKEN #IMPLIED
att2 IDREFS #IMPLIED>
]>
<document ii="ii" oo=aa>
<élément> Yo !</élément>
<p att1="c2dé">
<b>ole</b>
<b>hop</b>
</p>
<p att2="ii oo">
<a />
<a><b></a>
</p>
%copy; moi-même & toi avec.
</document>
3. XML permet de structurer une information. Le texte suivant contient de l’information « en vrac ».
Réorganisez-le à l’aide de balises XML.
11
Chapitre 5. Exercices : XML
Qu’est-ce que l’intelligence artificielle? C’est au congrès de Dartmouth en 1956 que l’expression «intelligence artificielle» a été proposée pour désigner le domaine de recherche qui s’ouvrait alors. Le succès de cette appellation provient
sans doute de ce qu’elle énonce avec une remarquable économie d’expression une problématique fondamentale: la possibilité de concevoir une machine intelligente. Cela ne signifie pas pour autant que tous les chercheurs de ce domaine
s’accordent sur ce que l’on entend par cela. Que signifie en effet construire une machine intelligente? Historique bref
et lacunaire. À quand remonte l’idée de la possibilité d’une intelligence artificielle? Si l’on veut retenir l’émergence
d’un désir de construire ou de concevoir un homme ou une intelligence artificielle comme moment fondateur, il semble
qu’il faille remonter très loin. Dans l’Iliade (chant XVIII), Hephaïstos (dieu forgeron) crée des femmes en or qui ont la
capacité de parler, travailler, etc. Des servantes s’empressaient pour soutenir le prince, toutes d’or, mais semblables à de
jeunes vivantes; elles ont un esprit dans leur diaphragme; elles ont la voix, la force, et les immortels leur ont appris à
agir.Dans la tradition juive, le Golem est un automate à forme humaine en bois ou en argile. Une inscription magique
sur le front en fait un serviteur muet et obéissant. On cite souvent la machine à calculer de Pascal (1642) comme étant
la première construction effective d’une machine réalisant ce que l’on pouvait croire l’homme, seul capable de faire.
Il semble en fait que la première machine à calculer ait été construite par l’Allemand Wilhelm Schickard en 1623. La
question de savoir ce que révèle de la nature de la pensée le fait que l’arithmétique (élémentaire) soit «reproductible» par
une machine a été posée dés cette époque.
4. Reprenez le texte précédent et produisez en un affichage propre au moyen d’une feuille de style CSS.
12
Chapitre 6. DocBook, présentation
6.1. Historique
Cette partie est extraite de « BlogOKat, Les DTD-DocBook1 ».
DocBook est né en 1992 à la suite d’un projet commun de HaL Computer Systems et l’éditeur O’Reilly visant
à faciliter l’échange de documentation UNIX.
Dans l’introduction du DocBook Install mini-HOWTO2 de Robert B. Easter (version française sur traduc.org)
on trouve :
DocBook est une DTD destinée à la rédaction de livres et d’articles qui «définit un ensemble de balises pour des documents
littéraux, et qui fonctionne comme le langage HTML utilisé habituellement sur le Web. [...] Lors de son traitement, un unique
fichier SGML DocBook peut produire des fichiers HTML, PDF, PS, TXT ou d’autres formats de publication papier ou électronique. Le traitement est régi par des feuilles de style qui peuvent générer automatiquement une table des matières, la numérotation des pages, la numérotation des chapitres et des sections, et bien d’autres possibilités.
Aujourd’hui, c’est le DocBook Technical Committee3 de l’OASIS4 (Organization for the Advancement of
Structured Information Standards) qui se charge de sa maintenance et de son évolution. Initialement développé en SGML5, DocBook est désormais disponible en XML6 et se décline en une version simplifiée
(Simplified DocBook7).
À l’instar de la TEI8, DocBook sert à baliser des textes narratifs, mais on l’utilise surtout pour produire de la
documentation technique dans les domaines de l’informatique, des télécommunications et des technologies
de l’information qu’il vise. Comme il permet de séparer le contenu du document de sa présentation et qu’il
s’agit d’un format libre et largement documenté, il garantit des documents pérennes. Il est particulièrement
adapté au travail partagé de plusieurs auteurs ainsi qu’aux collections importantes de documents devant
être mises à jour ou réorganisées fréquemment.
DocBook comporte près de 400 éléments répartis en 2 catégories :
•
hiérarchie : éléments structurels
•
information : éléments qui contiennent les données elles-mêmes (contenu)
Ses 3 éléments de départ sont :
• Set
: il s’agit de l’élément de plus haut niveau (collection, recueil de livres....).
• Book
: élément de départ le plus commun pour un document DocBook. Il est constitué :
•
d’un titre (Title), sous-titre (Subtitle) et titre abrégé (TitleAbbrev), optionnels,
•
de métainformations (BookInfo) optionnelles
•
et d’un nombre quelconque, dans un ordre quelconque, d’éléments comme préface, chapitre, annexes...
qui peuvent contenir des sections contenant elles-mêmes des paragraphes, des listes, des figures, des
exemples, etc.
: constitué d’une introduction (avec des éléments titre, des métainformations...), du corps de
l’article et d’une conclusion.
• Article
1.
2.
3.
4.
5.
6.
7.
8.
http://blogokat.canalblog.com/archives/2005/01/03/238285.html
http://www.traduc.org/docs/HOWTO/lecture/DocBook-Install.html
http://www.oasis-open.org/docbook/
http://fr.wikipedia.org/wiki/OASIS
http://www.dicodunet.com/definitions/normes/langage-normalise-de-balisage-generalise.htm
http://blogokat.canalblog.com/archives/2004/11/10/166349.html
http://www.docbook.org/tdg/simple/en/
http://blogokat.canalblog.com/archives/2004/12/20/220271.html
13
Chapitre 6. DocBook, présentation
6.2. Que faire avec DocBook ?
Dans l’écriture d’un document DocBook il y a deux étapes bien distinctes :
•
l’écriture proprement dite du texte XML, en respectant la DTD de DocBook ;
•
la transformation de ce texte en un document lisible par un humain moyen (PDF, HTML, etc.)
6.2.1. Les difficultés de l’écriture
Les deux principales difficultés sont sans doute de devoir respecter la syntaxe de XML et la DTD de DocBook.
On essaiera de réduire ces deux difficultés en utilisant un éditeur de texte performant, particulièrement bien
étudié pour la création de textes XML : Quanta (voir la section qui lui est consacrée dans la Bibliographie).
Une autre difficulté sera sans doute pour certains de devoir respecter les règles de typographie française.
Si vous n’êtes pas très à l’aise avec ces règles, vous trouverez quelques liens vers de saines lectures dans la
Bibliographie.
Il faudra cependant en connaître d’abord un minimum, afin de savoir ce qu’on peut faire et ce qui est interdit... Le manuel DocBook9 vous donnera une liste exhaustive des balises utilisables.
6.2.2. Les difficultés de la transformation
Ces difficultés sont surtout d’ordre informatique (c’est-à-dire techniques). Nous donnerons quelques recettes, mais il faut se souvenir que le but de ce cours est de vous sensibiliser à la nécessité de séparer la
structure de la présentation, et non pas de « vous apprendre DocBook ».
9.
14
http://feloy.free.fr/dbmanual/index.html
Chapitre 7. DocBook, les premières balises
Attention
Toutes les balises de DocBook doivent être écrites en minuscules.
7.1. Structure du document
7.1.1. Structure générale
Le document XML de base doit contenir au minimum les entêtes XML. Pour commencer, je vous conseille
d’utiliser ces lignes (à adapter en fonction de la version utilisée, ici 4.1.2) :
<?xml version=’1.0’ encoding="ISO-8859-15" ?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"/usr/share/sgml/docbook/xml-dtd/docbookx.dtd">
Cela indique au programme que c’est un document XML version 1.0, utilisant un codage de caractère ISO8859-15 (europe de l’ouest avec le symbole de l’euro) et la DTD précise que vous allez utiliser.
Il faut ensuite donner le type de document, livre ou article :
<book lang="fr">
ou
<article lang="fr">
Si vous voulez rédiger un article, ne pas oublier de le préciser aussi dans DOCTYPE.
Le document devra bien entendu se terminer par la fermeture de cette première balise (</book> ou </article>).
7.1.2. Différences et points communs entre article et book
La principale différence (en tout cas la plus visible) est la possibilité d’insérer des chapitres (<chapter>) ou
une préface (<preface>) dans un book et pas dans un article.
Ils devront cependant tous deux commencer par un titre (balise <title>).
7.2. Les principales balises de structure
7.2.1. sect1, sect2, sect3, sect4, sect5
Ces balises permettent la structuration du texte en sections, sous-sections, etc., un peu comme les balises
<H1>, <H2>, <H3>, etc. en HTML.
Une section doit contenir au moins une balise de type paragraphe.
7.2.2. para
Un paragraphe de texte, un peu comme <P> ou <DIV> en HTML.
15
Chapitre 7. DocBook, les premières balises
7.2.3. blockquote
Une citation dans le texte, un peu comme <BLOCKQUOTE> en HTML.
Cette balise doit contenir au moins une balise de type paragraphe.
7.2.4. itemizedlist
Réalise une liste non numérotée, comme la balise <UL> en HTML. Doit contenir des éléments listitem.
7.2.5. orderedlist
Réalise une liste numérotée, comme la balise <OL> en HTML. Doit contenir des éléments listitem.
L’attribut numeration permet de définir le type de numérotation : arabic, loweralpha, upperalpha, lowerroman,
upperroman.
7.2.6. listitem
Un élément de liste (numérotée ou non), comme la balise <LI> en HTML. Doit contenir au moins un élément
de type paragraphe.
7.3. Quelques balises d’avertissement
Les balises d’avertissement sont : <warning>, <remark>, <caution>, <tip>, <important>, <note>,
Elles se comportent à peu près toutes de la même façon :
•
elle produisent en général automatiquement un titre (en français si vous l’avez précisé), sauf <remark> ;
•
seules <caution> et <warning> produisent en général automatiquement un cadre ;
•
elle nécessitent que leur contenu soit inclus dans un paragraphe, sauf <remark>.
7.4. Les principales balises d’information sur le document
Un document Docbook commence souvent par une description du document, de ses auteurs, etc. Tout ceci
est regroupé dans une section <bookinfo>. Par exemple pour ce document, nous avons les informations
suivantes :
<bookinfo>
<title>XML, une initiation</title>
<authorgroup>
<author>
<firstname>Dominique</firstname><surname>Gonzalez</surname>
<affiliation>
<orgname>Université Lille3-Charles de Gaulle</orgname>
</affiliation>
</author>
</authorgroup>
<pubdate>&date;</pubdate>
<copyright>
<year>2005</year>
<holder>D.Gonzalez</holder>
</copyright>
<legalnotice>
<para>
Ce document est soumis à la licence GNU FDL. Permission vous
est donnée de distribuer, modifier des copies de ces pages
tant que cette note apparaît clairement.
</para>
</legalnotice>
</bookinfo>
16
Chapitre 7. DocBook, les premières balises
7.5. Quelques balises génériques
7.5.1. emphasis
Mettre en valeur un morceau du texte. Correspond à la balise <EM> en HTML.
7.5.2. ulink
Créer un lien hypertexte, comme la balise <A HREF="..."> en HTML.
L’attribut url permet de préciser l’adresse de destination.
Sa syntaxe peut prendre deux formes :
• <ulink url="lien">bla bla</ulink>, ce qui aura pour effet (au moins dans une sortie HTML) de trans-
former le texte bla bla en lien vers l’adresse lien.
• <ulink url="lien" />, ce qui aura pour effet (au moins dans une sortie HTML) de transformer l’adresse
lien en lien cliquable.
7.6. Références bibliographiques pour les différentes balises
• article
: http://www.docbook.org/tdg/en/html/article.html
• book
: http://www.docbook.org/tdg/en/html/book.html
• para
: http://www.docbook.org/tdg/en/html/para.html
• itemizedlist
• warning
• remark
: http://www.docbook.org/tdg/en/html/warning.html
: http://www.docbook.org/tdg/en/html/remark.html
• caution
• tip
: http://www.docbook.org/tdg/en/html/itemizedlist.html
: http://www.docbook.org/tdg/en/html/caution.html
: http://www.docbook.org/tdg/en/html/tip.html
• important
• note
: http://www.docbook.org/tdg/en/html/important.html
: http://www.docbook.org/tdg/en/html/note.html
• bookinfo
: http://www.docbook.org/tdg/en/html/bookinfo.html
• emphasis
: http://www.docbook.org/tdg/en/html/emphasis.html
• ulink
: http://www.docbook.org/tdg/en/html/ulink.html
• itemizedlist
• orderedlist
• listitem
: http://www.docbook.org/tdg/en/html/itemizedlist.html
: http://www.docbook.org/tdg/en/html/orderedlist.html
: http://www.docbook.org/tdg/en/html/listitem.html
• chapter
: http://www.docbook.org/tdg/en/html/chapter.html
• preface
: http://www.docbook.org/tdg/en/html/preface.html
Et tout le reste : http://www.docbook.org/tdg/en/html/docbook.html.
17
Chapitre 7. DocBook, les premières balises
18
Chapitre 8. DocBook, transformer
Ce chapitre est destiné à vous donner quelques recettes simples pour obtenir une version destinée à l’impression
sur papier ou pour le web de vos documents écrits au format DocBook.
Les considérations techniques ne seront pas abordées ici (au mieux peut-être quelques unes à peine effleurées) car hors de propos avec le but de ce cours.
8.1. Les outils de base
Les programmes db2dvi, db2html, db2pdf, db2ps et db2rtf sont installés. (Explication de texte : db2pdf se
lit db 2 pdf , c’est-à-dire db to pdf , ou encore DocBook vers PDF. Le même principe est à appliquer aux autres
db2XXX.)
Il suffit de taper la commande suivie du nom du document DocBook.
Les formats obtenus sont les suivants :
DVI (DeVice Independant)
Lisible avec xdvi ou kdvi sous linux. Sous Windows, je ne sais pas. C’est le format de sortie normal
d’une compilation LaTeX.
HTML
Lisible avec n’importe quel navigateur web.
PDF (Portable Document Format)
Lisible avec Acrobat Reader sous Windows, et avec acroread, xpdf ou kpdf sous linux.
PS (PostScript)
Lisible avec GhostView sous linux et Windows.
RTF (Rich Text Format)
Lisible avec n’importe quel traitement de textes.
8.2. Utiliser openjade pour produire un PDF
Le principe est simple, la mise en pratique un peu moins, mais ça ne pose pas de vraies difficultés, en suivant
bien le mode d’emploi :
•
on traduit le fichier XML en un fichier TeX grâce à openjade :
openjade -t tex -d DSSL DCL fichierXML
où :
•
fichierXML désigne le nom de votre fichier DocBook.
•
DSSL désigne le fichier DSSL à utiliser ; c’est la feuille de transformation ; si votre système a été installé
correctement, elle existe ; il suffit de la trouver... Sinon vous pouvez trouver sur internet celles des « Norman Walsh’s Modular DocBook Stylesheets ». Vous pouvez aussi télécharger celle-ci1 et la sauvegarder
dans votre répertoire.
•
DCL désigne un fichier de déclarations (d’entités entre autres) ; si votre système a été installé correcte-
ment, il existe ; il suffit de le trouver... Ce sera sans doute quelque chose comme :
/usr/share/sgml/openjade-1.3.2/pubtext/xml.dcl
•
puis on transforme ce fichier TeX en PDF grâce à pdfjadetex :
pdfjadetex fichierTEX
où fichierTEX est le fichier TeX obtenu au point précédent.
1.
http://www.grappa.univ-lille3.fr/polys/xml-DG/exemples/docbook-jadetex.dsssl
19
Chapitre 8. DocBook, transformer
Ne pas hésiter à exécuter cette dernière commande plusieurs fois de suite (au minimum deux fois, mais
trois fois seront sans doute préférables) pour assurer un calcul parfait des références croisées.
8.3. Utiliser xsltproc pour produire des pages web
Le fonctionnement de base est simple :
xsltproc -o fichier_de_sortie feuille_de_style_XSL document_docbook
La seule difficulté est donc d’identifier la feuille de style XSL à utiliser. Si vous en avez envie vous pouvez
écrire la vôtre (hors de propos dans le contenu de ce cours !).
Il en existe cependant quelques unes sur votre système que vous pouvez utiliser directement :
• /usr/share/sgml/docbook/xsl-stylesheets/html/docbook.xsl pour obtenir un seul grand document.
• /usr/share/sgml/docbook/xsl-stylesheets/html/chunk.xsl pour que le document final soit découpé
suivant les chapitres ou sections.
Le résultat est correct, mais manque un peu de fioritures. Vous pouvez y apporter votre grain de sel en utilisant
plutôt une feuille de style intermédiaire dans laquelle vous personnaliserez certaines choses.
En voici un exemple :
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- la feuille de style à utiliser -->
<xsl:import href="/usr/share/sgml/docbook/xsl-stylesheets/html/chunk.xsl"/>
<!-- pour utiliser une feuille de style CSS dans le HTML produit -->
<xsl:param name="html.stylesheet" select="’monstyle.css’"/>
<!-- utiliser une "favicon" dans vos pages -->
<xsl:template name="user.head.content">
<link rel="shortcut icon" href="ma_favicon.ico" type="image/ico" />
</xsl:template>
</xsl:stylesheet>
20
Chapitre 9. Exercices : DocBook
1. Refaites le texte sur l’intelligence artifielle au format DocBook, et produisez en une version par chacun
des programmes db2**, puis comparez les résultats obtenus.
Il est préférable de retaper le texte pour se familiariser avec l’éditeur Quanta plutôt que faire du copiercoller.
2. Produisez un fichier PDF à partir du fichier précédent en utilisant openjade.
3. Produisez un fichier HTML à partir du fichier précédent en utilisant xsltproc.
21
Chapitre 9. Exercices : DocBook
22
Chapitre 10. Exercices sur XML, correction
1.
1.1. Correct
1.2. Incorrect (apostrophe)
1.3. Correct
1.4. Incorrect (présence d’un espace)
1.5. Correct
1.6. Correct
1.7. Incorrect (à cause des /)
1.8. Correct
1.9. Correct
1.10. Incorrect (un nom XML ne commence pas par un chiffre)
2. En guise de solution, voilà ce que produit la commande «xmllint -noout test.xml»:
test.xml:10: validity error : Redefinition of element a
<!ELEMENT
a (#PCDATA)>
^
test.xml:14: validity error : Element document has too may ID attributes defined : oo
<!ATTLIST document oo ID #REQUIRED>
^
test.xml:23: parser error : AttValue: " or ’ expected
<document ii="ii" oo=aa>
^
test.xml:23: parser error : attributes construct error
<document ii="ii" oo=aa>
^
test.xml:23: parser error : Couldn’t find end of Start Tag document line 23
<document ii="ii" oo=aa>
^
test.xml:23: parser error : Extra content at the end of the document
<document ii="ii" oo=aa>
3. Une solution pourrait être:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<grandTitre>
Qu’est-ce que l’intelligence artificielle ?
</grandTitre>
<paragraphe>
C’est au congrès de <ville>Dartmouth</ville> en
<date>1956</date> que l’expression <expression>intelligence
artificielle</expression> a été proposée pour désigner
le domaine de recherche qui s’ouvrait alors. Le succès de cette appellation
provient sans doute de ce qu’elle énonce avec une remarquable économie
d’expression une problématique fondamentale: la possibilité de
concevoir une machine intelligente.
</paragraphe>
<paragraphe>
Cela ne signifie pas pour autant que tous les chercheurs de ce
domaine s’accordent sur ce que l’on entend par cela.
</paragraphe>
<paragraphe>
Que signifie en effet construire une machine intelligente ?
</paragraphe>
<section>
<titre>
Historique bref et lacunaire.
</titre>
23
Chapitre 10. Exercices sur XML, correction
<paragraphe>
À quand remonte l’idée de la possibilité d’une
intelligence artificielle ?
</paragraphe>
<paragraphe>
Si l’on veut retenir l’émergence d’un désir de construire ou
de concevoir un homme ou une intelligence artificielle comme
moment fondateur, il semble qu’il faille remonter très loin.
</paragraphe>
<liste>
<elementDeListe>
<paragraphe>
Dans l’<oeuvre>Iliade</oeuvre> (chant
<romain>XVIII</romain>),
<mythologie>Hephaïstos</mythologie> (dieu forgeron) crée
des femmes en or qui ont la capacité de parler, travailler,
etc. Des servantes s’empressaient pour soutenir le prince,
toutes d’or, mais semblables à de jeunes vivantes; elles
ont un esprit dans leur diaphragme; elles ont la voix, la
force, et les immortels leur ont appris à agir.
</paragraphe>
</elementDeListe>
<elementDeListe>
<paragraphe>
Dans la tradition juive, le <mythologie>Golem</mythologie>
est un automate à forme humaine en bois ou en argile. Une
inscription magique sur le front en fait un serviteur muet
et obéissant.
</paragraphe>
</elementDeListe>
<elementDeListe>
<paragraphe>
On cite souvent la machine à calculer de
<personne>Pascal</personne> (<date>1642</date>) comme étant
la première construction effective d’une machine réalisant
ce que l’on pouvait croire l’homme, seul capable de
faire. Il semble en fait que la première machine à
calculer ait été construite par l’Allemand
<personne>Wilhelm Schickard</personne> en <date>1623</date>.
</paragraphe>
<paragraphe>
La question de savoir ce que révèle de la nature de la
pensée le fait que l’arithmétique (élémentaire) soit
<expression>reproductible</expression> par une machine a
été posée dés cette époque.
</paragraphe>
</elementDeListe>
</liste>
</section>
</document>
Mais c’est très subjectif... En tout cas vérifiez votre solution avec xmllint.
4. Une solution pourrait être:
document {
background:#BFF;
color:#80F;
}
grandTitre {
display:block;
text-align:center;
font-size:160%;
background:#fff;
color:red;
border:thin blue solid;
margin:5px;
padding:10px;
}
paragraphe {
display:block;
margin:1em;
24
Chapitre 10. Exercices sur XML, correction
}
personne {
font-style: italic;
font-variant: small-caps;
color:green;
}
section {
margin-top:1em;
}
titre {
display:block;
font-size:130%;
border:thin blue solid;
background:#7AFFF6;
margin:5px;
padding:5px;
}
expression {
font-style: italic;
}
expression:before{
content:"« ";
}
expression:after{
content:" »";
}
oeuvre,mythologie {
font-style: oblique;
color:blue;
}
romain{
font-variant: small-caps;
font-size:90%;
}
ville{
font-style: oblique;
color:red;
}
date{
color:#444;
font-weight:bold;
}
Mais là aussi c’est très subjectif... Vous pouvez voir le résultat sur le web1.
1.
http://www.grappa.univ-lille3.fr/polys/xml-DG/exemples/xml01.xml
25
Chapitre 10. Exercices sur XML, correction
26
Chapitre 11. Exercices sur DocBook, correction
1. Une solution pourrait être :
<?xml version=’1.0’ encoding="ISO-8859-15" ?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"/usr/share/sgml/docbook/xml-dtd/docbookx.dtd">
<article lang="fr">
<title>Qu’est-ce que l’intelligence artificielle&nbsp;?</title>
<para>
C’est au congrès de Dartmouth en 1956 que l’expression
<emphasis>intelligence artificielle</emphasis> a été proposée
pour désigner le domaine de recherche qui s’ouvrait alors. Le
succès de cette appellation provient sans doute de ce qu’elle
énonce avec une remarquable économie d’expression une
problématique fondamentale&nbsp;: la possibilité de concevoir
une machine intelligente.
</para>
<para>
Cela ne signifie pas pour autant que tous les chercheurs de ce
domaine s’accordent sur ce que l’on entend par cela. Que
signifie en effet construire une machine intelligente&nbsp;?
</para>
<sect1>
<title>Historique bref et lacunaire</title>
<sect2>
<title>
À quand remonte l’idée de la possibilité d’une
intelligence artificielle&nbsp;?
</title>
<para>
Si l’on veut retenir l’émergence d’un désir de
construire ou de concevoir un homme ou une
intelligence artificielle comme moment fondateur, il
semble qu’il faille remonter très loin. Dans
l’<citetitle>Iliade</citetitle> (chant XVIII),
<author><surname>Hephaïstos</surname></author> (dieu
forgeron) crée des femmes en or qui ont la capacité de
parler, travailler, etc. Des servantes s’empressaient
pour soutenir le prince, toutes d’or, mais semblables
à de jeunes vivantes; elles ont un esprit dans leur
diaphragme; elles ont la voix, la force, et les
immortels leur ont appris à agir.
</para>
<para>
Dans la tradition juive, le
<author><surname>Golem</surname></author> est un
automate à forme humaine en bois ou en argile. Une
inscription magique sur le front en fait un serviteur
muet et obéissant.
</para>
<para>
On cite souvent la machine à calculer de
<author><surname>Pascal</surname></author> (1642)
comme étant la première construction effective d’une
machine réalisant ce que l’on pouvait croire l’homme,
seul capable de faire. Il semble en fait que la
première machine à calculer ait été construite par
l’Allemand <author><surname>Wilhelm Schickard
</surname></author>en 1623.
</para>
27
Chapitre 11. Exercices sur DocBook, correction
<para>
La question de savoir ce que révèle de la nature de la
pensée le fait que l’arithmétique (élémentaire) soit
<emphasis>reproductible</emphasis> par une machine a
été posée dés cette époque.
</para>
</sect2>
</sect1>
</article>
28
Chapitre 12. Bibliographie
Ce cours est basé sur de nombreuses lectures. En voici quelques unes..
12.1. XML
•
Les notes de cours1 de Marc Tommasi
•
Les notes de cours2 de Fabien Torre
•
Supports de Cours3 de Didier Ferment
•
Tutoriel XML4 sur http://www.zvon.org
•
Introduction à XML5 par Martin Sévigny.
•
XML : pour quoi faire?6, journée d’étude organisée par l’Association des professionnels de l’information
et de la documentation (ADBS) le 4 décembre 2001 à Paris
12.2. XML, plus loin
•
XML et les bases de données7 de Ronald Bourret
•
Introduction à XML et XSLT8, chapitre 2 du livre Comprendre XSLT de Bernd Amann et Philippe Rigaux
publi? chez O’Reilly.
•
XML + XSL9
12.3. DocBook
•
BlogOKat: Les DTD: DocBook10
•
DocBook, la quatrième dimension de la documentation technique11
•
Manuel docbook12
•
Docbook tutorials13, dont plusieurs en français
•
Utilisation simplifiée de Docbook14
•
Créer des documents PDF avec DocBook15
•
Chapter 5. DocBook Introduction16
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
http://www.grappa.univ-lille3.fr/~tommasi/Homepage/SurXml.html
http://www.grappa.univ-lille3.fr/~torre/guide.php?id=coursxmlintro
http://www.u-picardie.fr/~ferment/indexcours.html
http://www.zvon.org/xxl/XMLTutorial/General_fre/book.html
http://www.ajlsm.com/formation/xml/notes/html/accueil.html
http://www.adbs.fr/uploads/journees/2551_fr.php
http://www.campusxml.org/news/fullstory.php/aid/614/XML_et_les_bases_de_donn%E9es.html
http://cortes.cnam.fr:8080/cocoon/SITE/xb-intro.pdf
http://www.developpez.biz/downloads/xml/cours-xml-xls.pdf
http://blogokat.canalblog.com/archives/2005/01/03/238285.html
http://camille.begnis.org/publications/DocBook/DocBook.pdf
http://feloy.free.fr/dbmanual/index.html
http://wiki.docbook.org/topic/DocBookTutorials
http://cvs.orion.education.fr/homepages/docbooks/docbook/index.html
http://www.linuxfocus.org/Francais/May2000/article152.shtml
http://i18n.kde.org/doc/doc-primer/docbook-intro.html
29
Chapitre 12. Bibliographie
12.4. DocBook, plus loin
•
Appendix A. KDE DocBook Reference17
•
Générer du DocBook XML à partir de documents OpenOffice.org18
•
Utiliser XSL pour transformer XML en HTML19
•
Le Wiki DocBook20 (en français)
•
DocBook to LaTeX21
•
DocBookPublishingTools22
•
DocBookCustomization23
12.5. Quanta
•
Quanta - An application for your needs24
•
Quanta25
•
Quanta KDE DocBook Toolbars26
12.6. Règles de typographie
•
Règles de typographie française27 applicables à l’écriture d’articles, de comptes rendus de réunions, de
projets, de messages électroniques ou de pages HTML
•
Règles de typographie et fautes fréquentes28
•
Règles de typographie française29
•
Typographie et mise en page30
•
Règles de ponctuation et de typographie31
•
Règles de typographie32
12.7. Les inconvénients du WYSIWYG
•
LaTeX, réapprendre à utiliser un traitement de texte33 (voir le paragraphe 2.2). Provient de Framasoft34.
•
After Word: l’avenir du traitement de texte35
•
Approche critique de l’outil traitement de textes36
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
30
http://i18n.kde.org/doc/doc-primer/docbook-reference.html
http://www.indesko.com/sites/fr/telechargements/ooo2dbk/view
http://conforme.phidji.com/conforme_article.asp?id=18112000
http://wiki.docbook.org/topic
http://dblatex.sourceforge.net/
http://wiki.docbook.org/topic/DocBookPublishingTools?action=show&redirect=DocBookTransformationTools
http://wiki.docbook.org/topic/DocBookCustomization
http://quanta.kdewebdev.org/presentations/fisl6/html/
http://logiciels-libres-cndp.ac-versailles.fr/article.php3?id_article=181
http://kde-apps.org/content/show.php?content=16281
http://www.dsi.univ-paris5.fr/typo.html
http://francois.huet.free.fr/typographie/
http://www.framasoft.net/article2225.html
http://www.interpc.fr/mapage/billaud/typopao.htm
http://www.interpc.fr/mapage/billaud/ponctua.htm
http://www.grappa.univ-lille3.fr/~gonzalez/enseignement/commun/ecrire/ecrire002.html#toc6
http://www.framasoft.net/IMG/adlLaTeX.pdf
http://www.framasoft.net/article3152.html
http://www.internatif.org/bortzmeyer/afterword/afterword.html
http://tnemeth.free.fr/linuxdocs/tt.html
Chapitre 12. Bibliographie
12.8. Exercices
•
Fiche d’exercice n. 1: Document et outils XML37 (Silvano Dal-Zilio, CNRS-LIF, 2004)
•
Exercices XML38 (Marc Tommasi, Lille3, 2005)
37. http://www.cmi.univ-mrs.fr/~dalzilio/MasterI2A/CORRECTION-LAB1/tp1.html
38. http://www.grappa.univ-lille3.fr/~tommasi/Homepage/ExercicesXml.html
31
Chapitre 12. Bibliographie
32
Index
Acrobat Reader, 19
acroread, 19
alphabets, 4
article, 15
attribut, 3
balise, 3, 3
base de données, 3
blockquote, 16
book, 15
bookinfo, 16
bureautique, 3
caractères
non accessibles au clavier, 5
réservés, 4
casse, 4
catalogue, 8
caution, 16
chimie, 3
codage, 3
CSS, 6
CVS, 10
db2dvi, 19
db2html, 19
db2pdf, 19
db2ps, 19
db2rtf, 19
DocBook, 1, 3
document
bien formé, 3, 5
valide, 7
documentation technique, 13
DTD, 5, 7, 7, 13
édition, 3
emacs, 1
emphasis, 17
entité, 3
feuille
de style, 9, 10
de transformation, 9, 10
XSLT, 9
FO, 9
FOP, 6
GhostView, 19
graphisme, 3
HTML, 1, 2
important, 16
interopérabilité, 3
ISO-8859-15, 15
itemizedlist, 16
jabber, 3
kdvi, 19
kpdf, 19
langage
de balisage, 3
de représentation de données, 3
LaTeX, 9, 19
libxml, 8
listitem, 16
livre, 15
MathML, 3
mathématiques, 3
musique, 3
note, 16
OASIS, 13
openjade, 1, 19
OpenOffice, 3, 9
orderedlist, 16
ordre de fermeture des balises, 4
para, 15
PDF, 1, 2, 9
pdfjadetex, 19
QBullets, 2
Quanta, 1
remark, 16
RSS, 3
SGML, 8
SVG, 3
symbole, 4
syntaxe, 7
séparation données-traitement, 1
tip, 16
typographie, 14
ulink, 17
UTF-8, 4
validation, 7
externe, 8
interne, 8
version, 2
warning, 16
WYSIWYG, 1
xdvi, 19
XHTML, 3, 10
XML, 1
xmllint, 5
XPATH, 9, 10
xpdf, 19
XSL-FO, 6
XSLT, 6, 9, 9, 10
xsltproc, 1, 10, 20
33