1 pièce(s) jointe(s)
Mise en forme de document XML avec XSL.
Bonjour à tous,
Je récupère via un web service un fichier XML dont voici un résumé très allégé:
Code:
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"?>
<?xml-stylesheet href="test.xsl" type="text/xsl"?>
<root>
<Products xmlns="" LastRefresh="1/1/2015 10:11:36 PM">
<Product ID="243512" ModelName="16593" ManufacturerID="16593" EAN="8713439165937">
<Description>DT Cordless</Description>
<Description2>Retail, US-Layout, Black</Description2>
<VatRate>21</VatRate>
<QuantityOnHand>128</QuantityOnHand>
<StockLevel>Good</StockLevel>
<Status>S</Status>
<Brand>Trust</Brand>
<MasterGroup>Input Device</MasterGroup>
<ProductGroup>Mouse & Keyboard Combination</ProductGroup>
<UnitPrice>14,71</UnitPrice>
<Staffels/>
<Accruels>
<Accruel Code="BEBATBE" Description="Bebat Belgium" UnitPrice="0,30"/>
<Accruel Code="RECUPEL" Description="Recupel Belgium" UnitPrice="0,08"/>
</Accruels>
</Product>
<Product ID="243521" ModelName="16599" ManufacturerID="16599" EAN="8713439165999">
<Description>DT Cordless</Description>
<Description2>Retail, BE-Layout, Black</Description2>
<VatRate>21</VatRate>
<QuantityOnHand>9</QuantityOnHand>
<StockLevel>Low</StockLevel>
<Status>S</Status>
<Brand>Trust</Brand>
<MasterGroup>Input Device</MasterGroup>
<ProductGroup>Mouse & Keyboard Combination</ProductGroup>
<UnitPrice>13,00</UnitPrice>
<Staffels/>
<Accruels>
<Accruel Code="BEBATBE" Description="Bebat Belgium" UnitPrice="0,30"/>
<Accruel Code="RECUPEL" Description="Recupel Belgium" UnitPrice="0,08"/>
</Accruels>
</Product>
</Products>
</root> |
Voici le fichier XSL que j'ai créé pour la mise en forme:
Code:
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 56 57 58 59 60 61 62 63
| <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet []>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Mis en forme avec XSL</title>
</head>
<body>
<table border="1">
<tr>
<td>ID produit</td>
<td>Nom</td>
<td>ManufacturerID</td>
<td>Code EAN</td>
<td>Description 1</td>
<td>Description 2</td>
<td>TVA</td>
<td>Stock</td>
<td>Prochaine livraison</td>
<td>Niveau de stock</td>
<td>Statut</td>
<td>Marque</td>
<td>Gatégorie</td>
<td>Sous-catégorie</td>
<td>Prix d'achat</td>
<td>Recupel</td>
<td>Bebat</td>
<td>Auvibel</td>
<td>Reprobel</td>
</tr>
<xsl:for-each select="root/Products/Product">
<tr>
<td><xsl:value-of select="@ID"/></td>
<td><xsl:value-of select="@ModelName"/></td>
<td><xsl:value-of select="@ManufacturerID"/></td>
<td><xsl:value-of select="@EAN"/></td>
<td><xsl:value-of select="Description"/></td>
<td><xsl:value-of select="Description2"/></td>
<td><xsl:value-of select="VatRate"/></td>
<td><xsl:value-of select="QuantityOnHand"/></td>
<td><xsl:value-of select="NextDeliveryDate"/></td>
<td><xsl:value-of select="StockLevel"/></td>
<td><xsl:value-of select="Status"/></td>
<td><xsl:value-of select="Brand"/></td>
<td><xsl:value-of select="MasterGroup"/></td>
<td><xsl:value-of select="ProductGroup"/></td>
<td><xsl:value-of select="UnitPrice"/></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet> |
Tout fonctionne, mais en fait je ne sais pas comment je pourrais afficher dans les 4 dernières colonnes de mon tableau:
la valeur de l'attribut "UnitPrice" de chaque balise "Accruel" dont l'attribut "Code" = "RECUPEL"
la valeur de l'attribut "UnitPrice" de chaque balise "Accruel" dont l'attribut "Code" = "BEBATBE"
la valeur de l'attribut "UnitPrice" de chaque balise "Accruel" dont l'attribut "Code" = "AUVIBEL"
la valeur de l'attribut "UnitPrice" de chaque balise "Accruel" dont l'attribut "Code" = "REPROBEL"
J'ai beau chercher sur google une méthode, je tombe sur d'autres cas de figure.
Mes sources sont en pièces jointes.
Pourriez-vous m'aider svp?
D'avance merci
Merci beaucoup, ça fonctionne!
Voici la solution complète à mon problème pour ceux que ça pourrait aider. ;)
Encore merci.
Code:
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 56 57 58 59 60 61
| <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet []>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Mis en forme avec XSL</title>
</head>
<body>
<table border="1">
<tr>
<td>ID produit</td>
<td>Nom</td>
<td>ManufacturerID</td>
<td>Code EAN</td>
<td>Description 1</td>
<td>Description 2</td>
<td>TVA</td>
<td>Stock</td>
<td>Prochaine livraison</td>
<td>Niveau de stock</td>
<td>Statut</td>
<td>Marque</td>
<td>Gatégorie</td>
<td>Sous-catégorie</td>
<td>Prix d'achat</td>
<td>Recupel</td>
<td>Bebat</td>
<td>Auvibel</td>
<td>Reprobel</td>
</tr>
<xsl:for-each select="root/Products/Product">
<tr>
<td><xsl:value-of select="@ID"/></td>
<td><xsl:value-of select="@ModelName"/></td>
<td><xsl:value-of select="@ManufacturerID"/></td>
<td><xsl:value-of select="@EAN"/></td>
<td><xsl:value-of select="Description"/></td>
<td><xsl:value-of select="Description2"/></td>
<td><xsl:value-of select="VatRate"/></td>
<td><xsl:value-of select="QuantityOnHand"/></td>
<td><xsl:value-of select="NextDeliveryDate"/></td>
<td><xsl:value-of select="StockLevel"/></td>
<td><xsl:value-of select="Status"/></td>
<td><xsl:value-of select="Brand"/></td>
<td><xsl:value-of select="MasterGroup"/></td>
<td><xsl:value-of select="ProductGroup"/></td>
<td><xsl:value-of select="UnitPrice"/></td>
<td><xsl:value-of select="Accruels/Accruel[@Code = 'RECUPEL']/@UnitPrice"/></td>
<td><xsl:value-of select="Accruels/Accruel[@Code = 'BEBATBE']/@UnitPrice"/></td>
<td><xsl:value-of select="Accruels/Accruel[@Code = 'AUVIBEL']/@UnitPrice"/></td>
<td><xsl:value-of select="Accruels/Accruel[@Code = 'REPROBEL']/@UnitPrice"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet> |