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 :

Noeuds enfants mal placés en HTML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Noeuds enfants mal placés en HTML
    Bonjours à tous,

    J'explique mon problème dans un nouveau topic car je n'arrive pas à trouver de solution mais surtout je n'arrive pas à trouver des termes déjà existant pour mon problème.

    Voilà j'ai un fichier XML en EAD, dedans j'ai mon eadheader qui contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <profiledesc>
    	<creation>Instrument de recherche produit au moyen du logiciel Arkhéïa Aide au classement de la société Anaphore sarl, version 3-9.3 du <date normal="2011-06-24">vendredi 24 juin 2011</date>. 
    		Date de l'export : <date normal="2015-04-01">mercredi 1 avril 2015</date> (09:16 h).<lb/>Encodage XML EAD réalisé par Sarl FFAS, 7 rue de Buchey à Harricourt - 52330 Colombey-les-Deux-Églises, sous le contrôle scientifique de Corinne Porte (Directrice des Archives départementales de l'Ardèche).</creation>
    </profiledesc>
    J'ai besoin d'afficher le texte de <CREATION> mais les deux dates s'affichent à la fin du texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Instrument de recherche produit au moyen du logiciel Arkhéïa Aide au classement de la société Anaphore sarl, version 3-9.3 du . Date de l'export : (09:16 h).
    Encodage XML EAD réalisé par Sarl FFAS, 7 rue de Buchey à Harricourt - 52330 Colombey-les-Deux-Églises, sous le contrôle scientifique de Corinne Porte (Directrice des Archives départementales de l'Ardèche). datevendredi 24 juin 2011datemercredi 1 avril 201

    Voici la partie de mon xsl pour ce noeud :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:call-template name="affiche_noeud_sauf_head">
    	<xsl:with-param name="noeud" select="ead/eadheader/profiledesc/creation"/>
    </xsl:call-template>
    Et le template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:template name="affiche_noeud_sauf_head">
    	<xsl:param name="noeud"/>
    	<xsl:for-each select="$noeud">
    		<xsl:text> </xsl:text>
    		<xsl:value-of select="text()"/>
    		<xsl:text> </xsl:text>
    	</xsl:for-each>
     
    	<xsl:for-each select="$noeud/*">
    		<xsl:if test="name()!='head'"> 
    			<xsl:apply-templates select="."/>
    		</xsl:if>
    	</xsl:for-each>
    </xsl:template>
    Comme je ne suis pas à l'origine du code XSL je ne suis pas sur de tout comprendre et si tout les templates fonctionne pour la partie du xml que je cite ici.

    Je peut fournir les fichiers XML et XSL si besoin.
    Merci d'avance de votre aide.

  2. #2
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    ...ton <xsl:value-of select="text()"/> va poser problème (renseigne toi sur ce que cela fait exactement...)

    Par contre si tu pars sur <xsl:value-of select="."/> tu dois récupérer tes valeurs "dans l'ordre" :

    Le code n'est pas propre, mais je te laisse faire ca correctement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="/profiledesc/creation">
    	<xsl:for-each select=".">
    		<xsl:value-of select="."/>
    	</xsl:for-each>
    </xsl:template>
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci de ton aide MAIS :

    J'ai bien mis le template match et le template name au bon endroits.
    J'ai remarqué que le match doit être "creation" et pas "/profiledesc/creation" pour qu'il fonctionne.

    Cependant, l'affichage des dates se fait toujours à la fin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="ead/eadheader/profiledesc/creation"/>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="creation">
    	<xsl:for-each select=".">
    		<xsl:value-of select="."/>
    	</xsl:for-each>
    </xsl:template>

  4. #4
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    XML exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="style.xsl"?>
    <profiledesc >
    	<creation>Instrument de recherche produit au moyen du logiciel Arkhéïa Aide au classement de la société Anaphore sarl, version 3-9.3 du <date normal="2011-06-24">vendredi 24 juin 2011</date>. 
    		Date de l'export : <date normal="2015-04-01">mercredi 1 avril 2015</date> (09:16 h).<lb/>Encodage XML EAD réalisé par Sarl FFAS, 7 rue de Buchey à Harricourt - 52330 Colombey-les-Deux-Églises, sous le contrôle scientifique de Corinne Porte (Directrice des Archives départementales de l'Ardèche).</creation>
    </profiledesc>
    Code XSL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" media-type="text/html" omit-xml-declaration="yes" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/>
     
    <xsl:template match="/profiledesc/creation">
    	<xsl:for-each select=".">
    		<xsl:value-of select="."/>
    	</xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Instrument de recherche produit au moyen du logiciel Arkhéïa Aide au classement de la société Anaphore sarl, version 3-9.3 du vendredi 24 juin 2011. Date de l'export : mercredi 1 avril 2015 (09:16 h).Encodage XML EAD réalisé par Sarl FFAS, 7 rue de Buchey à Harricourt - 52330 Colombey-les-Deux-Églises, sous le contrôle scientifique de Corinne Porte (Directrice des Archives départementales de l'Ardèche).
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour ces explications.

    Du coup, pensant que ça n'avait pas d'impact, je n'avais pas cité que mes deux fichiers passaient pas une génération en PHP depuis les données XML dans ma BDD.

    Maintenant que je suis sur que ça ne viens pas des fichiers XML/XSL, je continue mes recherches et debug.

    Merci de ton aide.

  6. #6
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Si je comprends bien, et ce n'est pas trop à vrai dire, on peut faire quelque chose comma ça avec les détails de formatage textuel à part.
    Code xslt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:template name="affiche_noeud_sauf_head">
        <xsl:param name="noeud"/>
        <!-- si vous entendez dire qu'il est possible qu'un node-set soit passé. -->
        <xsl:for-each select="$noeud">	
            <!-- vous pouvez écrire qvec un dot, bien entendu, au lieu de current() -->
            <xsl:for-each select="current()/node()">	
                <xsl:if test="name()!='head'"> 
                    <xsl:apply-templates select="."/>
                </xsl:if>
            </xsl:for-each>
            <xsl:text>&#x0d;&#x0a;</xsl:text>
        </xsl:for-each>
    </xsl:template>

Discussions similaires

  1. [XML] Parser selon des noeuds enfants
    Par GLDavid dans le forum Modules
    Réponses: 5
    Dernier message: 20/08/2004, 20h42
  2. [XSL] aide pour lire un id de noeud enfant.
    Par stebar dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 01/07/2004, 13h38

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