Transformer un XML en html par XSL
Bonjour,
je suis en train d'apprendre le XML et je veux transformer un XML en html par XSL, mais j'arrive pas. Je sais que l'erreur dans le XSL mais où je sais pas, voici mes Codes:
XML:
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" standalone="no" ?>
<!DOCTYPE bouteille SYSTEM "TP2.dtd">
<?xml-stylesheet type="text/xsl" href="TP2.xsl"?>
<bouteille>
<source>
<nom>Sidi Ali</nom>
<codeBar>2738900078925</codeBar>
<volume>150</volume>
<composition>
<ion>
<materiau>calsium</materiau><quantite>22.4</quantite>
<materiau>magnesium</materiau><quantite>7.3</quantite>
<materiau>chlorure</materiau><quantite>18</quantite>
<materiau>nitrates</materiau><quantite>5.4</quantite>
</ion>
<autre_materiau>fer</autre_materiau>
</composition>
<lieu>
<ville>Sidi Ali Chérif</ville>
<departement>Khémisset</departement>
</lieu>
</source>
<source>
<nom>Ain Atlas</nom>
<codeBar>5345765499077</codeBar>
<volume>50 </volume>
<composition>
<ion>
<materiau>calsium</materiau><quantite>70</quantite>
<materiau>magnesium</materiau><quantite>40</quantite>
<materiau>chlorure</materiau><quantite>220</quantite>
<materiau>nitrates</materiau><quantite>4</quantite>
</ion>
<autre_materiau>pH = 7</autre_materiau>
</composition>
<lieu>
<ville>Hammou Guemguem</ville>
<departement>Fès</departement>
</lieu>
</source>
<source>
<nom>Ain Sais</nom>
<codeBar>4509888065898</codeBar>
<volume>50</volume>
<composition>
<ion>
<materiau>calsium</materiau><quantite>11.5</quantite>
<materiau>magnesium</materiau><quantite>8</quantite>
<materiau>chlorure</materiau><quantite>13.5</quantite>
<materiau>nitrates</materiau><quantite>6.3</quantite>
</ion>
<autre_materiau>silice</autre_materiau>
</composition>
<lieu>
<ville>Ain Sais</ville>
<departement>Khénifra</departement>
</lieu>
</source>
</bouteille> |
DTD
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<!ELEMENT bouteille (source*)>
<!ELEMENT source (nom,codeBar,volume,composition,lieu)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT codeBar (#PCDATA)>
<!ELEMENT volume (#PCDATA)>
<!ATTLIST volume unite CDATA "cl">
<!ELEMENT composition (ion+,autre_materiau*)>
<!ELEMENT ion (materiau, quantite)+>
<!ELEMENT materiau (#PCDATA)>
<!ELEMENT quantite (#PCDATA)>
<!ATTLIST quantite unite CDATA "mg/l">
<!ELEMENT autre_materiau (#PCDATA)>
<!ELEMENT lieu (ville, departement)>
<!ELEMENT ville (#PCDATA)>
<!ELEMENT departement (#PCDATA)> |
XSL
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
|
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="html4.01" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01//EN" doctype-system="http://www.w3.org/TR/html4/strict.dtd" />
<xsl:template match="/">
<html>
<head>
</head>
<body>
<div class="bouteille">
<xsl:for-each select="bouteille/source">
<h2>Bouteille de marque <xsl:value-of select="nom"/></h2>
<h3>Code barre : <xsl:value-of select="codeBar"/></h3>
<h3>Volume : <xsl:value-of select="volume"/> <xsl:value-of select="volume@unite"/> </h3>
<h3>composition :</h3>
<xsl:for-each select="composition/ion">
<p><xsl:value-of select="materiau"/>
<xsl:value-of select="quantite"/>
<xsl:value-of select="quantite@unite"/></p>
</xsl:for-each>
<h3>Lieu d'origine : </h3>
<p>Ville de <h3><xsl:value-of select="lieu/ville"/></h3>, dans le
departement <h3><xsl:value-of select="lieu/departement"/></h3></p>
</xsl:for-each>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet> |
Merci d'avance.