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] Noeuds à écarter


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 38
    Par défaut [XSLT] Noeuds à écarter
    Bonjour à tous,

    Voilà mon projet est fini, merci beaucoup pour votre aide! Je viens tout de même pour une dernière information. On me demande d'aller un peu plus loin dans la gestion de mon fichier XSL, notamment sur la "maintenabilité".

    Actuellement, dans mon fichier d'entrée, j'ai toujours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <LDAP>
    <Personne>
    	<Nom>DUPOND</Nom>
    	<Prenom>Jean</Prenom>
    	<DOB>01-01-1960</DOB>
    	<Adresse>Paris</Adresse>
    	<Tel>0123456789</Tel>
    </Personne>
    </LDAP>
    mais j'ai aussi des noeuds qui ne me servent à rien, genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <LDAP>
    <Loisir>
    	<Nom>DUPOND</Nom>
    	<Prenom>Jean</Prenom>
    	<Comment>Football Rugby Jeux Vidéos</Comment>
    </Loisir>
    </LDAP>
    Et le "seul" moyen que j'ai trouvé pour ne pas inclure ces informations dans mon fichier de sortie, c'est de mettre dans mon XSL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:template match="LDAP/Personne">
    	<!-- Tout mon mapping pour ce qui m'interesse dans le noeud Personne -->
    </xsl:template>
     
    <xsl:template match="LDAP/Loisir">
    	<xsl:comment>Loisirs inutiles dans nouveau format</xsl:comment>
    </xsl:template>
    Actuellement, si le noeud loisir change, je suis obligé de revoir mon XSL. De la même façon, si un nouveau noeud apparaît dans mon fichier d'entrée, je suis obligé de rajouter un noeud match dans mon XSL.

    J'ai voulu remplacer le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="LDAP/Personne">
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="LDAP/Personne">
    , mais cela n'a pas fonctionné.

    Encore merci pour les informations sur cet ultime point!

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ben c'est un peu flou, mais moi je mettrais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="LDAP/*">
      <xsl:comment>Balise ignorée du fichier source: <xsl:value-of select="name()"/></xsl:comment>
    </xsl:template>
    Comme ça tout ce qui n'est pas explicitement traité, est implicitement ignoré.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 38
    Par défaut
    Bonjour Thelvin

    C'est ce que j'ai fait dans la nouvelle version.

    Mais pour moi (mais je me trompe peut être) le problème initial reste le même: si un nouveau noeud apparait, il ne sera pas traité, sauf si on met un noeud template match avec du contenu.... Le seul avantage que j'y ai trouvé, c'est que si le noeud "Loisir" devient "Hobby", il ne sera pas traité par le XSL, sans qu'on ait besoin de le modifier...

    Je vais voir, la réponse est peut-être juste aussi bête que ca, mais je la trouve trop simple en fait (par rapport a tout le reste )

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je ne comprends pas, tu penses qu'un nouveau nœud ne répondrait pas au template * ?
    Pourquoi ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 38
    Par défaut
    Mettons que demain, le fichier d'entrée possède un noeud supplémentaire dans LDAP. Vu qu'il est dans la cascade LDAP/*, il ne sera pas traité. Idem pour le changement du nom d'un noeud déjà existant (ou même de ses attributs). Tant qu'il fait parti de LDAP/* à priori, pas de soucis. Donc c'est peut être la réponse attendue....

    Par contre, l'ajout de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:template match="LDAP/*">
    	<xsl:comment>Cas non traités</xsl:comment>
    </xsl:template>
    ne traite plus les template match qui se trouvent dans le XSL. En gros, ca ne traite plus les noeuds "Loisir", cool, mais ca ne traite plus non plus les noeuds "Personne", moins cool!

    J'ai aussi tenté le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:template match="LDAP/*">
    	<xsl:template match="LDAP/Personne">
    		<!-- Traitement des noeuds Personne -->
    	</xsl:template>
    </xsl:template>
    mais ca ne fonctionne pas non plus...

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je ne comprends pas : si tu veux traiter les nœud Personne, il va te falloir un template Personne de toute façon...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [XSLT] noeud vide
    Par khamkham dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 12/04/2010, 15h11
  2. [XSLT] noeud à plat >> arborescence
    Par theos dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 24/11/2008, 10h09
  3. [XSLT] Noeud precedent et boucles imbriquees
    Par crevygood dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 16/05/2008, 16h29
  4. [XSLT] Noeuds vides
    Par err747 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/03/2008, 23h37
  5. [XSLT] Noeud courant
    Par ploxien dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 31/10/2006, 14h33

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