TechWeb
Accueil Codage HTML CSS DESIGN XML LaboCSS

Arbre d'un document XML

Exemple de document XML

<?xml version="1.0"?>

<courrier>

<destinataire> albert@free.fr</destinataire>

<expediteur> anne@ifrance.com</expediteur>

<date>

<jour> 15 </jour>

<mois> septembre </mois>

<annee> 2005 </annee>

</date>

<contenu langue="fr">

<objet> rappel</objet>

<texte> réunion le 20</texte>

<attachement fichier = "resume.txt" />

</contenu>

</courrier>

L'arbre correspondant

Construction de l'arbre

Algorithme

On parcours le document linéairement en réalisant le traitement suivant au fur et à mesure

  1. La balise ouvrante de la racine du document constitue le noeud racine de l'arbre et devient le noeud courant
  2. En rencontrant une balise ouvrante on crée un nouveau noeud fils du noeud courant. Ce nouveau noeud porte le nom de la balise ouvrante et devient le noeud courant
  3. En rencontrant un contenu textuel on crée un nouveau noeud fils du noeud courant libellé du contenu textuel
  4. En rencontrant une balise fermante on remonte au noeud parent qui devient le noeud courant
  5. En rencontrant une balise vide, on créé un nouveau noeud fils du noeud courant. Le noeud courant n'est pas modifié
  6. Lorsqu'on aboutit à la balise fermante de la racine l'arbre est complet.

Application

ordre code règle noeud courant
1 <courrier> 1 courrier parcours d'arbre
2 <destinataire> 2 destinataire
3 albert@free.fr 3 destinataire
4 </destinataire> 4 courrier
5 <expéditeur> 2 expéditeur
6 anne@ifrance.com 3 expéditeur
7 </expéditeur> 4 courrier
8 <date> 2 date
9 <jour> 2 jour
10 15 3 jour
11 </jour> 4 date
12 <mois> 2 mois
13 septembre 3 mois
14 </mois> 4 date
15 <annee> 2 annee
16 2005 3 annee
17 </annee> 4 date
18 </date> 4 courrier
19 <contenu langue="fr"> 2 contenu
20 <objet> 2 objet
21 rappel 3 objet
22 </objet> 4 contenu
23 <texte> 2 texte
24 réunion le 20 3 texte
25 </texte> 4 contenu
26 <attachement
fichier = "resume.txt" />
5 contenu
27 </contenu> 4 courrier
28 </courrier> 6  
Valid XHTML 1.0 Strict Valid CSS!

Copyright Gabriel Braun 2007