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 : 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
<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.