(Courriels de diversion: <civilisa@changerent-projeterent.com> <ramollira@hortensias-rivaliserons.com> <adossera@decaisseras-accueillirent.com> <manufacturions@circonviendrez-temple.com> <chauffee@rêvez-ennuierions.com> <analysions@beurrer-deliera.com> <accomplissions@coupelle-categorie.com> <assureriez@gendarmees-mandats.com> <montrerais@ristourne-chevaucha.com> <giratoires@lâcheriez-exulterons.com> )


...mais c'est pas du Linux.

Je veux afficher en HTML un arbre XML contenant mon <nom/> 
suivi de mon <prenom/> qui sont contenus dans un tag 
<content> </content>

(allez voila le source pour pas vous faire des noeuds:

 <content>
  <nom> Rossel </nom>
  <prenom> Olivier </prenom>
 </content>

 facile....)

en HTML.

Je voudrais que l'affichage en HTML soit le meme pour le 
nom et pour le prenom, c a d en gras (par exemple).

Methode 1:
Dans ma feuille de style XML->HTML, je dis donc que je 
veux que ca se passe comme ca dans <content>:

 <xsl:template match="content">             <-- dans le tag "content"
  <b>                                       <-- met le tag <b> dans la sortie
   <xsl:value-of select="nom"/>             <-- met le contenu du sous-tag "nom" dans la sortie
  </b>                                      <-- met le tag </b> dans la sortie
  <b>                                       <-- met le tag <b> dans la sortie
   <xsl:value-of select="prenom"/>          <-- met le contenu du sous-tag "prenom" dans la sortie
  </b>                                      <-- met le tag </b> dans la sortie
 </xsl:template>

Ca marche bien et ce qui est bien c'est qu'en changeant 
ma stylesheet de cette facon:

 <xsl:template match="content">   
  <b>                             
   <xsl:value-of select="prenom"/>    
  </b>                            
  <b>                             
   <xsl:value-of select="nom"/> 
  </b>                            
 </xsl:template>

J'ai inverse le nom et le prenom dans la sortie HTML, quel 
que soit l'ordre du fichier XML d'origine.
En fait, je hard-code, dans la stylesheet, l'ordre 
d'affichage des sous-tag.

Methode 2:
Dans la stylesheet, je fais quelque chose de generique pour 
tout ce qui doit etre formatte en gras:

 <xsl:template match="content">            <-- dans le tag "content"
  <xsl:for each select="nom|prenom">       <-- selectionne, 1 par 1, chaque sous-tag "nom" ou "prenom" 
   <b>                                     <-- met le tag <b> dans la sortie
    <xsl:value-of select="."/>             <-- met le contenu du sous-tag selectionne dans la sortie
   </b>                                    <-- met le tag </b> dans la sortie
  </xsl:for-each>
 <xsl:template>
 
L'interet de cette methode, c'est d'avoir le code de 
formattage ecrit une seule fois, quel que soit
le nombre  et le type de tags selectionnes.
 
Probleme: je ne suis pas maitre de l'ordre dans lequel 
les tags sont parsés. Cet ordre correspond forcement a 
l'ordre d'apparition dans le XML d'origine.
Si <nom/> est en premier, il sera en premier dans la 
sortie HTML, et le prenom apres.
Si c'est le <prenom/> qui est en premier dans le fichier 
XML, c'est lui qui apparaitra en premier dans la sortie HTML.

Question (ouf, enfin):
La methode 2 me parait infiniment plus propre que la methode 1. 
Existe t'il un moyen de contraindre l'ordre du traitement 
des noeuds XML, en fonction de leur type.

Une mousse a celui qui repond juste. Vous avez 3 heures.

lOlive
(qui fume...)

---------------------------------------------------------------------
Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://www.CULTe.org/>