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] - filtrage de contenu


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 119
    Points
    119
    Par défaut [xslt] - filtrage de contenu
    bonjour a tous

    je cherche a faire un xslt qui supprime tous les noeuds du document mis en entré qui contienne le texte '!!_NOT_SET_!!'

    ceci ne fonctionne pas....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:output method="xml" indent="yes"/>
        <xsl:template match="/rootnode//node()">
            <xsl:if test="not(contains(text(),'!!_NOT_SET_!!'))">
                <xsl:copy-of select="node()"/>
            </xsl:if>
        </xsl:template>    
    </xsl:stylesheet>
    qu'est ce qui ne vas pas...

    une idée !!

    merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    Citation Envoyé par jacquesh Voir le message

    ceci ne fonctionne pas....

    que ce que tu entends par ne fonctionne pas?

  3. #3
    Membre régulier Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 119
    Points
    119
    Par défaut
    j'entends par la que les noeuds du document mis en entré qui contienne le texte '!!_NOT_SET_!!' sont toujours présent....

    1. le code retourné n'est pas du XML mais un simple texte sans balise

    1. les textes NOT_SET sont toujours présent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     
          !!_NOT_SET_!!
          !!_NOT_SET_!!
     
     
          1900-11-01T23:59:59.000000
          !!_NOT_SET_!!
          !!_NOT_SET_!!

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    Je peux voir un exemple de ton xml?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 19
    Points
    19
    Par défaut rien ne va
    le code retourné n'est pas du XML mais un simple texte sans balise
    Cela signifie qu'aucun template n'a pu être appliqué. La règle par défaut qui consiste à recopier touts les noeuds texte est alors appliquée.

    Il faut éviter un copy-of car on recopie alors un noeud possédant '!!_NOT_SET_!!' comme descendant d'un noeud ne le possédant pas.
    Il faut aussi éviter d'utiliser l'axe descendant (//) car on peut recopier plusieurs fois le même noeud.

    on peut faire ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:output method="xml" indent="yes"/>
     
    	<xsl:template match="/|*">
    		<xsl:if test="normalize-space(text())!='!!_NOT_SET_!!'">
    			<xsl:copy>
    				<xsl:apply-templates select="node()|@*"/>
    			</xsl:copy> 
    		</xsl:if>
    	</xsl:template> 
    	<xsl:template match="text()|@*|comment()|processing-instruction()">
    		<xsl:copy/>
    	</xsl:template>
    </xsl:stylesheet>
    On suppose que c'est le premier fils text qui doit contenir '!!_NOT_SET_!!'

  6. #6
    Membre régulier Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 119
    Points
    119
    Par défaut
    MERCI sharpdev ca fonctionne !!

    voila un extrait du XML (sans la racine)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    ...
      <META_DATA>
        <md_creator>ectnn</md_creator>
        <md_hopcreator>00087</md_hopcreator>
        <md_dh_create>2007-10-25T14:51:10.000000</md_dh_create>
        <md_finishor>!!_NOT_SET_!!</md_finishor>
        <md_dt_cloture>1900-11-01T23:59:59.000000</md_dt_cloture>
        <md_updates_history/>
      </META_DATA>
      <COMMON>
        <info_patient>
          <ip_noip_noda setting_by="nobody" allow_update="hopowner">!!_NOT_SET_!!</ip_noip_noda>
          <ip_nom_corps setting_by="ectnn" allow_update="hopowner">Jim</ip_nom_corps>
          <ip_prenom_corps setting_by="ectnn" allow_update="hopowner">Adkins</ip_prenom_corps>
          <ip_autre_prenom_corps setting_by="nobody" allow_update="hopowner">!!_NOT_SET_!!</ip_autre_prenom_corps>
          <ip_nomjf_corps setting_by="nobody" allow_update="hopowner">!!_NOT_SET_!!</ip_nomjf_corps>
          <ip_sexe setting_by="ectnn" allow_update="hopowner">M</ip_sexe>
          <ip_date_naissance setting_by="ectnn" allow_update="hopowner">1927-11-14</ip_date_naissance>
          <ip_dh_deces setting_by="ectnn" allow_update="hopowner">2007-01-01T14:51:10.000000</ip_dh_deces>
        </info_patient>...
    maintenant que ca fonctionne ... place a l'optimisation... (plus court, plus rapide...) qui peut faire mieux

    merci encore

    @++

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

Discussions similaires

  1. [XSLT] Afficher du contenu HTML dans une feuille XSL
    Par krapno dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/10/2006, 14h07
  2. [XSLT]tester le contenu d'une balise
    Par koudjo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/07/2006, 12h22
  3. [XSLT] remplacer le contenu d'un noeud
    Par casgr1 dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 29/06/2006, 09h50
  4. [XSLT] interprétation du contenu
    Par jenesuispasunrobot dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 25/06/2006, 00h18
  5. Réponses: 3
    Dernier message: 11/05/2006, 00h27

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