Comment boucler sur les infos d'un élément précis
Bonjour,
Comme précisé dans le titre de mon post, je débute en XML. Excusez moi déjà si j'écris certaines bêtises...
Dans le cadre de ma formation, je dois afficher un tableau "clients" qui reprend le nom, le prénom, l'age, le sexe etc.. Ça j'y arrive assez bien.
Ce qui m'est demandé également c'est, pour chaque client, de faire apparaitre leurs adresses (facturation, livraison) dans les lignes en dessous en "colspan"
Je dois pointer sur mon élément je suppose et boucler pour récupérer les adresses qui le concerne. Enfin, je suppose. Le problème, c'est que je ne connais pas encore bien les fonctions et je ne sais pas trop comment faire.
Avez-vous une idée?
Mon XML est bien formé et validé par DTD. le voici:
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 64 65 66 67 68 69 70 71 72
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE dbclients SYSTEM "C:\wamp\www\exam_2_xml\3_xml_xsl\dbclients.dtd">
<?xml-stylesheet type="text/xsl" href="dbclients.xsl"?>
<dbclients>
<client>
<nom>Dupont</nom>
<prenom>David</prenom>
<age>35</age>
<sexe>homme</sexe>
<adresses>
<facturation>
<rue>Rue de la Concorde</rue>
<numero>77</numero>
<cp>1000</cp>
<ville>Bruxelles</ville>
</facturation>
<livraison>
<rue>Rue de Brabant</rue>
<numero>11</numero>
<cp>7190</cp>
<ville>Ecaussinnes</ville>
</livraison>
</adresses>
<mail>d.dupont@hotmail.com</mail>
<codeclient>11111</codeclient>
</client>
<client>
<nom>Dubois</nom>
<prenom>Jean</prenom>
<age>42</age>
<sexe>homme</sexe>
<adresses>
<facturation>
<rue>Rue de la Justice</rue>
<numero>88</numero>
<cp>1020</cp>
<ville>Ixelles</ville>
</facturation>
<livraison>
<rue>Chaussée de Charleroi</rue>
<numero>99</numero>
<cp>1040</cp>
<ville>Etterbeek</ville>
</livraison>
</adresses>
<mail>j.dubois@gmail.com</mail>
<codeclient>22222</codeclient>
</client>
<client>
<nom>Deville</nom>
<prenom>Georges</prenom>
<age>48</age>
<sexe>homme</sexe>
<adresses>
<facturation>
<rue>Rue de la Paix</rue>
<numero>33</numero>
<cp>1080</cp>
<ville>Schaerbeek</ville>
</facturation>
<livraison>
<rue/>
<numero/>
<cp/>
<ville/>
</livraison>
</adresses>
<mail>g.deville@gmail.com</mail>
<codeclient>33333</codeclient>
</client>
</dbclients> |
Ensuite voici mon XSL (avec l'affichage des premières infos):
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
|
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="html" encoding="iso-8859-1"/>
<xsl:template match="/">
<html>
<head>
<title>Clients</title>
</head>
<table border="1">
<tbody>
<tr>
<th>nom</th>
<th>prenom</th>
<th>age</th>
<th>sexe</th>
<th>mail</th>
</tr>
<xsl:for-each select="dbclients/client">
<tr>
<td>
<xsl:value-of select="./nom"/>
</td>
<td>
<xsl:value-of select="./prenom"/>
</td>
<td>
<xsl:value-of select="./age"/>
</td>
<td>
<xsl:value-of select="./sexe"/>
</td>
<td>
<xsl:value-of select="./mail"/>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</html>
</xsl:template>
</xsl:stylesheet> |
Merci pour vos réponses...