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

XML/XSL et SOAP Discussion :

changer un noeud de position


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Par défaut changer un noeud de position
    Bonjour,

    J'ai un arbre XML construit de telle manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <head> Polochon a disparu 
     
        <figure>
    <head type="legende"> Polochon a pris la fuite après l'explosion.</head>
        </figure>
     
    </head>
    Je souhaiterais deplacer le noeud "figure" du Head principal pour avoir cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <head> Polochon a disparu 
     
    </head>
     <figure>
    <head type="legende"> Polochon a pris la fuite après l'explosion.</head>
        </figure>
    Je ne sais pas trop comment faire; merci de m'aider rapidement.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 43
    Par défaut
    Il n'y a pas de question, on ne peut donc pas te repondre.

  3. #3
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    D'habitude, deux méthodes sont utilisables : l'API DOM ou XSLT

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Par défaut
    Citation Envoyé par alain.couthures Voir le message
    D'habitude, deux méthodes sont utilisables : l'API DOM ou XSLT
    ma question est tout simplement comment réaliser cette manipulation en XSLT?

  5. #5
    Membre expérimenté

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par défaut
    Comme nous l'avons vu ensemble sur le chat, voici un exemple de solution (toute l'astuce étant de fermer le noeud head avant d'appeler la template sur figure) :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    		<!--On recopie le document en gardant les donnees -->
    	<xsl:template match="node()">
    		<xsl:copy>
    			<xsl:apply-templates select="node()|@*"/>
    		</xsl:copy>
    	</xsl:template>
    	<xsl:template match="text()">
    		<xsl:value-of select="."/>
    	</xsl:template>
    	<xsl:template match="@*">
    		<xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
    	</xsl:template>
     
     
    	<!--Si on trouve un noued particulier, on le remplace et on recopie -->
     
    	<xsl:template match="figure">
    		<figure>
    			<xsl:apply-templates select="node()"/>
    		</figure>
    	</xsl:template>
     
    	<xsl:template match="head">
    		<xsl:choose>
    			<xsl:when test="./@type='legende'">
    				<head type="legende">
    				<xsl:apply-templates select="node()"/>
    				</head>
    			</xsl:when>
    			<xsl:otherwise>
    			<head>
    				<xsl:value-of select="node()"/>	
    			</head>
    			<xsl:apply-templates select="figure"/>
    			</xsl:otherwise>
    		</xsl:choose>
    	</xsl:template>

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

Discussions similaires

  1. Échanger un noeud avec un de ses descendants
    Par SpiceGuid dans le forum Caml
    Réponses: 4
    Dernier message: 29/06/2010, 08h40
  2. Échanger deux noeuds
    Par weis3r dans le forum C
    Réponses: 5
    Dernier message: 27/02/2009, 22h37
  3. Réponses: 1
    Dernier message: 11/07/2008, 13h01
  4. changer la position de 2 noeuds
    Par lachose dans le forum C
    Réponses: 9
    Dernier message: 08/06/2006, 01h02
  5. Changer dynamiquement la position des onglets
    Par ginnovy dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/09/2002, 18h24

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