Utilisation avancée de Ant

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 :

CTRL+C pour copier, CTRL+V pour coller
1
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2
  <start>
3
4
    <element name="definition">
5
      <element name="mot">
6
        <text/>
7
      </element>
8
9
      <element name="description">
10
        <text/>
11
      </element>
12
    </element>
13
14
  </start>
15
</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.

AntAvance-Properties.zip

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

CTRL+C pour copier, CTRL+V pour coller
1
<grammar 
2
  xmlns="http://relaxng.org/ns/structure/1.0"
3
  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4
  <start>
5
    <element name="fileset">
6
      <zeroOrMore>
7
        <element name="file">
8
          <data type="anyURI" />
9
        </element>
10
      </zeroOrMore>
11
    </element>
12
  </start>
13
</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>

AntAvance-AddTask.zip

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

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Florian AREND, Marouane HAMMI 2014-2015 (Contributions : Stéphane Crozat, les étudiants de NF29) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)