Un dictionnaire
Présentation du problème
Un dictionnaire peut être considéré comme une liste de définitions.
Vous avez à votre disposition un ensemble de fichier XML respectant le schéma suivant :
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start>
<element name="definition">
<element name="mot">
<text/>
</element>
<element name="description">
<text/>
</element>
</element>
</start>
</grammar>
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <start> <element name="definition"> <element name="mot"> <text/> </element> <element name="description"> <text/> </element> </element> </start> </grammar>
Le but de cet exercice est de générer, à partir de cet ensemble de fichiers, un fichier HTML présentant l'ensemble de ces définitions.
Question
Téléchargez cette archive contenant une version incomplète de la solution.
Décompressez l'ensemble de son contenu dans un dossier de votre choix.
Question
Lancez Eclipse (choisissez le workspace par défaut).
Ouvrez le fichier build.ant dans Eclipse (Fichier->Ouvrir fichier).
Lancez l'exécution du script (Il ne devrait pas y avoir d'erreurs).
Le résultat s'affiche dans la console.
Question
L'ensemble des chemins utilisés dans le script sont renseignés à son début. Pour alléger le script, passez toutes ces propriétés dans le fichier build.properties. Précisez au script d'utiliser les propriétés qui y sont définies.
La tâche FilesetToXML
Pour effectuer la transformation des fichiers sources, nous allons utiliser la tâche FilesetToXML du package nf29 définie dans le fichier lib/nf29.jar
Cette tâche prend en paramètre :
Un (ou plusieurs) Fileset(s)
Un chemin de fichier de sortie (attribut
output
)
Elle génère un fichier XML contenant la liste des fichiers renvoyés par ce(s) Fileset(s).
Le fichier en sortie doit respecter le schéma contenu dans rng/FilesetToXML.out.rng
<grammar
xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start>
<element name="fileset">
<zeroOrMore>
<element name="file">
<data type="anyURI" />
</element>
</zeroOrMore>
</element>
</start>
</grammar>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <start> <element name="fileset"> <zeroOrMore> <element name="file"> <data type="anyURI" /> </element> </zeroOrMore> </element> </start> </grammar>
Question
Utilisez la balise taskdef
pour préciser au script qu'il va devoir utiliser cette tâche.
La tâche filesetToXML
est identifiée par nf29.FilesetToXML
Appelez cette tâche dans la target
buildTmp avec en paramètre :
Un fileset contenant l'ensemble des fichiers XML contenus dans le dossier
source
L'attribut output à
${tmpdir}/${tmpFileName}
Question
Nous allons maintenant valider le fichier généré dans dossier tmp grâce à la tâche Jing
.
De la même manière qu'avec FilesetToXML
, définissez cette nouvelle tâche et appelez la dans la target
validateTmp.
La tâche jing
est identifiée par com.thaiopensource.relaxng.util.JingTask