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 :

[XPATH] Mise à jour d'un attribut


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut [XPATH] Mise à jour d'un attribut
    Bonjour à tous,

    mon problème est le suivant:

    J'ai un tag avec plusieurs attributs.

    Je souhaiterais mettre à jour la valeur d'un attribut X dans ce tag si ce tag dont la valeur d'un attribut Y est égale à Z

    Exemple de tags:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xfm:bind ref="/FORM.FP7CP-INFSO.1.A2/prop_num" datatype="string" maxLength="9" readOnly="true" required="false" relevant="true" calculate="" isValid=""/>
    <xfm:bind ref="/FORM.FP7CP-INFSO.1.A2/prop_acrnm" datatype="string" maxLength="20" readOnly="true" required="false" relevant="true" calculate="" isValid=""/>
    Je souhaiterais mettre à jour la valeur de l'attribut readOnly à 'false' si la valeur de l'attribut ref = /FORM.FP7CP-INFSO.1.A2/prop_num

    Voilà ma requete xpath

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /form/xfm:model/xfm:bind/[@ref="/FORM.FP7CP-INFSO.1.A2/prop_num"]/@readOnly
    'form' et 'xfm:model' sont des node parents de 'xfm:bind'

    Mais cette requete ne fonctionne pas.

    Auriez-vous une idée pour résoudre cette requête.

    d'avance merci pour vos réponses
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  2. #2
    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
    Salut,

    Cela pourrait provenir du fait que certains éléments appartiennent à un espace de noms particulier ; pour que le moteur XPath puisse savoir à quel espace de noms correspond le préfixe xfm, il faut le lui communiquer. La méthode précise pour se faire dépend du moteur XPath et du langage.
    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

  3. #3
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Bonjour GrandFather,

    en fait l'espace de nom est spécifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form xmlns:xfm="http://www.w3.org/2002/01/xforms">
    Mais utilisant une API Java (Dom4J) pour effectuer le parsing et les modifications dans mon xml, j'ai réussi à trouver un workaround.

    J'instancie une variable de type Element ayant comme ref = /FORM.FP7CP-INFSO.1.A2/prop_num

    Et ensuite j'ajoute un attribut 'readOnly' avec la valeur 'false'.
    Si l'attribut existe déjà il remplace juste la valeur de cet attribut.

    Je ne pige malgré tout pas pourquoi ma requête xpath ne fonctionne pas
    Ma requête est-elle valable d'après toi ??

    Merci quand même pour ton aide.
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  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
    Il faut que tu spécifies au moteur XPath que le préfixe xfm utilisé dans ta requête désigne bien le même espace de noms déclaré dans ta source XML, il est incapable de l'inférer (dans un document XML, un même préfixe peut désigner des espaces de noms différents).

    Pour connaître la marche à suivre, tu peux t'inspirer de ce post : http://www.developpez.net/forums/sho...d.php?t=203283
    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 expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Merci beaucoup pour ton aide.

    Je comprends un peu mieux maintenant.
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

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

Discussions similaires

  1. Mise à jour d'un attribut dans une table
    Par gégé140488 dans le forum Hibernate
    Réponses: 0
    Dernier message: 22/09/2010, 17h18
  2. Réponses: 0
    Dernier message: 21/10/2009, 15h59
  3. Attribut de Mise à jour d'une ligne
    Par moezm7 dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/07/2007, 15h02
  4. Réponses: 5
    Dernier message: 29/05/2007, 10h52
  5. Mise à jour de l'attribut "class"
    Par Bruno2000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/09/2006, 08h00

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