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] transformation XML->XML en php [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [XSLT] transformation XML->XML en php
    Je suis debutant et je desir transformer cet xml ci dessous en subdivisant le contenu de mes tags en plusieurs tags .Est ce possible?

    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
    <report>
    	<table>
    		<columns>
    			<column name="date"></column>
    			<column name="campaign"></column>
    			<column name="keyword"></column>
    			<column name="headline"></column>
    			<column name="maxCpc"></column>
    			<column name="imps"></column>
    			<column name="clicks"></column>
    			<column name="ctr"></column>
    			<column name="cost"></column>
    			<column name="pos"></column>
    		</columns>
    		<rows>
    			<row date="2004-10-31" campaign="Client : 187304 (50)" keyword="Total - content targeting" headline="Escale des Aravis" maxCpc="" imps="145" clicks="1" ctr="0.006896551724137931" cost="50000" pos="3.413793103448276"></row>
    			<row date="2004-10-31" campaign="Client : 187304 (50)" keyword="gites savoie" headline="Escale des Aravis" maxCpc="50000" imps="11" clicks="0" ctr="0.0" cost="0" pos="2.6363636363636362"></row>
    			<row date="2004-10-31" campaign="Client : 187304 (50)" keyword="location aravis" headline="Escale des Aravis" maxCpc="50000" imps="5" clicks="0" ctr="0.0" cost="0" pos="2.2"></row>
    			<row date="2004-10-31" campaign="Client : 187304 (50)" keyword="station ski aravis" headline="Escale des Aravis" maxCpc="50000" imps="2" clicks="0" ctr="0.0" cost="0" pos="2.5"></row>
    			<row date="2004-10-31" campaign="Campagne ID33 - (10850) attente client" keyword="Milésimes" headline="Chaussures Bexley" maxCpc="50000" imps="1" clicks="0" ctr="0.0" cost="0" pos="4.0"></row>
    			<row date="2004-10-31" campaign="Campagne ID33 - (10850) attente client" keyword="Quartier chic" headline="Chaussures Bexley" maxCpc="50000" imps="1" clicks="0" ctr="0.0" cost="0" pos="1.0"></row>
    			<row date="2004-10-31" campaign="Campagne ID33 - (10850) attente client" keyword="Total - content targeting" headline="Chaussures Bexley" maxCpc="" imps="498" clicks="0" ctr="0.0" cost="0" pos="2.8995983935742973"></row>
    	</rows>
    	</table>
    	<totals>
    		<subtotal imps="55978" clicks="446" ctr="0.00796741577048126" cost="112760000" pos="2.4483368466183144" name="2004-10-31"></subtotal>
    		<grandtotal imps="55978" clicks="446" ctr="0.00796741577048126" cost="112760000" pos="2.4483368466183144"></grandtotal>
    	</totals>
    </report>
    [Ajout des balises CODE par GrandFather - merci d'y penser la prochaine fois !]

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    un (court) exemple du fichier XML que tu voudrais en sortie nous permettrait de mieux comprendre ce que tu veux faire.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut exemple de ce que je voudrais obtenir
    je voudrais si c'est possible passer du premier xml en un xml de ce type:

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?xml version="1.0" standalone="yes" ?> 
     
     
    <report>
    	<table>
    		<rows>
    			<columns>
    				<column name="date">2004-10-31</column>
    				<column name="campaign">Client : 187304 (50)</column>
    				<column name="keyword">Total - content targeting</column>				
    				<column name="headline">Escale des Aravis</column>				
    				<column name="maxCpc"></column>				
    				<column name="imps">145</column>				
    				<column name="clicks">1</column>				
    				<column name="ctr">0.006896551724137931</column>				
    				<column name="cost">50000</column>				
    				<column name="pos">3.413793103448276</column>				
    			</columns>
    		</rows>
    		<rows>
    			<columns>
    				<column name="date">2004-10-31</column>				
    				<column name="campaign">Client : 187304 (50)</column>
    				<column name="keyword">gites savoie</column>
    				<column name="headline">Escale des Aravis</column>
    				<column name="maxCpc">50000"</column>
    				<column name="imps">11</column>
    				<column name="clicks">0</column>
    				<column name="ctr">0.0</column>
    				<column name="cost">0.0</column>
    				<column name="pos">2.6363636363636362</column>
    				</column>
    			</columns>
    		</rows>
    		etc....
    		....	
    	</table>
    	<totals>
    		<subtotal>		
    			<imps>55978</imps>
    			<clicks>446</clicks>
    			<ctr>0.00796741577048126</ctr>
    			<cost>112760000</cost>
    			<pos>2.4483368466183144</pos>
    			<name>2004-10-31</name>
    			</subtotal>
    		<grandtotal>
    			<imps>55978</imps>
    			<clicks>446</clicks>
    			<ctr>0.00796741577048126</ctr>
    			<cost>112760000</cost>
    			<pos>2.4483368466183144</pos>
    		</grandtotal>
    	</totals>
    </report>
    [/code]

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Il y a une multitude de moyens pour y parvenir, en voici une :
    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
    <?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="/report">
    		<report>
    			<table>
    				<xsl:for-each select="table/rows/row">
    					<rows>
    						<columns>
    							<xsl:for-each select="@*">
    								<column>
    									<xsl:attribute name="name"><xsl:value-of select="name()"/></xsl:attribute>
    									<xsl:value-of select="."/>
    								</column>
    							</xsl:for-each>
    						</columns>
    					</rows>
    				</xsl:for-each>
    			</table>
    			<totals>
    				<xsl:for-each select="totals/*">
    					<xsl:copy>
    						<xsl:for-each select="@*">
    							<xsl:element name="{name()}">
    								<xsl:value-of select="."/>
    							</xsl:element>
    						</xsl:for-each>
    					</xsl:copy>
    				</xsl:for-each>
    			</totals>
    		</report>
    	</xsl:template>
     
    </xsl:stylesheet>
    Le principe général est de faire une itération sur les attributs, et de les recopier avec un xsl:attribute ou de les transformer en éléments avec un xsl:element.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    excuse moi pour ma supidité,dit moi si c'est bon pour ce xsl tout du moins pour le debut (je suis vraiment debutant,c'est mon xsl):
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?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="/report"> 
          <report> 
             <table> 
                <xsl:for-each select="table/rows/row"> 
                   <rows> 
                      <columns> 
                         <xsl:for-each select="@*"> 
                            <column> 
                               <xsl:attribute name="name"><xsl:value-of select="name(date)"/></xsl:attribute> 
                               <xsl:value-of select="."/>
    						   <xsl:attribute name="name"><xsl:value-of select="name(campaign)"/></xsl:attribute> 
                               <xsl:value-of select="."/> 
    						   <xsl:attribute name="name"><xsl:value-of select="name(keyword)"/></xsl:attribute> 
                               <xsl:value-of select="."/> 
    						   <xsl:attribute name="name"><xsl:value-of select="name(headline)"/></xsl:attribute> 
                               <xsl:value-of select="."/> 
    						   <xsl:attribute name="name"><xsl:value-of select="name(maxCpc)"/></xsl:attribute> 
                               <xsl:value-of select="."/>
    						   <xsl:attribute name="name"><xsl:value-of select="name(imps)"/></xsl:attribute> 
                               <xsl:value-of select="."/> 
    						   <xsl:attribute name="name"><xsl:value-of select="name(clicks)"/></xsl:attribute> 
                               <xsl:value-of select="."/> 
    						   <xsl:attribute name="name"><xsl:value-of select="name(ctr)"/></xsl:attribute> 
                               <xsl:value-of select="."/> 
    						   <xsl:attribute name="name"><xsl:value-of select="name(cost)"/></xsl:attribute> 
                               <xsl:value-of select="."/> 
    						   <xsl:attribute name="name"><xsl:value-of select="name(pos)"/></xsl:attribute> 
                               <xsl:value-of select="."/>  
                            </column> 
                         </xsl:for-each> 
                      </columns> 
                   </rows> 
                </xsl:for-each> 
             </table> 
             <totals> 
                <xsl:for-each select="totals/*"> 
                   <xsl:copy> 
                      <xsl:for-each select="@*"> 
                         <xsl:element name="{name()}"> 
                            <xsl:value-of select="."/> 
                         </xsl:element> 
                      </xsl:for-each> 
                   </xsl:copy> 
                </xsl:for-each> 
             </totals> 
          </report> 
       </xsl:template> 
     
    </xsl:stylesheet>
    [/code]

  6. #6
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Euh non, c'est pas bon du tout...

    Le code que je t'ai donné fonctionne, essaye de comprendre sa signification et n'hésite pas à demander des éclaircissements s'il y a des passages qui te semblent incompréhensibles. C'est comme cela que l'on progresse, avec XSLT
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. [XSLT] Transformer deux fichiers XML avec un seul Stylesheet
    Par sylvie dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/08/2010, 14h23
  2. [XSLT] Transformer un Document XML
    Par merlinerick dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/05/2009, 17h16
  3. Réponses: 2
    Dernier message: 10/04/2007, 11h46
  4. [XSLT]transformer un fichier XML en en fichier XML
    Par alexandra dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 16/08/2006, 14h26
  5. Transformation xml + xsl -> HTML via PHP
    Par petit-ourson dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/10/2003, 22h42

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