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] convertir Element vers 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
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut [XSLT] convertir Element vers attribut
    Bonjour,

    je suis débutante aussi je me permets de solliciter votre aide pour ce cas :

    J'ai un flux de cette forme :

    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
    <hotel>
    <id_carte>5655</id_carte>
    <login_carte>name</login_carte>
    <adresse_carte>address</adresse_carte>
    <cp_carte>zip</cp_carte>
    <ville_carte>city_hotel</ville_carte>
    <pays_carte>pays</pays_carte>
    <class_carte>class</class_carte>
    <prix_min_carte>0</prix_min_carte>
    <prix_max_carte>0</prix_max_carte>
    <nb_room_carte>0</nb_room_carte>
    <longitude_carte>longitude</longitude_carte>
    <latitude>latitude</latitude>
    <url_carte>hotel_url</url_carte>
    <img_carte>photo_url</img_carte>
    <desc_carte>desc_fr</desc_carte>
    <ville_pref_carte>city_preferred</ville_pref_carte>
    </hotel>
    et j'aimerais transformer mes éléments de mon flux en attribut.
    j'ai vu que xslt le permettait mais je ne sais pas comment faire =(

    jai vu sur cette discussion que ce bout de code permet de transformer des éléments en attribut... mais comment faire l'inverse ??=(

    merci d'avance car je ne sais vraiment pas comment faire =( je passe mes soirées dessus et je n'y arrive pas

    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
    	<xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>
    	<xsl:strip-space elements="*"/>
    	<xsl:template match="parameters">
    			<xsl:copy>
    				<xsl:apply-templates/>
    			</xsl:copy>
    	</xsl:template>
    	<xsl:template match="*">
    		<xsl:copy>
    			<xsl:for-each select="@*">
    				<xsl:element name="{name()}">
    					<xsl:value-of select="."/>
    				</xsl:element>
    			</xsl:for-each>
    			<xsl:apply-templates/>
    		</xsl:copy>
    	</xsl:template>
    </xsl:stylesheet>

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Par défaut
    Bonjour,

    Si j'ai bien compris la demande et que le fichier XML ressemble à
    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
    38
    39
    40
     
    <?xml version="1.0" encoding="UTF-8"?>
    <hotels>
    	<hotel>
    		<id_carte>5655</id_carte>
    		<login_carte>name</login_carte>
    		<adresse_carte>address</adresse_carte>
    		<cp_carte>zip</cp_carte>
    		<ville_carte>city_hotel</ville_carte>
    		<pays_carte>pays</pays_carte>
    		<class_carte>class</class_carte>
    		<prix_min_carte>1</prix_min_carte>
    		<prix_max_carte>0</prix_max_carte>
    		<nb_room_carte>0</nb_room_carte>
    		<longitude_carte>longitude</longitude_carte>
    		<latitude>latitude</latitude>
    		<url_carte>hotel_url</url_carte>
    		<img_carte>photo_url</img_carte>
    		<desc_carte>desc_fr</desc_carte>
    		<ville_pref_carte>city_preferred</ville_pref_carte>
    	</hotel>
    	<hotel>
    		<id_carte>5656</id_carte>
    		<login_carte>name</login_carte>
    		<adresse_carte>address</adresse_carte>
    		<cp_carte>zip</cp_carte>
    		<ville_carte>city_hotel</ville_carte>
    		<pays_carte>pays</pays_carte>
    		<class_carte>class</class_carte>
    		<prix_min_carte>2</prix_min_carte>
    		<prix_max_carte>0</prix_max_carte>
    		<nb_room_carte>0</nb_room_carte>
    		<longitude_carte>longitude</longitude_carte>
    		<latitude>latitude</latitude>
    		<url_carte>hotel_url</url_carte>
    		<img_carte>photo_url</img_carte>
    		<desc_carte>desc_fr</desc_carte>
    		<ville_pref_carte>city_preferred</ville_pref_carte>
    	</hotel>
    </hotels>
    le programme pourrait être
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
     
    <xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>
    <xsl:strip-space elements="*"/>
     
    <xsl:template match="hotels">
    	<xsl:element name="{name()}">
    		<xsl:apply-templates/>
    	</xsl:element>
    </xsl:template>
     
    <xsl:template match="hotel">
    	<xsl:element name="{name()}">
    		<xsl:for-each select="child::*">
    			<xsl:attribute name="{name()}">
    				<xsl:value-of select="."/>
    			</xsl:attribute>
    		</xsl:for-each>
    	</xsl:element>
    		<xsl:apply-templates/>
    </xsl:template>
     
    <xsl:template match="node()">
    	<xsl:apply-templates/>
    </xsl:template>
     
    </xsl:stylesheet>

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut
    Bonjour,


    tout d abord merci pour ta reponse c'est vraiment très gentil à toi de m'aider

    par contre jai un problème =( quand j'intègre ton script il me met :

    Erreur d'analyse XML : données incompréhensibles après l'élément de document
    Emplacement : http://www.casualgamer.fr/projet/wp-...9/xml/test.xml
    Numéro de ligne 44, Colonne 1 :<casualgamer>
    ^

    Je ne comprend vraiment pas =( car j'ai vraiment repris ton script jai juste changé le nom du tronc

    ci joint lurl du flux en ligne=(

    http://www.casualgamer.fr/projet/wp-...9/xml/test.xml


    est ce que tu as une idée sur la question??


    Encore merci d'avance!!

Discussions similaires

  1. [XSLT] Conversion xml vers txt ou mdb etc
    Par narodar dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/06/2006, 14h31
  2. [XSLT]Sort sur un attribut dont la valeur est en param
    Par Trin dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 07/11/2005, 16h16
  3. [XSLT] navigateur vogue vers sa source
    Par totobouchon dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 15/07/2005, 15h39
  4. [XSLT] XML->XML conversion attributs en balises
    Par ¤ Actarus ¤ dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/07/2005, 09h51
  5. [C#] Fonction pour convertir string[] vers ArrayList
    Par luimême dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/04/2005, 13h25

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