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] Suppression d'un contenu d'attribut [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Par défaut [XSLT] Suppression d'un contenu d'attribut
    Bonjour à tous,
    j'ai recherché en vain ma solution sur le forum...
    En fait, dans mes fichiers xml qui répondent tous à la même DTD, je gère des unités de mesures ISO et US. A chaque fois que le rédacteur renseigne une unité ISO en attribut il doit le faire sur le US. Donc pour les cas où y a pas d'US, il met NA.
    Ma question est : est-il possible sur xslt de faire en sorte que la valeur NA soit effacée partout où elle apparaisse en sachant qu'elle est dans toute sorte d'attribut définissant des unités (force, Pression, distance, temps, etc. ?
    Comment faire?
    Merci d'avance

  2. #2
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    oui c est largement possible
    avec un template du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="@*[.='NA']>
      <xsl:copy/><!--pour recopier l attribut sans sa valeur-->
    </xsl:template>

  3. #3
    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 : 49
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Bonne idée mais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:template match="@*[.='NA']>
     </xsl:template>
    bien conçu devrait faire en sorte que même l'attribut ne sera pas recopié, a voir ce qui est le plus interessant dans ce cas

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    oui...enfin on s était compris (vu le commentaire que j ai mis) )

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Par défaut
    Merci à tous les deux.
    j'ai essayé les codes mais ça ne m'a pas supprimé les NA dans mon fichier XML de sortie. en fait le code ressemble à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <Txttable>
    <Non_traduit>
    <Valeur>
    <valeur_avec_unite>
    <dimension>
    <metre Quantite_ISO="2,53" Quantite_US_Foot="NA" Quantite_US_inch="NA"/>
    </dimension>
    </valeur_avec_unite>
    </Valeur>
    </Non_traduit>
    </Txttable>
    Il en existe plusieurs qui sont de différents sortes. Tout ce que je veux c'est qu'à chaque fois supprimer les NA et/ou leurs attributs porteurs.
    Faut-il que je repertorie tous les éléments avec attribut et que je les déclare sur le xslt?
    Merci d'avance

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    	<xsl:template match="*">
    		<xsl:copy>
    			<xsl:apply-templates select="@*"/>
    			<xsl:apply-templates/>
    		</xsl:copy>
    	</xsl:template>
    	<xsl:template match="@*|text()">
    		<xsl:copy-of select="."/>
    	</xsl:template>
    	<xsl:template match="@*[.='NA']"/>
    </xsl:stylesheet>
    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

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

Discussions similaires

  1. [XSLT][excel] Affichage Lien Hypertexte contenu dans Attribut
    Par Graineur dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 03/12/2010, 15h26
  2. [xslt] passer le nom d'un attribut comme param
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/11/2005, 11h03
  3. [XSLT] Afficher une seule fois les attributs redondants...
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 17/11/2005, 09h52
  4. [XSLT] Suppression des retours charriots
    Par Hoegaarden dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/08/2005, 16h51
  5. [xslt] Suppression des éléments sans contenu.
    Par dibbouk dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/06/2005, 17h17

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