Noeuds : xml xhtml et DOM

De EduTech Wiki
Aller à la navigation Aller à la recherche

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

Chutes4.jpg

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

Chutes4.jpg

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 crée la DTD l'on peut créer les données XML

Chutes4.jpg
   

        <TOURISME>

              <sites_touristiques>

                 <site>

                     <nom langues="Français">Chutes de Trümmelbach </nom>

                     <lieu>Trümmelbach, Suisse </lieu>

                     <hauteur unité="mètres">32</hauteur> 

                     <historique> </historique>  

                     <image_principale> </image_principale>

                     <source>  </source> 

                </site>


             </sites_touristiques>


        </TOURISME>


Une fois composées le données XML, il est possible de transformer les données XML en données XHTML par l'intermédiaire de XSLT

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output method="html" /> <xsl:template match="TOURISME">

   <html>
     			<head>
       						<title>Page Travaux STAF</title><style type="text/css">h1 {font-size:25px;color:#FFFFFF;}</style>

</head> <body>

<xsl:apply-templates select="nom"/>

</body>

</html>


</xsl:template> <xsl:template match="site">

     <xsl:value-of select="nom"/>

</xsl:template>

</xsl:stylesheet>