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 :

filtrer le noeud, récupérer l'attribut [XPATH 1.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut filtrer le noeud, récupérer l'attribut
    Bonjour à tous,

    Je souhaite remplacer la valeur d'un attribut par celle d'une autre balise pointée justement par la valeur courante de l'attribut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:template match="node()">
    	<xsl:copy>
    		<xsl:copy-of select="@*[local-name()!='ref']" />
    		<xsl:attribute name="ref"><xsl:value-of select="//po[@idm=@ref]/@id" /></xsl:attribute>
    		<xsl:apply-templates select="node()" />
    	</xsl:copy>
    </xsl:template>
    Comme on peut e voir, je copie la balise courante, je copie les attributs qui ne sont pas "ref", je récrée l'attribut "ref" en tentant de changer sa valeur, puis je copie les noeuds fils.
    => "ref" est sensé prendre la valeur de l'attribut "id" d'une balise "po" (supposée unique) dont l'attribut "idm" correspond à "ref".

    Je pense que mon filtre est maladroit (surtout si "po" avait un attribut ref) ; mais je ne vois pas comment l'écrire autrement.

    Merci de votre avis, comme d'hab'

  2. #2
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Il faut passer par une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:variable name="ref" select="@ref"/>
    <xsl:attribute name="ref"><xsl:value-of select="//po[@idm=$ref]/@id" /></xsl:attribute>

  3. #3
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut
    Merci, trop fort
    je me prends encore pas mal les pieds dans le tapis ; j'ai même essayé de passer par un template de @ref avec "//po[@idm=.]/@id"

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

Discussions similaires

  1. Comment récupérer le texte d'un noeud selon son attribut ?
    Par chico83 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 19/12/2014, 10h02
  2. [Xpath] Sélection des noeuds dont un attribut
    Par toxine dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 29/01/2007, 14h22
  3. [VB.Net] Comment récupérer les Attributs LDAP ?
    Par le Daoud dans le forum VB.NET
    Réponses: 6
    Dernier message: 03/03/2006, 11h45
  4. Récupérer l'attribut action d'un formulaire
    Par boubouh dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 04/02/2006, 15h19
  5. Réponses: 3
    Dernier message: 27/07/2004, 12h01

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