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 :

Mise en forme HTML


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut Mise en forme HTML
    Je n'arrive pas à classer les résultats par ordre alphabètique malgré le "sort". Quelqu'un peut-il m'expliquer pourquoi?
    De plus, actuellement je n'ai qu'un grand tableau d'1 colonne de 70 lignes affiché, est-il possible (malgré la boucle du template "doublon") d'avoir un tableau avec 3 colonnes de 20 ou 25 lignes, par exemple?
    Par quel synthaxe et où l'integrer dans mon code?









    Voici une partie de mon code :


    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
    <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
       <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
     
      <table border="2" cellpadding="2" cellspacing="2" align="center" width="60%">
    <tr>
    	<td>
    	<span style="font-size:20px;">
    	<center>OUTILS UTILISES PAR LA BA "X"</center></span>
    	</td>
     
     
    </tr>
    <xsl:choose>
    	<xsl:when test="//BA='X'">
     
     
       	<xsl:element name="liste"> 
     
       		<xsl:call-template name="doublon"> 
       			<xsl:with-param name="noeud" select="//outil"/>
        		</xsl:call-template> 
     
      	 </xsl:element> 
    	</xsl:when>
    	</xsl:choose>
     
     
    </table>
    </body>
    </html>
     
    </xsl:template>
     
     
     
    <xsl:template name="doublon"> 
     
       <xsl:param name="noeud"/> 
       <xsl:variable  name="valeur" select="$noeud[1]/@nom"></xsl:variable> 
     
    	<xsl:element name="outilUtil">
    		<xsl:for-each select="$valeur"> 
    		<xsl:sort order="ascending" select="$valeur"/> 
    		<tr>
    		<td align="center">
    		<span style="color:green;">
       		<xsl:value-of select="$valeur"></xsl:value-of>
    		</span>
    		</td>
    		</tr>
    		</xsl:for-each>
     	</xsl:element> 
     
     
    	<xsl:if test="$noeud[@nom!=$valeur]"> 
     
       		<xsl:call-template name="doublon"> 
       		<xsl:with-param name="noeud" select="$noeud[@nom!=$valeur]"/> 
       		</xsl:call-template> 
     
    	</xsl:if>    
     
    </xsl:template> 
     
     
     
    </xsl:stylesheet>

    et le xml source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="Registic.xsl"?>
    <Liste>
    <personne><nom>TERRIEUR</nom><prenom>Alain</prenom><BA>BRICO</BA><Site>PARIS</Site><E-mail>Alain.terieur@bidule.com</E-mail><outils><outil nom="marteau"/><outil nom="clous"/></outils></personne>
    <personne><nom>TERRIEUR</nom><prenom>Alex</prenom><BA>BRICO</BA><Site>LYON</Site><E-mail>Alex.terieur@bidule.com</E-mail><outils><outil nom="marteau"/><outil nom="scie"/><outil nom="equèrre"/></outils></personne>
    <personne><nom>FERAIRIEN</nom><prenom>Jean</prenom><BA>PASBRICO</BA><Site>LYON</Site><E-mail>Jean.ferairien@bidule.com</E-mail><outils><outil nom="niveau"/><outil nom="marteau"/></outils></personne>
    Merci d'avance pour votre aide...
    ps: Je débute.

  2. #2
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Snif... ..soit mon sujet est passé à la trappe, soit personne ne peut m'aider ???
    C'est bête, sachant que je suis tout seul sur ce projet et que personne ne maitrise à fond XSL dans le service où je suis, j'avoue avoir beaucoup de mal...(cf. les nombreux posts sur ce forum!).
    ...help...

  3. #3
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 691
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 691
    Par défaut
    ta variable "valeur" contient une chaine de caractère donc tu ne peux pas faire un "for-each" dessus
    de plus le tri n'a pas l'air d'être au point non plus : http://www.w3schools.com/xsl/el_sort.asp

    en fait ca fait 5 minutes que j'essaye de trouver une solution mais j'ai l'impression que la seule solution c'est d'appliquer 2 feuilles de style à la suite, c'est parce que le tri est trés limité alors on en arrive souvent à cette solution

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    pas encore trie mais pour obtenir 3 colonnes un algo non optimise mais qui marche (teste)
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
       <xsl:output method="html" encoding="Windows-1252" />
     
       <xsl:template match="/">
          <html>
             <title>
             </title>
     
             <table>
                <tr>
                   <xsl:call-template name="doublons">
                      <xsl:with-param name="noeud" select="//outil">
                      </xsl:with-param>
                   </xsl:call-template>
                </tr>
             </table>
     
             <body>
             </body>
          </html>
       </xsl:template>
     
       <xsl:template name="doublons">
          <xsl:param name="noeud" />
     
          <xsl:param name="resultat" />
     
          <xsl:variable name="valeur" select="$noeud[1]" />
     
          <xsl:choose>
             <xsl:when test="$noeud[@nom!=$valeur/@nom]">
                <xsl:choose>
                   <xsl:when test="$resultat">
                      <xsl:call-template name="doublons">
                         <xsl:with-param name="noeud" select="$noeud[@nom!=$valeur/@nom]">
                         </xsl:with-param>
     
                         <xsl:with-param name="resultat" select="$resultat|$valeur">
                         </xsl:with-param>
                      </xsl:call-template>
                   </xsl:when>
     
                   <xsl:otherwise>
                   <xsl:call-template name="doublons">
                         <xsl:with-param name="noeud" select="$noeud[@nom!=$valeur/@nom]">
                         </xsl:with-param>
     
                         <xsl:with-param name="resultat" select="$valeur">
                         </xsl:with-param>
                      </xsl:call-template>
                   </xsl:otherwise>
                </xsl:choose>
             </xsl:when>
     
             <xsl:otherwise>
                <xsl:call-template name="affiche">
                   <xsl:with-param name="noeud" select="$resultat|$valeur">
                   </xsl:with-param>
                </xsl:call-template>
             </xsl:otherwise>
          </xsl:choose>
       </xsl:template>
     
       <xsl:template name="affiche">
          <xsl:param name="noeud" />
     
          <tr>
             <td>
                <xsl:value-of select="$noeud[1]/@nom" />
             </td>
             <td>
                <xsl:value-of select="$noeud[2]/@nom" />
             </td>
             <td>
                <xsl:value-of select="$noeud[3]/@nom" />
             </td>
          </tr>
     
         <xsl:if test = "$noeud[4]"> <xsl:call-template name="affiche">
                   <xsl:with-param name="noeud" select="$noeud[position()&gt;3]">
                   </xsl:with-param>
                </xsl:call-template>
         </xsl:if>
     
       </xsl:template>
    </xsl:stylesheet>

  5. #5
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    un tri alphabetique par ligne et vaudrait mieux eviter de demander par colonnes tout de suite
    remplacer le call-template name="affiche" par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    xsl:apply-templates select = "$resultat|$valeur" >
                 <xsl:sort select="@nom" />
                </xsl:apply-templates>
    et la template
    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
     
    <xsl:template match="outil">
     
           <xsl:if test = "(position() mod 3=1)">
     
         	<xsl:text disable-output-escaping = "yes">
         	&lt;tr&gt;
         	</xsl:text>
         	</xsl:if>
        	<td>
             <xsl:value-of select="@nom" />
         	</td>
         	     	 <xsl:if test = "(position() mod 3=0) or position()=last()">
     
         	<xsl:text disable-output-escaping = "yes">
         	&lt;/tr&gt;
         	</xsl:text>
           </xsl:if>
     
     
       </xsl:template>

  6. #6
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Merci Erwy pour ce travail de recherche et ces lignes de code qui vont beaucoup m'aider. Je suis en week-end mais dès lundi je vais essayer ça. Un tri par ligne était ce que je cherchais à faire, pas par colonnes (rassures-toi). Merci, merci, merci.

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

Discussions similaires

  1. [EMAIL] Mise en forme HTML
    Par suistrop dans le forum ODS et reporting
    Réponses: 7
    Dernier message: 01/03/2010, 13h11
  2. [iText] Problème mise en forme, HTML -> PDF
    Par RamyBoulet dans le forum Documents
    Réponses: 0
    Dernier message: 22/09/2009, 12h54
  3. Réponses: 2
    Dernier message: 27/06/2009, 12h49
  4. [Mail] problème : mise en forme html d'un mail
    Par minie dans le forum Langage
    Réponses: 2
    Dernier message: 13/06/2007, 15h45

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