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 :

[XSL] utiliser une variable pour nom d'élément


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut [XSL] utiliser une variable pour nom d'élément
    Salut,
    j'ai une variable déclarée en début de XSL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="TypeAtt" select="TYPE"/>
    Je souhaite la réutiliser dans mon code un peu plus loin dans un bloc type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		<xsl:element name="CODE">
    			<xsl:attribute name="$TypeAtt">S</xsl:attribute>
    			<xsl:value-of select="$ValueCodeId"/>
    		</xsl:element>
    ça ne marche pas...
    comprends pas.
    Merci

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		<xsl:element name="CODE">
    			<xsl:attribute name="{$TypeAtt}">S</xsl:attribute>
    			<xsl:value-of select="$ValueCodeId"/>
    		</xsl:element>

  3. #3
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    XMLSPY me dit not a QNAME
    concernant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:attribute name="{$TypeAtt}">S</xsl:attribute>

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    En plus de la correction d'erwy, corrige :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="TypeAtt" select="'TYPE'"/>
    Si tu n'utilises pas les quotes, TYPE n'est pas considéré comme une chaîne littérale mais comme une requête XPath sur le noeud TYPE. Evidemment, la requête ne renvoie rien, donc la variable TypeAtt est vide et donc le <xsl:attribute> échoue car on ne peut pas créer un attribut sans nom...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    hummm.... ça marche sauf que (évidemment)
    cela ne marche pas ds les templates. ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template name="FUEL">
    		<xsl:param name="mainObj"/>
    		<xsl:element name="CATEGORY">
    			<xsl:attribute name="{$TypeAtt}">S</xsl:attribute>
    			<xsl:value-of select=".//codeCat"/>
    		</xsl:element>

    Invalid variable referenceError in XPath expression
    Pourtant je l'ai mis au début de mon xsl, la variable devrait avoir une portée suffisante

  6. #6
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    pardon c bon g corrigé
    Mais je ne comprend qd il faut mettre $var ou {$var}
    c pas très intuitif

  7. #7
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par tiscars
    pardon c bon g corrigé
    Mais je ne comprend qd il faut mettre $var ou {$var}
    c pas très intuitif
    grandfather pourra sans doute completer
    Pour ce que j'en sais a part le select les attributs xslt n'aime pas les variables donc le recours {} ;Pour les match des templates,pas possible d'aucune facon que je sache

  8. #8
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    ok merci les gars!

  9. #9
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Les accolades {} servent à définir des Attribute Value Templates qui sont utilisés pour exprimer des valeurs d'attributs. Dès que le processeur rencontre un Attribute Value Template, il évalue la requête XPath qu'il contient et remplace le Attribute Value Template par le résultat de cette évaluation.

    On peut donc les utiliser partout dans les valeurs d'attributs où est attendu une valeur littérale.

    Dans les balises HTML et plus généralement toutes les balises hors de l'espace de nom xsl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <table bgcolor="{/tableau/@couleur}">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:variable name="url" select="'http://www.monsiteamoiquejai.com'"/>
    <a href="{$url}">Lien vers mon site</a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="{/site/divs/classes[3]}">
    Il n'est également pas rare de les trouver dans des balises xsl, notamment :
    - les attributs name et namespace de l'élément <xsl:attribute>
    - les attributs name et namespace de l'élément <xsl:element>
    - certains attributs de l'élément <xsl:number>, <xsl:sort> et <xsl:processing-instruction">

    [EDIT] On ne peut pas les substituer à des requêtes XPath ; c'est pour cela qu'on ne peut pas les utiliser dans les attributs select et match des éléments xsl (ca n'a donc rien à voir avec les variables)
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  10. #10
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par GrandFather
    [EDIT] On ne peut pas les substituer à des requêtes XPath ; c'est pour cela qu'on ne peut pas les utiliser dans les attributs select et match des éléments xsl (ca n'a donc rien à voir avec les variables)
    Tu parle bien entendu des {},les variables sont tous a fait possible dans l'attribut select.
    Pas besoin de me remercier pour avoir preciser ta pensée,j'a dore ca

  11. #11
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    salut,
    comment donner à un élément, le nom d'une variable?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:element nam="$var"></element>
    ...marche pas

    merci

  12. #12
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    de plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:element name={$var}>...</element>
    marche pas non plus

  13. #13
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    $var n'est sans doute pas de type string

  14. #14
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    pardon je me trompe, il s'agissait non pas d'une variable mais d 'un parametre (comme dit ds l'autre topic..)
    dsl

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/05/2008, 11h51
  2. Réponses: 9
    Dernier message: 25/02/2008, 11h40
  3. Utiliser une variable pour stocker les noms d'objets.
    Par en_gel_ho dans le forum Access
    Réponses: 4
    Dernier message: 03/01/2007, 16h44
  4. Utiliser une variable comme nom de fichier
    Par lo00_ dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/06/2006, 13h57
  5. [curseurs] utiliser une variable comme nom de champ
    Par Christian31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2005, 14h12

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