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

XML/XSL et SOAP Discussion :

tableau xsl html


Sujet :

XML/XSL et SOAP

  1. #1
    Membre régulier
    Femme Profil pro
    profession libérale
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut tableau xsl html
    Bonjour,
    J'essai désespérément de trouver une solution pour que pour la sortie html, les noms soient dans la même colonne et les prénoms également. J'ai essayé de bidouiller avec les <tr> et <td> mais rien n'y fait...
    qq'un pourrait-il me donner la solution? Je suppose qu'elle n'est pas très compliquée mais là, je bloque...
    Merci d'avance!

    Code xml:

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="Essaisimplifie.xsl"?> 
     
    <DEBUT>
    	<TABLE_DESCRIPTION/>
    				<COLUMN_LIST>
     
    					<COLUMN col="1" name="Nom"/>
    					<COLUMN col="2" name="Prénom"/>
     
    				</COLUMN_LIST>
     
     
    				<CLUSTER_ENTRY clusterTableId="1" lastModificationDate="20110527172253" modifyByUserName="HMAAdmin" objectReferenceId="2" objectSubTypeName="Client" parentReferenceId="6" parentSubTypeName="Dossier">
    								<PARAMETER freeParamObjectId="0" freeParamStructSTDCategory="" freeParamStructSTDColor="" freeParamStructSTDSubTypeName="" freeParamStructSTDTranslatedSubTypeName="" paramName="Nom" paramTranslatedName="Nom" paramType="STRING">
    								<PARAMETER_DEFINITION paramTranslatedValue="Durand" paramValue="Durand"/>
    								</PARAMETER>
    								<PARAMETER freeParamObjectId="0" freeParamStructSTDCategory="" freeParamStructSTDColor="" freeParamStructSTDSubTypeName="" freeParamStructSTDTranslatedSubTypeName="" paramName="Prenom" paramTranslatedName="Prénom" paramType="STRING">
    								<PARAMETER_DEFINITION paramTranslatedValue="Anik" paramValue="Anik"/>
    								</PARAMETER>
    								<PARAMETER freeParamObjectId="0" freeParamStructSTDCategory="" freeParamStructSTDColor="" freeParamStructSTDSubTypeName="" freeParamStructSTDTranslatedSubTypeName="" paramName="Nom" paramTranslatedName="Nom" paramType="STRING">
    								<PARAMETER_DEFINITION paramTranslatedValue="Dupont" paramValue="Dupont"/>
    								</PARAMETER>
    								<PARAMETER freeParamObjectId="0" freeParamStructSTDCategory="" freeParamStructSTDColor="" freeParamStructSTDSubTypeName="" freeParamStructSTDTranslatedSubTypeName="" paramName="Prenom" paramTranslatedName="Prénom" paramType="STRING">
    								<PARAMETER_DEFINITION paramTranslatedValue="Eric" paramValue="Eric"/>
    								</PARAMETER>
    				</CLUSTER_ENTRY>
    </DEBUT>
    Code xsl:
    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
     
     
     
    	<xsl:template match="DEBUT">
     
     
    		<table width="95%" BORDER="5" CELLPADDING="5" CELLSPACING="1" ALIGN="LEFT">
     
     
     
    								<tr>
    								<xsl:for-each select="COLUMN_LIST/COLUMN"> 
    									<th><xsl:value-of select="@name"/> *</th>
     
    								</xsl:for-each>
    								</tr>
     
     
    								<tr>
    								<xsl:for-each select="CLUSTER_ENTRY/PARAMETER/PARAMETER_DEFINITION"> 
    									<td> *<xsl:value-of select="@paramValue"/> *</td>
    								</xsl:for-each>
    								</tr>
     
     
     
     
    		</table>
     
    	</xsl:template>
     
     
     
     
    </xsl:stylesheet>

  2. #2
    Membre régulier
    Femme Profil pro
    profession libérale
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut
    désolé, il y avait une erreur dans le code xml qui est le suivant:

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="Essaisimplifie.xsl"?> 
     
    <DEBUT>
    	<TABLE_DESCRIPTION/>
    				<COLUMN_LIST>
     
    					<COLUMN col="1" name="Nom"/>
    					<COLUMN col="2" name="Prénom"/>
     
    				</COLUMN_LIST>
     
     
    				<CLUSTER_ENTRY clusterTableId="1" lastModificationDate="20110527172253" modifyByUserName="HMAAdmin" objectReferenceId="2" objectSubTypeName="Client" parentReferenceId="6" parentSubTypeName="Dossier">
    								<PARAMETER freeParamObjectId="0" freeParamStructSTDCategory="" freeParamStructSTDColor="" freeParamStructSTDSubTypeName="" freeParamStructSTDTranslatedSubTypeName="" paramName="Nom" paramTranslatedName="Nom" paramType="STRING">
    								<PARAMETER_DEFINITION paramTranslatedValue="Durand" paramValue="Durand"/>
    								</PARAMETER>
    								<PARAMETER freeParamObjectId="0" freeParamStructSTDCategory="" freeParamStructSTDColor="" freeParamStructSTDSubTypeName="" freeParamStructSTDTranslatedSubTypeName="" paramName="Prenom" paramTranslatedName="Prénom" paramType="STRING">
    								<PARAMETER_DEFINITION paramTranslatedValue="Anik" paramValue="Anik"/>
    								</PARAMETER>
    				</CLUSTER_ENTRY>
    				<CLUSTER_ENTRY>
    								<PARAMETER freeParamObjectId="0" freeParamStructSTDCategory="" freeParamStructSTDColor="" freeParamStructSTDSubTypeName="" freeParamStructSTDTranslatedSubTypeName="" paramName="Nom" paramTranslatedName="Nom" paramType="STRING">
    								<PARAMETER_DEFINITION paramTranslatedValue="Dupont" paramValue="Dupont"/>
    								</PARAMETER>
    								<PARAMETER freeParamObjectId="0" freeParamStructSTDCategory="" freeParamStructSTDColor="" freeParamStructSTDSubTypeName="" freeParamStructSTDTranslatedSubTypeName="" paramName="Prenom" paramTranslatedName="Prénom" paramType="STRING">
    								<PARAMETER_DEFINITION paramTranslatedValue="Eric" paramValue="Eric"/>
    								</PARAMETER>
    				</CLUSTER_ENTRY>
    </DEBUT>

  3. #3
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Utilise des templates plutôt que des for-each et ça passera tout seul.

    Par contre, ce serait bien pour toi et pour les lecteurs de ton code que tu indentes correctement : les éléments frères au même niveau, les éléments fils au niveau n+1, une seule tabulation par niveau (ou 2 à 4 espaces) et pas de sauts de lignes abusifs.

  4. #4
    Membre régulier
    Femme Profil pro
    profession libérale
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut
    Je te remercie de ta réponse et tiendrai à l'avenir bien entendu compte de tes conseils de présentations.
    Pour les template, pourrais-tu, stp, me montrer le code que tu envisage?
    Encore merci

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Personnellement je ne pense pas que les templates résolvent l'intégralité du problème, mais voici une base :

    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
    <xsl:template match="TABLE_DESCRIPTION">
      <table>
        <xsl:apply-templates/>
      </table>
    </xsl:template>
     
    <xsl:template match="COLUMN_LIST">
      <tr>
        <xsl:apply-templates/>
      </tr>
    </xsl:template>
     
    <xsl:template match="COLUMN">
      <th><xsl:value-of select="@name"/></th>
    </xsl:template>
    Ça devrait suffisamment fixer les idées pour que tu vois comment faire le cœur du problème.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Voilà ce à quoi je pensais :

    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
    <xsl:template match="DEBUT">
    	<table width="95%" border="5" cellpadding="5" cellspacing="1" align="left">
    		<tr>
    			<xsl:apply-templates select="COLUMN_LIST/COLUMN"/>
    		</tr>
    		<xsl:apply-templates select="CLUSTER_ENTRY/PARAMETER"/>
    	</table>
    </xsl:template>
     
    <xsl:template match="COLUMN">
    	<th><xsl:value-of select="@name"/> *</th>
    </xsl:template>
     
    <xsl:template match="PARAMETER[@paramName='Nom']">
    	<tr>
    		<td> *<xsl:value-of select="PARAMETER_DEFINITION/@paramValue"/> *</td>
    		<xsl:choose>
    			<xsl:when test="following-sibling::PARAMETER/@paramName = 'Prenom'">
    				<td> *<xsl:value-of select="following-sibling::PARAMETER/PARAMETER_DEFINITION/@paramValue"/> *</td>
    			</xsl:when>
    			<xsl:otherwise>
    				<td>N/A</td>
    			</xsl:otherwise>
    		</xsl:choose>
    	</tr>
    </xsl:template>
    Par contre le fichier XML que tu as fourni est mal pensé.
    Il est généralement préférable de regrouper les informations qui vont ensemble dans un fichier XML.

    Ici par exemple, il serait de loin préférable de regrouper les noms et prénoms qui vont ensemble, ce serait plus compréhensible de manière générale et plus facile à traiter en XSL (pas besoin de passer par un following-sibling ni par un template (ou un appel de template) avec une restriction sur les attributs).

    EDIT :
    Evite les MP : c'est du plus mauvais effet. Je l'aurais lu avant, je n'aurais probablement pas répondu.

  7. #7
    Membre régulier
    Femme Profil pro
    profession libérale
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut
    merci, et excuse-moi pour le mp: j'ignorai...
    il ne faut pas m'en vouloir, je suis tout nouveau

  8. #8
    Membre régulier
    Femme Profil pro
    profession libérale
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut
    Ca marche super!
    Je vais essayer de comprendre ton code et me permettrai, si tu le veux bien, de revenir pour demander qques explications si je ne capte pas tout (sans mp, promis )

  9. #9
    Membre régulier
    Femme Profil pro
    profession libérale
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut La troisième (cinquième :zoubi: ?) colonne
    1°) en ce qui concerne le fichier xml, je n'ai pas la main dessus. je suis en profession libérale et j'ai besoin d'un fichier client auquel le client peut accéder également. Qq'un de sympa m'a filer un programme (plusieurs milliers de ligne) en toute légalité destiné aux entreprises. Je dois donc me débrouiller avec...
    2°) Comme je te l'ai dit dans mon mp, je débute et j'ai qques pb de compréhension notamment avec les template.
    3°) Sur le bout de programme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:template match="DEBUT">
    	<table width="95%" border="5" cellpadding="5" cellspacing="1" align="left">
    		<tr>
    			<xsl:apply-templates select="COLUMN_LIST/COLUMN"/>
    		</tr>
    		<xsl:apply-templates select="CLUSTER_ENTRY/PARAMETER"/>
    	</table>
    </xsl:template>
    Est-ce que on peut dire qu'en qque sorte, il s'agit de la "fonction principale", c'est à dire qu'il déclare un modèle (mais quel modèle?? Les <xsl:apply-templates select="COLUMN_LIST/COLUMN"/> et <xsl:apply-templates select="CLUSTER_ENTRY/PARAMETER"/> qui sont définis après c'est-à-dire dans "<xsl:template match="COLUMN">" notamment?). est-ce bien cela?
    4°) Pour le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="COLUMN">
    	<th><xsl:value-of select="@name"/> *</th>
    </xsl:template>
    C'est clair, j'ai compris, pas de pb.

    4°) En revanche pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:template match="PARAMETER[@paramName='Nom']">
    	<tr>
    		<td> *<xsl:value-of select="PARAMETER_DEFINITION/@paramValue"/> *</td>
    		<xsl:choose>
    			<xsl:when test="following-sibling::PARAMETER/@paramName = 'Prenom'">
    				<td> *<xsl:value-of select="following-sibling::PARAMETER/PARAMETER_DEFINITION/@paramValue"/> *</td>
    			</xsl:when>
    			<xsl:otherwise>
    				<td>N/A</td>
    			</xsl:otherwise>
    		</xsl:choose>
    	</tr>
    </xsl:template>
    je dois avouer que c'est bcp plus flou et que j'aurais été incapable de le trouver...
    Si je comprends chaque ligne, j'ai du mal à saisir le raisonnement global. Quel a été ton raisonnement pour parvenir à ce résultat?

    5° et dernièrement)
    Lorsque je rajoute dans le xml des noms et prénoms (c'est-à-dire de nouvelles lignes = nouveaux clients), pas de pb.
    En revanche, lorsque j'essaie de rajouter une nouvelle colonne (par exemple une adresse, une nationalité), c'est la cata, il ne le prend pas en compte.
    Voici les lignes que j'ai rajoutées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <PARAMETER freeParamObjectId="0" freeParamStructSTDCategory="" freeParamStructSTDColor="" freeParamStructSTDSubTypeName="" freeParamStructSTDTranslatedSubTypeName="" paramName="Nationalite" paramTranslatedName="Nationalité" paramType="STRING">
    								<PARAMETER_DEFINITION paramTranslatedValue="Française" paramValue="Française"/>
    								</PARAMETER>
    j'ai essayé ça, et bien évidemment ça ne marche pas...

    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
    <xsl:template match="PARAMETER[@paramName='Nom']">
    		<tr>
    			<td><xsl:value-of select="PARAMETER_DEFINITION/@paramValue"/></td>
    			<xsl:choose>
    				<xsl:when test="following-sibling::PARAMETER/@paramName = 'Prenom'">
    					<td> <xsl:value-of select="following-sibling::PARAMETER/PARAMETER_DEFINITION/@paramValue"/> </td>
    				</xsl:when>
    				<xsl:when test="following-sibling::PARAMETER/@paramName = 'Nationalite'">
    					<td> <xsl:value-of select="following-sibling::PARAMETER/PARAMETER_DEFINITION/@paramValue"/> </td>
    				</xsl:when>
    				<xsl:otherwise>
    					<td>N/A</td>
    				</xsl:otherwise>
    			</xsl:choose>
    		</tr>
    	</xsl:template>
    Je pense que ça vient du fait que dans <xsl:choose>, il ne peut y avoir qu'un seul <xsl:when> d'exact et pas plusieurs. Mais alors comment faire? Car j'ai d'autres colonnes à ajouter: adresse, téléphone, paiement facture etc...

    Je m'excuse d'avoir été aussi long et vous remercie par avance de vos réponses.

  10. #10
    Membre régulier
    Femme Profil pro
    profession libérale
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut Solution
    Je pense avoir trouvé la solution qui a le mérite de la simplicité:

    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
     
     
    	<xsl:template match="DEBUT">
    			<table width="95%" border="5" cellpadding="5" cellspacing="1" align="left">
    				<tr>
    					<xsl:apply-templates select="COLUMN_LIST/COLUMN"/>
    				</tr>
    					<xsl:apply-templates select="CLUSTER_ENTRY"/>
    			</table>
    	</xsl:template>
     
    	<xsl:template match="COLUMN">
    		<th><xsl:value-of select="@name"/> </th>
    	</xsl:template>
     
    	<xsl:template match="CLUSTER_ENTRY">
    		<tr>	
     
    				<xsl:for-each select="."> 
    					<xsl:for-each select="PARAMETER/PARAMETER_DEFINITION">
    						<td>  <xsl:value-of select="@paramValue"/>  </td> 
    					</xsl:for-each>
    				</xsl:for-each>
     
    		</tr>
    	</xsl:template>
     
     
    </xsl:stylesheet>
    Le seul pb qui subsiste est le cas où pour un client, un champ n'est pas renseigné. Il faudrait faire un test. Si qq'un avait une idée lumineuse...

  11. #11
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Arf, je m'étais basé sur le premier XML que t'avais posté et j'avais pas fait gaffe qu'en fait chaque "cluster" contenait les infos d'une unique "personne".

    Du coup effectivement c'est plus simple à traiter et ta solution n'est pas trop mal, il fallait juste la combiner avec celle que j'avais précédemment proposée.

    Citation Envoyé par massenoire Voir le message
    3°) Sur le bout de programme suivant: [...]
    Est-ce que on peut dire qu'en qque sorte, il s'agit de la "fonction principale", c'est à dire qu'il déclare un modèle (mais quel modèle?? Les <xsl:apply-templates select="COLUMN_LIST/COLUMN"/> et <xsl:apply-templates select="CLUSTER_ENTRY/PARAMETER"/> qui sont définis après c'est-à-dire dans "<xsl:template match="COLUMN">" notamment?). est-ce bien cela?
    Pas compris.
    Ce template match l'élément DEBUT qui se trouve être la racine de ton XML. Donc oui, c'est le "point d'entrée" de ton XSL.
    L'élément apply-templates permet d'appliquer les templates aux éléments fils de l'élément courant (DEBUT) ou de l'élément spécifié dans l'attribut select de l'apply-templates (ici aux élément /DEBUT/COLUMN_LIST/COLUMN et /DEBUT/CLUSTER_ENTRY/PARAMETER).

    Pour celà, il faut donc définir des templates qui déclarent pouvoir traiter ces éléments, d'où les déclarations <xsl:template match="COLUMN"> et <xsl:template match="PARAMETER[@paramName='Nom']">.

    Mais c'est la base du XSL, si tu ne comprends pas ça, le mieux serait de lire des cours sur le XSL (il y'en a sur développez).

    Citation Envoyé par massenoire Voir le message
    4°) En revanche pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:template match="PARAMETER[@paramName='Nom']">
    	<tr>
    		<td> *<xsl:value-of select="PARAMETER_DEFINITION/@paramValue"/> *</td>
    		<xsl:choose>
    			<xsl:when test="following-sibling::PARAMETER/@paramName = 'Prenom'">
    				<td> *<xsl:value-of select="following-sibling::PARAMETER/PARAMETER_DEFINITION/@paramValue"/> *</td>
    			</xsl:when>
    			<xsl:otherwise>
    				<td>N/A</td>
    			</xsl:otherwise>
    		</xsl:choose>
    	</tr>
    </xsl:template>
    je dois avouer que c'est bcp plus flou et que j'aurais été incapable de le trouver...
    Si je comprends chaque ligne, j'ai du mal à saisir le raisonnement global. Quel a été ton raisonnement pour parvenir à ce résultat?
    Ben là c'est pas très compliqué :
    - L'élémént courant est l'élément PARAMETER qui a pour attribut paramName "Nom".
    - Je crée une cellule avec la valeur de nom
    - Je regarde s'il existe un élément PARAMETER qui le suit ayant pour @paramName "Prenom" (dans le when)
    - Si c'est le cas, je crée une cellule avec la valeur de prénom (when)
    - Si ce n'est pas le cas, je crée une cellule avec pour valeur 'N/A' (otherwise)

    Citation Envoyé par massenoire Voir le message
    5° et dernièrement)[...]j'ai essayé ça, et bien évidemment ça ne marche pas...[...]
    Je pense que ça vient du fait que dans <xsl:choose>, il ne peut y avoir qu'un seul <xsl:when> d'exact et pas plusieurs. Mais alors comment faire? Car j'ai d'autres colonnes à ajouter: adresse, téléphone, paiement facture etc...
    Non, il peut y avoir autant de when que tu veux seulement les when fonctionnent exactement comme de else if. Donc si tu passe dans un when, tu ne passes pas dans les suivants (ni dans le otherwise).

    Voilà une solution améliorée qui prend en compte l'ordre de définition des colonnes :
    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
    <xsl:template match="DEBUT">
    	<table width="95%" border="5" cellpadding="5" cellspacing="1" align="left">
    		<tr>
    			<!-- Déclaration des colonnes en les ordonnant -->
    			<xsl:for-each select="COLUMN_LIST/COLUMN">
    				<xsl:sort data-type="number" select="@col"/>
    				<th><xsl:value-of select="@name"/></th>
    			</xsl:for-each>
    		</tr>
    		<!-- Application du template sur les éléments CLUSTER_ENTRY -->
    		<xsl:apply-templates select="CLUSTER_ENTRY"/>
    	</table>
    </xsl:template>
     
    <xsl:template match="CLUSTER_ENTRY">
    	<!-- Création d'une variable avec pour valeur l'élément courant (CLUSTER_ENTRY) -->
    	<xsl:variable name="cluster" select="."/>
    	<tr>
    		<!-- Parcours des colonnes déclarées selon leur ordre (il y'a de la redondance mais en XSL 1.0, difficile de faire mieux) -->
    		<xsl:for-each select="../COLUMN_LIST/COLUMN">
    			<xsl:sort data-type="number" select="@col"/>
     
    			<!-- Création d'une variable avec l'élément correspondant à la colonne en cours -->
    			<!-- On sélectionne le PARAMETER dont l'attribut @paramTranslatedName a la même valeur que l'attribut @name de la colonne en cours -->
    			<xsl:variable name="cell" select="$cluster/PARAMETER[@paramTranslatedName=current()/@name]/PARAMETER_DEFINITION/@paramValue"/>
     
    			<xsl:choose>
    				<xsl:when test="$cell">
    					<!-- Si un élément correspond à la colonne à traiter, on crée une cellule avec sa valeur -->
    					<td><xsl:value-of select="$cell"/></td>
    				</xsl:when>
    				<xsl:otherwise>
    					<!-- Sinon, on crée une cellule avec pour valeur 'N/A' -->
    					<td>N/A</td>
    				</xsl:otherwise>
    			</xsl:choose>
    		</xsl:for-each>
    	</tr>
    </xsl:template>
    </xsl:stylesheet>

  12. #12
    Membre régulier
    Femme Profil pro
    profession libérale
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut
    Merci pour tes réponses!

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

Discussions similaires

  1. Scrollbar et tableau en html
    Par marti dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/09/2005, 11h29
  2. xml---(xsl)----->html
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 31/05/2005, 14h40
  3. Problème de montage d'un tableau en HTML...
    Par David.V dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/02/2005, 08h38
  4. Transformation xml + xsl -> HTML via PHP
    Par petit-ourson dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/10/2003, 22h42
  5. XSL pour visualiser arbre XML sous forme de tableau en HTML
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 28/03/2003, 10h55

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