IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT]Parcours une variable créée "à la main"


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Par défaut [XSLT]Parcours une variable créée "à la main"
    Salut,

    Ma question est simple. J'ai cette variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      <xsl:variable name="typeMedia">
        <item titre="ConcertCite" />
        <item titre="ConcertHorsCite" />
        <item titre="Documentaire" />
      </xsl:variable>
    Je souhaite la parcourir dans un for-each :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:for-each select="$typeMedia/item">
    </xsl:for-each>
    Et mon parser (msxml) me dit qu'il faut que la variable corresponde à une liste de noeuds...

    Je ne comprends pas ce qui cloche...

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    En xslt 1.0, un variable ne peut contenir de noeuds, mais de nombreux processeurs le supporte quand même via des expressions propres. J'ignore celles de msxml.
    Avec saxon ta syntaxe marcherait, mais j'engloberais ta serie de noeuds par un noeud racine <items>...</items>.
    avec xalan, il faudrait ajouter xalan:nodeset($typeMedia)//item

  3. #3
    Membre éclairé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Par défaut
    Merci pour cette réponse rapide.

    Ça fait déjà une heure que je cherche une solution mais comme je n'ai que trois valeurs à mettre dans ma variable je vais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
              <xsl:call-template name="typeMedia">
                <xsl:with-param name="typeMedia" select="'ConcertCite'" />
              </xsl:call-template>
              <xsl:call-template name="typeMedia">
                <xsl:with-param name="typeMedia" select="'ConcertHorsCite'" />
              </xsl:call-template>
              <xsl:call-template name="typeMedia">
                <xsl:with-param name="typeMedia" select="'Documentaire'" />
              </xsl:call-template>

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    J'ai trouvé une syntaxe qui marche avec msxml :
    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
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    	xmlns:msxml="urn:schemas-microsoft-com:xslt"
    	extension-element-prefixes="msxml"
    	>
     
      <xsl:variable name="typeMedia">
    	<items>
    	    <item titre="ConcertCite" />
    	    <item titre="ConcertHorsCite" />
    	    <item titre="Documentaire" />
        </items>
      </xsl:variable>
     
    <xsl:template match="/">
    	<r>
    		<xsl:value-of select="msxml:node-set($typeMedia)//item[1]/@titre"/>
    	</r>
    </xsl:template>
     
     
    </xsl:stylesheet>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] Réutiliser une variable définie dans une boucle
    Par DelphLaga dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/10/2006, 16h49
  2. [XSLT]Mettre une variable comme attribut
    Par Oberown dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 29/09/2006, 10h47
  3. [XSLT] incrementer une variable
    Par Landolsi dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 02/11/2005, 10h44
  4. [XSLT] incrémenter une variable
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/09/2005, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo