<texit info> author=E. Bruno title=XML TP1 </texit>

TP1 - Edition de documents XML bien-formés et valides

  • Utilisation des outils de base pour la création et l’édition de documents XML.
  • Vérification des documents bien formés et validation d’un document par rapport à une DTD.
  • (Optionnel) Exemple de transformation avec XSLT vers HTML, XSL puis vers pdf.

Les outils suivant sont utilisables pour l’édition :

Dans le cadre de ces TP, nous utiliserons

Le fichier books.dtd.zip décrit un modèle de document qui permet de représenter une collection de livres. Le fichier books-errors.xml est un document XML exemple qui est une instance de la dtd précédente, il contient des erreurs. Deux types d’erreurs peuvent apparaître. Des erreurs de non-conformité avec le langage XML (balises non fermés, …), on dira alors que le document n’est pas bien formé ; et des erreurs de non conformité par rapport à une DTD, on dira alors que le document n’est pas valide par rapport à cette DTD.

Pour vérifier la conformité d’un document à la norme XML, on utilise un editeur XML (eclipse pour nous) ou un parser (Xerces en ligne de commande) :

java -cp xerces-2_11_0/xercesImpl.jar:xerces-2_11_0/xercesSamples.jar:xerces-2_11_0/xml-apis.jar dom.Counter -v books-errors.xml

En fait, il s’agit d’un application java qui analyse le document en comptant les éléments mais au et à mesure elle vérifie le document.

Corriger les erreurs syntaxiques du document books-errors.xml pour le rendre bien formé.

Pour valider un documents XML par rapport à une DTD, on ajoute un DOCTYPE dans le document pour le lier à cette DTD (enlever le commentaire autour de celui qui est présent et modifier le chemin). Le parser l’utilisera pour vérifier la validité du document. Rendre le document books-errors.xml valide par rapport à la dtd books.dtd.

java -cp xerces-2_11_0/xercesImpl.jar:xerces-2_11_0/xercesSamples.jar:xerces-2_11_0/xml-apis.jar dom.Counter -v books.xml

En utilisant eclipse, exercez vous à ajouter des élements, des attributs et du texte en insérant deux ou trois nouveau livre dans le document XML.

Vous mettrez éventuellement la DTD à jour, et vous validerez le document modifié.

Modifier le document précédent en utilisant les espaces de noms. Vous structurerez de façon plus fine les auteurs pour leur ajouter un title (Dr., Pr., Ms., Mrs., Miss). Pour distinguer les éléments ayant le même nom, vous définirez deux espaces de noms, un pour les livres et un pour les auteurs.

Attention, les DTD ne supportent pas les espaces de noms (cf. schemas) par contre vous pouvez utiliser les noms qualifiés (ie le même préfixe).

Proposer une structuration XML pour les classes et interfaces de la javadoc http://java.sun.com/j2se/1.5.0/docs/api/index.html .Vous détaillerez un exemple avec les classes String et StringBuilder. Attention, le site Web est orienté présentation mais votre document XML devra décrire la structure logique. Vous utiliserez en particulier la possibilité de décrire des listes et des tableaux et les références internes.

A partir des balisages que vous venez de définir, proposer une DTD javadoc.dtd et valider les deux documents.

La DTD docbook (ainsi qu’une version simplifié) sont présentés sur les sites http://www.docbook.org et http://www.oasis-open.org/docbook/. Un exemple simple de document se trouve dans le fichier sample-docbook.xml.

La documentation complète de docbook écrite en XML se trouve ici : http://docbook.svn.sourceforge.net/viewvc/docbook/trunk/defguide/en/, une version HTML (générée automatiquement) est disponible ici : http://www.docbook.org/tdg/en/html/docbook.html.

La DTD est ici http://www.oasis-open.org/docbook/xml/

les feuilles de style là : http://sourceforge.net/projects/docbook/ (Plus d’information http://sagehill.net/docbookxsl/index.html).

Écrire le manuel d’utilisation d’un projet que vous avez réalisé en utilisant la DTD docbook.

Un document XML peut être transformé en un autre document XML (ou en un fichier texte) en utilisant des feuilles de style XSLT (celles-ci seront étudiées ultérieurement en cours, nous allons ici simplement les utiliser).

Trois feuilles de style sont proposées pour transformer un document XML valide pour la DTD docbook en

  • HTML : docbook-xsl-1.77.1/html/docbook.xsl
  • XHTML : docbook-xsl-1.77.1/xhtml/docbook.xsl
  • XSL-FO : docbook-xsl-1.77.1/fo/docbook.xsl

Il faut utiliser un processeur XSLT (Saxon par exemple). La commande pour appliquer une feuille de style de xhtml est :

 java -cp saxon9he.jar net.sf.saxon.Transform -strip:all -s:sample-docbook.xml -xsl:docbook-xsl-1.77.1/xhtml/docbook.xsl -o:sample-document.xhtml
 

Transformer le document de l’exercice précédent en un document HTML, puis en un document XHTML/XHTML5.

La troisième feuille de style produit un document XML dans un format appelé FO (Formating Object) qui décrit un document formaté. Ce document peut ensuite être converti vers un format propriétaire (dvi, ps, pdf, . . . ).

Pour réaliser cette transformation, divers outils sont disponibles par exemple FOP (http://xml.apache.org/fop/) .

java -cp saxon9he.jar net.sf.saxon.Transform -strip:all -s:sample-docbook.xml -xsl:docbook-xsl-1.77.1/fo/docbook.xsl -o:sample-document-fo.xml
fop -fo sample-document-fo.xml -pdf sample-document-fo.pdf