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 :

Comment boucler sur les infos d'un élément précis [Débutant(e)] [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Homme Profil pro
    WEB
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : WEB
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 14
    Points
    14
    Par défaut 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 : 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
    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 : 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
     
    <?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...

  2. #2
    Membre à l'essai
    Homme Profil pro
    WEB
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : WEB
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Re,

    Alors voilà, je pense que je cherchais un peu loin alors que c'était en fait assez simple. Il ne faut même pas boucler sur les éléments facturation et livraison...

    Voici mon code ci-dessous mais avant ceci, j'ai une dernière petite question. Là je fais du XSL. Comment faire de cet exercice du XSLT. Quelle est la différence?

    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
    56
    57
    58
     
    <?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>
    						<tr>
    							<td colspan="5">
    							    <xsl:value-of select="./adresses/facturation/rue"/>*
    								<xsl:value-of select="./adresses/facturation/numero"/>* -
    								<xsl:value-of select="./adresses/facturation/cp"/>*
    								<xsl:value-of select="./adresses/facturation/ville"/>
    							</td>
    						</tr>
    						<tr>
    							<td colspan="5">
    							    <xsl:value-of select="./adresses/livraison/rue"/>*
    								<xsl:value-of select="./adresses/livraison/numero"/>* -
    								<xsl:value-of select="./adresses/livraison/cp"/>*
    								<xsl:value-of select="./adresses/livraison/ville"/>
    							</td>
    						</tr>
    					</xsl:for-each>
    				</tbody>
    			</table>
    		</html>
    	</xsl:template>
    </xsl:stylesheet>

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Citation Envoyé par Janko Voir le message
    Là je fais du XSL. Comment faire de cet exercice du XSLT. Quelle est la différence?
    C'est déjà du XSLT, comme l'indique le namespace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.w3.org/1999/XSL/Transform
    XSL n'est qu'un acronyme qui désigne un ensemble de plusieurs normes, en l'occurence :
    - XPath 1.0
    - XSL Transform, raccourci à XSLT
    - XSL Format, raccourci à XSL-FO.

    Quant au préfixe xsl: que tu mets à toutes tes balises, ce n'est qu'un alias défini avec xmlnssl. Tu pourrais tout aussi bien mettre xmlns:toto et utiliser le préfixe toto: à la place. C'est juste que trois lettres, c'est plus court que quatre lettres.

  4. #4
    Membre à l'essai
    Homme Profil pro
    WEB
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : WEB
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Merci pour votre réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Recherche comment boucler sur les boites emails ?
    Par Gerard_tlse dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 23/04/2015, 20h27
  2. [XL-2003] Comment boucler sur les tableaux page web
    Par Maxgad dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 30/01/2013, 11h37
  3. Réponses: 2
    Dernier message: 25/08/2011, 17h43
  4. Boucler sur les éléments
    Par joums dans le forum jQuery
    Réponses: 4
    Dernier message: 11/04/2011, 17h01
  5. [JDOM] Parsage : comment boucler sur les enfants d'un noeud ?
    Par Nelieru dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 12/02/2009, 16h28

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