Création
d'entreprise
Posez votre question Signaler

Création XSL pour transformer XML [Résolu]

alexdelareunion 531Messages postés 18 mars 2007Date d'inscription 24 février 2012Dernière intervention - Dernière réponse le 31 août 2010 à 12:16
Bonjour,
J'essaye de transformer le fichier XML suivant (j'ai réduit le nombre de lignes du rowset) :
<eveapi version="2"> 
  <currentTime>2010-08-26 16:01:22</currentTime> 
  <result> 
    <rowset name="transactions" key="transactionID" columns="transactionDateTime,transactionID,quantity,typeName,typeID,price,clientID,clientName,characterID,characterName,stationID,stationName,transactionType,transactionFor"> 
      <row transactionDateTime="2010-08-26 16:01:00" transactionID="1537159578" quantity="1" typeName="Merlin" typeID="603" price="298900.00" clientID="1823827944" clientName="ti schmi" characterID="671136438" characterName="bebedou" stationID="60003829" stationName="Tsuguwa VI - Caldari Navy Assembly Plant" transactionType="sell" transactionFor="corporation" /> 
      <row transactionDateTime="2010-08-26 15:44:00" transactionID="1537146742" quantity="1" typeName="Merlin" typeID="603" price="298900.00" clientID="941668980" clientName="CaptainIKeyes" characterID="671136438" characterName="bebedou" stationID="60003829" stationName="Tsuguwa VI - Caldari Navy Assembly Plant" transactionType="sell" transactionFor="corporation" /> 
      <row transactionDateTime="2010-08-26 15:41:00" transactionID="1537144480" quantity="10" typeName="Sabretooth Light Missile" typeID="212" price="9.99" clientID="1852878058" clientName="UltraSky" characterID="671136438" characterName="bebedou" stationID="60003829" stationName="Tsuguwa VI - Caldari Navy Assembly Plant" transactionType="sell" transactionFor="corporation" /> 
      <row transactionDateTime="2010-08-26 15:22:00" transactionID="1537129937" quantity="1" typeName="Merlin" typeID="603" price="298900.00" clientID="1007196956" clientName="Seton Bragg" characterID="671136438" characterName="bebedou" stationID="60003829" stationName="Tsuguwa VI - Caldari Navy Assembly Plant" transactionType="sell" transactionFor="corporation" /> 
      <row transactionDateTime="2010-08-26 15:21:00" transactionID="1537129082" quantity="1" typeName="Merlin" typeID="603" price="298900.00" clientID="249299947" clientName="Ictera" characterID="671136438" characterName="bebedou" stationID="60003829" stationName="Tsuguwa VI - Caldari Navy Assembly Plant" transactionType="sell" transactionFor="corporation" /> 
      <row transactionDateTime="2010-08-16 22:29:00" transactionID="1527549085" quantity="1" typeName="Cap Recharger I" typeID="1195" price="69999.00" clientID="1757136323" clientName="Nefallla" characterID="671136438" characterName="bebedou" stationID="60003829" stationName="Tsuguwa VI - Caldari Navy Assembly Plant" transactionType="sell" transactionFor="corporation" /> 
    </rowset> 
  </result> 
  <cachedUntil>2010-08-26 16:16:22</cachedUntil> 
</eveapi>

... en quelque chose qui resemblerait à un arbre classique comme ça (une ligne est un élément "transaction") :
<transaction>
    <transactionDateTime>2010-08-26 16:01:00</transactionDateTime>
    <transactionID>1537159578</transactionID>
    <quantity>1</quantity>
    <etc></etc>
</transaction>
<transaction>
...
</transaction>
...
...
...

pour ce faire j'ai essayé de coder une feuille de style xsl, mais ça marche pas du tout, access n'en veut pas (erreur "Déclaration xml non valide")
<?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="/">
		<?xml version="1.0" encoding="UTF-8"?>
		<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2010-08-27T03:21:05">
			<xsl:apply-templates select="eveapi/result/rowset"/>
		</dataroot>
    </xsl:template>
    <xsl:template match="eveapi/result/rowset">
		<xsl:element name="transaction">
			<xsl:apply-templates select="eveapi/result/rowset/row"/>
		</xsl:element>
    </xsl:template>
    <xsl:template match="eveapi/result/rowset/row">
		<xsl:element name="transactionDateTime">
			<xsl:value-of select="./@transactionDateTime"/>
		</xsl:element>
		<xsl:element name="transactionID">
			<xsl:value-of select="./@transactionID"/>
		</xsl:element>
		<xsl:element name="quantity">
			<xsl:value-of select="./@quantity"/>
		</xsl:element>
		<xsl:element name="typeName">
			<xsl:value-of select="./@typeName"/>
		</xsl:element>
		<xsl:element name="typeID">
			<xsl:value-of select="./@typeID"/>
		</xsl:element>
		<xsl:element name="price">
			<xsl:value-of select="./@price"/>
		</xsl:element>
		<xsl:element name="clientID">
			<xsl:value-of select="./@clientID"/>
		</xsl:element>
		<xsl:element name="clientName">
			<xsl:value-of select="./@clientName"/>
		</xsl:element>
		<xsl:element name="characterID">
			<xsl:value-of select="./@characterID"/>
		</xsl:element>
		<xsl:element name="characterName">
			<xsl:value-of select="./@characterName"/>
		</xsl:element>
		<xsl:element name="stationID">
			<xsl:value-of select="./@stationID"/>
		</xsl:element>
		<xsl:element name="stationName">
			<xsl:value-of select="./@stationName"/>
		</xsl:element>
		<xsl:element name="transactionType">
			<xsl:value-of select="./@transactionType"/>
		</xsl:element>
		<xsl:element name="transactionFor">
			<xsl:value-of select="./@transactionFor"/>
		</xsl:element> 
    </xsl:template>
</xsl:stylesheet>

Pouvez-vous m'aider à débugger ma feuille de style pour que j'y comprenne enfin quelque chose ?
Merci !
Lire la suite 

Création XSL pour transformer XML »

3 réponses
Ce document intitulé « Création XSL pour transformer XML » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?