[XSLT] Traitement sequentiel des balises differentes
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.
Code:
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> |
Le resultat voulu avec cet exemple serait :
Citation:
Du texte
enrichi pour le paragraphe. Avec des fois des
references
[l'image]
Et puis encore du texte
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 :
Code:
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> |
Bien sur (je précise) impossible de modifier les XML, il faut les accepter tels qu'ils sont.