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 :

Copie d'un fichier XML avec modification de valeur d'attribut


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2004
    Messages : 44
    Par défaut Copie d'un fichier XML avec modification de valeur d'attribut et élaguation
    Bonjour,

    Je vous explique ce que je voudrai faire!
    J'ai un fichier XML source et je voudrai le reproduire casiment a l'identique sauf qu'un attribut qui a une valeur de 0 doit passer à 1 (je passe les détails du pourquoi)

    Donc pour le moment j'ai récupérer sur ton topic du forum le template identité mais je coince sur la modification de l'attribut...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="*|@*">
    		<xsl:copy>
    			<xsl:apply-templates select="@*"/>
    			<xsl:apply-templates select="node()"/>
    		</xsl:copy>
    	</xsl:template>

  2. #2
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    Ca devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="noeud">
     <xsl:if test="@attribut=0">       
    <noeudFils attribut="{1}"/>
    </xsl:if>
    </xsl:template>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 78
    Par défaut
    Bonjour,

    Je me permets de m'insérer dans la discussion car j'ai à peu près le même problème, je voudrais transformer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
    <hibernate-mapping package="com.orange.tvod.agregator.storage">
    	<class name="Asset" table="ASSET">
    		<meta attribute="sync-DAO">false</meta>
    	</class>	
    </hibernate-mapping>
    en ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
    <hibernate-mapping package="com.orange.tvod.agregator.storage">
    	<class name="Asset" table="ASSET">
    		<meta attribute="sync-DAO">true</meta>
    	</class>	
    </hibernate-mapping>
    La différence étant sur la valeur de <meta attribute="sync-DAO"> que je veux passer à true et cela doit pouvoir être fait sur tout fichier XML contenant un tag <meta attribute="sync-DAO">. Bien sûr je ne comprends que peu de choses à XSLT alors si quelqu'un pouvait m'aiguiller voir plus je lui en serai très reconnaissant.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 78
    Par défaut
    J'ai résolu mon problème avec le code suivant :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    	<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>
     	<xsl:template match="/hibernate-mapping/class/meta">
    		<meta>
    			<xsl:choose>
    				<xsl:when test="@attribute = 'sync-DAO'">
    						<xsl:attribute name="attribute">SYNC-dao</xsl:attribute>
    					<xsl:text>true</xsl:text>
    				</xsl:when>
    				<xsl:otherwise>
    					<xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
    				</xsl:otherwise>
    			</xsl:choose>
    		</meta>
    	</xsl:template>
    </xsl:stylesheet>
    Peut-être CocoRambo peux-tu t'en inspirer...

    J'ai maintenant un autre problème qui découle de cette transformation mais je vais ouvrir un autre sujet.

  5. #5
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2004
    Messages : 44
    Par défaut
    Merci beaucoup pour vos réponses a priori j'ai trouvé mon bonheur
    Par contre maintenant un autre souci se présente...

    J'aimerai en plus recopier le XML mais en enlevant certains noeud voir seulement certains attributs

    Et ca fait maintenant un petit moment que je chercher sans succès...

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Tu peux créer des templates spécifiques aux noeuds que tu veux traiter et faire autre chose qu'une simple copie. Peut être qu'il faudra leur mettre une priorité plus haute.

Discussions similaires

  1. Lire un fichier XML et récupérer les valeurs d'attribut
    Par dinaing dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 18/06/2010, 15h53
  2. Réponses: 4
    Dernier message: 14/09/2009, 10h19
  3. extraire un fichier d'un fichier XML avec XSL ?
    Par pirbd dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 14/09/2005, 10h31
  4. Modification de fichier XML avec XSLT
    Par osmoz dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/07/2005, 11h04
  5. [DOM] [Débutant(e)] Modifier un fichier XML avec DOM
    Par macks dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 05/07/2005, 14h13

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