Salut,
encore un problème sur mon projet (ces saletés de fichiers XML sont pas du tout aux normes !)
Comment on fait pour traiter toutes les balises enfants d'une balise, si elles sont différentes ? J'ai des fichiers qui décrivent un texte enrichi, les balises enfant de ma balise CONTENU sont soit des paragraphes, soit des références a des images.
Le resultat voulu avec cet exemple serait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <CONTENU> <AL> Du texte <G>enrichi</G> pour le paragraphe. Avec des fois des <REFINT ID="un_id">references</REFINT> </AL> <REFMEDIA ID="un_id" file="dossier/fichier.xml" img="nmo_image.gif" /> <AL>Et puis encore du texte</AL> </CONTENU>
C'est a dire que je souhaite parcourir ma balise CONTENU pour afficher le texte quand je rencontre un AL et l'image quand je rencontre un MEDIA. Mais dans ce que j'ai fait pour l'instant, ca parcoure tout CONTENU, traite tout les AL a la suite et, a la fin, reparcoure CONTENU pour traitre les REFMEDIA. Donc je me retrouve avec tout mon texte et, en bas de page, toutes mes images.
Comment tout traiter en une seule fois et afficher les image a leur place au sein du texte ?
Mon essai XSL :
Bien sur (je précise) impossible de modifier les XML, il faut les accepter tels qu'ils sont.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <xsl:template match="/"> <xsl:apply-templates select="CONTENU/AL"/> <xsl:apply-templates select="CONTENU/REFMEDIA"/> </xsl:template> <!-- Mettre en paragraphe tout le texte entre balises AL --> <xsl:template match="CONTENU/AL"> <p> <xsl:apply-templates/> </p> </xsl:template> <!-- Texte en gras --> <xsl:template match="G"> <strong> <xsl:value-of select="." /> </strong> </xsl:template> <!-- Afficher references aux media --> <xsl:template match="CONTENU/REFMEDIA"> <!-- Affichage de mon image --> </xsl:template>
Partager