Objectifs :
- Expliquer la notion de noeud relativement aux données XML pour mieux en comprendre la combinaison avec DTD, XSLT, XHTML et CSS
Les noeuds XML par l'exemple
Un exemple imagé de noeuds
|
Définition
Si l'on veut créer une page XML ou XHTML avec des informations sur des sites touristiques comme dans l'exemple de gauche, il est pertinent au préalable d'en organiser la structure de noeuds. Un noeud est un composant particulier d'un document XML et par la même XHTML. Comme vous voyez dans l'exemple ça peut-être (regarder les couleurs dans l'exemple à gauche) :
- un élément
- un attribut
- ou un contenu textuel.
La notion d'arborescence XML
Une arborescence XML est composée uniquement de noeuds, chacun étant relié l'un à un autre. Comme on le voit les noeuds sont organisés en arborescence suivant cette hiérarchie :
- Le sommet de l'arbre est nommé racine, il est représenté par la barre bolique tout en haut, ici c'est par exemple "TOURISME", il contient tous les autres noeuds, notamment "Sites touristiques" dans l'exemple :
- "Sites touristiques" est le noeud père du noeud "Site";
- Le noeud "Site" a lui-même (donc contient) sept noeuds fils : nom, nom, lieu, hauteur, historique, image_principale et source);
- Chacun étant le frère de l'autre. Chacun des ces noeuds étant des descendants des noeuds "Site" et "Sites touristiques" et de "TOURISME" la racine;
- Il y a des éléments comme "Nom" qui ont des noeuds attribus comme "Langue";
- Biensûr à l'intérieur d'un élément il peut y avoir du texte.
|
Une fois définie l'arborescence on peut créer la DTD
|
Comme vous voyez la DTD reprend l'arborescence. Le noeud père "sites_touristiques" à comme fils "site". Il peut d'ailleurs avoir plusieurs fils "site" de par le * placer à côté. Un noeud "site" contient lui-même plusieurs noeuds, qui sont frère. Ici nous avons : nom*(plusieurs noeuds "nom" possibles), lieu, hauteur, historique, image_principale, source). "#PCDATA" signifie la valeur textuelle de l'élément.
Le balise ATTLIST sert à défini l'attribut d'un élément, ici l'attribut "unite" de l'élément "hauteur", ainsi que l'attribut "langue" de l'élément "nom".
Vous pourrez examiner ce Tutoriel DTD pour comprendre l'exercice. A partir de l'arborescence ci-dessus on peut créer cette DTD :
<!ELEMENT sites_touristiques(site*)>
<!ELEMENT site(nom*, lieu, hauteur, historique, image_principale, source)>
<!ELEMENT nom(#PCDATA)>
<!ATTLIST nom langue CDATA #IMPLIED>
<!ELEMENT lieu(#PCDATA)>
<!ELEMENT hauteur(#PCDATA)>
<!ATTLIST hauteur unite CDATA #IMPLIED>
<!ELEMENT historique(#PCDATA)>
<!ELEMENT image_principale(#PCDATA)>
<!ELEMENT source(#PCDATA)>
|
Une fois définie l'arborescence on peut créer la DTD
|
Définition
Si l'on veut créer une page XML ou XHTML avec des informations sur des sites touristiques comme dans l'exemple de gauche, il est pertinent au préalable d'en organiser la structure de noeuds. Un noeud est un composant particulier d'un document XML et par la même XHTML. Comme vous voyez dans l'exemple ça peut-être (regarder les couleurs dans l'exemple à gauche) :
- un élément
- un attribut
- ou un contenu textuel.
Création d'une page XHTML par l'intermédiaire de XSLT
Une arborescence XML est composée uniquement de noeuds, chacun étant relié l'un à un autre. Comme on le voit les noeuds sont organisés en arborescence suivant cette hiérarchie :
- Le sommet de l'arbre est nommé racine, il est représenté par la barre bolique tout en haut, ici c'est par exemple "TOURISME", il contient tous les autres noeuds, notamment "Sites touristiques" dans l'exemple :
- "Sites touristiques" est le noeud père du noeud "Site";
- Le noeud "Site" a lui-même (donc contient) sept noeuds fils : nom, nom, lieu, hauteur, historique, image_principale et source);
- Chacun étant le frère de l'autre. Chacun des ces noeuds étant des descendants des noeuds "Site" et "Sites touristiques" et de "TOURISME" la racine;
- Il y a des éléments comme "Nom" qui ont des noeuds attribus comme "Langue";
- Biensûr à l'intérieur d'un élément il peut y avoir du texte.
|
<xsl:template match="site">
<xsl:value-of select="nom langue=""/>
</xsl:template>
Une fois définie l'arborescence on peut créer la DTD