[XSLT] Croiser plusieurs xsl:for-each avec deux documents XML
Salut à tous,
Voilà mon problème. En plus du document XML source que je souhaite transformer, je dois récupérer des valeurs dans un autre fichier XML. Pour y faire appel j'utilise la fonction document().
Voilà ce que ça donne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <xsl:variable name="descripteurs" select="document('../xml/Descripteurs.xml')/DESCRIPTEURS/ITEM" />
<xsl:template name="Descripteurs">
<xsl:for-each select="$descripteurs">
<li>
<xsl:value-of select="@texte"/>
<ul>
<xsl:for-each select="VIDEOS_PUBLIEES/VIDEO">
<xsl:if test="TYPE_CONCERT = $typeMedia">
<xsl:for-each select="DESCRIPTEUR">
<xsl:if test="@Genre = $descripteurs/@texte">
<li style='font-size: medium'>
<xsl:value-of select="../@TITRE" />
</li>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</ul>
</li>
</xsl:for-each>
</xsl:template> |
Gros problème : A partir de la ligne <xsl:for-each select="$descripteurs"> ma feuille XSLT se base sur les noeuds du document extérieur. Quand je fais ensuite <xsl:value-of select="@texte"/>, il prend bien la valeur de l'attribut "texte" d'un des item de la variable $descripteurs.
Par contre quand je fais <xsl:for-each select="VIDEOS_PUBLIEES/VIDEO"> je souhaite qu'il fasse une boucle sur les noeuds VIDEO de mon XML source, et plus de la variable $descripteurs.
Je ne comprends pas comment les différencier (sans parler qu'après j'ai encore moult xs:for-each et xsl:value-of qui font se croiser les deux boucles.
Merci d'avance pour vos éclaircissements.