(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/>