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 :

copy-of "attributs autres que @class" [XPATH 1.0]


Sujet :

XSL/XSLT/XPATH XML

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

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

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Points : 162
    Points
    162
    Par défaut copy-of "attributs autres que @class"
    Bonjour à tous, je dois être juste à côté de la plaque, mais je ne parviens pas à sélectionner les attributs en filtrant l'un d'entre eux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:copy-of select="@class"/>
    [...]
    <xsl:copy-of select="@*[not('class')]"/>
    l'idée est de traiter d'abord l'attribut "class", d'insérer de nouveaux attributs, et ensuite de traiter les autres attributs présents.
    merci d'avance si qq'un peut me remettre dans le droit chemin !

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

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

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Points : 162
    Points
    162
    Par défaut
    Bon, c'était pas si compliqué : une recherche google (xpath "all attributes but one") m'a mis sur la piste...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:copy-of select="@*[generate-id(.) != generate-id(../@class)]" />
    http://www.cygwin.com/ml/xsl-list/2001-01/msg00740.html

    NB : semble fonctionner aussi, mais ne devrait pas selon explications ci-dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:copy-of select="*[not(self::class)]" />

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

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

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Points : 162
    Points
    162
    Par défaut Bon, un dernier et j'arrête...
    Fonctionne aussi, finalement, c'était pourtant mon premier essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:copy-of select="@*[name()!='class']" />

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    - Attention à l'utilisation de name() : ça devient très imprudent dès qu'il y a des namespaces en jeu.

    - Effectivement, @*[not(self::class)] ne devrait pas marcher avec un moteur compatible. Seul l'axe attribute:: peut sélectionner un attribut (et un attribut n'a pas d'attribut, pas même lui-même.) Mais l'erreur est facile à faire.

    En fait, en présence de namespaces, je crois que la seule manière fiable de faire, c'est avec le generate-id().

  5. #5
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Citation Envoyé par thelvin Voir le message
    - Attention à l'utilisation de name() : ça devient très imprudent dès qu'il y a des namespaces en jeu.
    C'est pour cela qu'il existe local-name().

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Pas mieux. Comment tu fais la différence entre <table> de XHTML et <table> de DocBook, par exemple ?

    Nan dès qu'il y a du namespace, les trucs en name() c'est des pièges.

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

Discussions similaires

  1. utiliser les attribut d'une classe dans une autre classe
    Par kaissaoui dans le forum Langage
    Réponses: 11
    Dernier message: 18/07/2007, 15h13
  2. Réponses: 2
    Dernier message: 17/04/2007, 17h14
  3. Réponses: 3
    Dernier message: 01/03/2007, 14h51
  4. Réponses: 3
    Dernier message: 18/07/2006, 10h32

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