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

  1. #1
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2004
    Messages : 44
    Points : 40
    Points
    40
    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 confirmé 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
    Points : 503
    Points
    503
    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 du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 78
    Points : 62
    Points
    62
    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 du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 78
    Points : 62
    Points
    62
    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 du Club
    Inscrit en
    Mai 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2004
    Messages : 44
    Points : 40
    Points
    40
    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 expérimenté
    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
    Points : 1 610
    Points
    1 610
    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.

  7. #7
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    un exemple pour supprimer le noeud toto (et donc ces fils) et les attribut titi
    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
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output 
      		encoding="ISO-8859-15"
      		method="xml"
      		indent="yes" />
     
    	<xsl:template match="node() | @*">
    		<xsl:copy>
    			<xsl:apply-templates select="@* | node()"/>
    		</xsl:copy>
    	</xsl:template>
     
            <xsl:template match="toto | @titi"/>
     
    </xsl:stylesheet>

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