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] Faire des tests


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 138
    Points : 37
    Points
    37
    Par défaut [XSLT] Faire des tests
    Salut
    Voila mon code XSL :


    Code xml : 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="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
        <xsl:template match="/">
          <enregistrements>
            <xsl:for-each select="rocords/rocord">
              <enregistrement>
                <enre_numero><xsl:value-of select="rocord_id"/></enre_numero>
                <enre_nom><xsl:value-of select="rocord_name"/></enre_nom>
              </enregistrement>
            </xsl:for-each>
          </enregistrements>
        </xsl:template>
     
    </xsl:stylesheet>

    Ce code sert a transformer un Fichier xml en un autre Fichier xml.
    ce que je veux faire c'est :
    si l'une des ballise du fichier xml 1 (input ) n'a pas de valeur (vide ) alors je ne veux pas qu'elle apparait au niveau du fichier xml2 (output)

    est ce que c'est possible?
    j'ai pensé a faire des testes mais je sais pas trop comment m'y prendre!!
    Merci

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Regarde du côté de l'élément <xsl:if>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:if test="expression de test">
    ...
    </xsl:if>

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 138
    Points : 37
    Points
    37
    Par défaut
    Code xml : 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
    22
    23
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
        <xsl:template match="/">
          <enregistrements>
            <xsl:for-each select="rocords/rocord">
              <enregistrement>
     
                <enre_numero><xsl:value-of select="rocord_id"/></enre_numero>
     
                <enre_nom>
       <xsl:if test=" rocord_name != Empty ">
    <xsl:value-of select="rocord_name"/>
    </xsl:if>
    </enre_nom>
     
              </enregistrement>
            </xsl:for-each>
          </enregistrements>
        </xsl:template>
     
    </xsl:stylesheet>



    Par ce code je veux que mon xsl ne montre pas rocord_id au niveau du fichier OutPut si rocord_id est vide

    Mais ca marche pas

    j'ai fais une erreur au niveau de la syntaxe?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 138
    Points : 37
    Points
    37
    Par défaut
    je veux que mon xsl ne montre pas enre_numero (au niveau du OutPut)
    si record id (Au niveau du IntPut) est vide

  5. #5
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    S'il faut tester le texte du noeud courant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:if test="not(string-length(current())=0)">
        <xsl:value-of select="." />
    </xsl:if>
    S'il faut tester un attribut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:if test="not(string-length(@Id)=0)">
        <xsl:value-of select="@Id" />
    </xsl:if>
    Je ne suis pas bon en XSL je préviens mais ça doit pas être très loin.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 138
    Points : 37
    Points
    37
    Par défaut
    Voila ce que j'ai fais

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <xsl:if test="  normalize-space(record_name)">
                    <enre_nom>
                     <xsl:value-of select="record_name"/>
                      </enre_nom>
               </xsl:if>

    et pour moi ça marche nikel.mais la vérité je l'ai fais juste par hasard
    alors s'il y a mieux je suis prenant.

    si c'est comme ca , que quelqu'un me le confirme.pour que les autres puissent bénéficier de l'info ( car j'ai passé une journée a la chercher )

    Merci

  7. #7
    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
    Bonjour,

    pour la clarté je ferais plutôt ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:if test="normalize-space(record_name) != ''">
      <enre_nom>
        <xsl:value-of select="record_name"/>
      </enre_nom>
    </xsl:if>
    Fonctionnellement cela revient exactement au même que ton code, mais le tien oblige à passer par des conversions implicites string/boolean alors que là la comparaison avec une chaîne vide indique clairement la nature du test que l'on souhaite faire.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 138
    Points : 37
    Points
    37
    Par défaut
    Merci je vais essayer de le faire

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 138
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par Ya7yaKech Voir le message
    Salut
    Voila mon code XSL :


    Code xml : 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="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
        <xsl:template match="/">
          <enregistrements>
            <xsl:for-each select="rocords/rocord">
              <enregistrement>
                <enre_numero><xsl:value-of select="rocord_id"/></enre_numero>
                <enre_nom><xsl:value-of select="rocord_name"/></enre_nom>
              </enregistrement>
            </xsl:for-each>
          </enregistrements>
        </xsl:template>
     
    </xsl:stylesheet>

    Ce code me permet comme je l'ai dis de faire une transformation d'un fichier xml a autre.
    mais est ce que c'est possible de transformer plusieurs fichiers par un seul fichier XSLT?

    autrement dit :
    transformer f1 a f2
    f3 a f4
    f5 a f6
    par un seul fichier XSL

    si c'est possible je suis prenant.

    Merci

Discussions similaires

  1. [XSD] comment faire des tests sur des éléments
    Par attila771 dans le forum Valider
    Réponses: 1
    Dernier message: 11/10/2007, 12h32
  2. Comment faire des tests à grande echelle?
    Par kisitomomotene dans le forum Test
    Réponses: 2
    Dernier message: 16/12/2006, 20h48
  3. Faire des test dans une base de donnée
    Par kj_83 dans le forum C++Builder
    Réponses: 15
    Dernier message: 06/07/2006, 09h54
  4. [SQL] Récupération éventuelle d'une variable pour faire des tests
    Par mougeole dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/05/2006, 13h56

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