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 <, > et & ; • 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é : < > & " ' • 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 ?</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 : 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 ? </para> <sect1> <title>Historique bref et lacunaire</title> <sect2> <title> À quand remonte l’idée de la possibilité d’une intelligence artificielle ? </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