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 :

[XSLT] compter des lignes / 2 colonnes


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut [XSLT] compter des lignes / 2 colonnes
    Bonsoir,

    Je ne suis pas doué en XSL ...
    J'avais un bout de code XSL qui me permettait de présenter en 2 colonnes un texte mais je n'arrive pas à l'adapter à mon nouveau XML qui n'est pas construit de la même façon ...


    Je voudrait classer en 2 colonnes les 'section', pour cela je pensait compter les 'section/titre' (le mieux serait de compter les ssection/titre mais c'est encore plus compliqué pour moi LOL)

    Le 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
    29
    30
    31
     
    <cours>
      <contenu>
        <partie>
          <section>
            <titre>Introduction</titre>
            <ssection>
              <titre>Historique de TCP/IP et d'internet</titre>
            </ssection>
            <ssection>
              <titre>Qu'est-ce que le World Wide Web ?</titre>
            </ssection>
            <ssection>
              <titre>Le protocole http</titre>
            </ssection>
            <ssection>
              <titre>Internet / Intranet</titre>
            </ssection>
          </section>
          <section>
            <titre>Serveurs et navigateurs Web</titre>
            <ssection>
              <titre>Communication client / serveur Web</titre>
            </ssection>
            <ssection>
              <titre>Les principaux navigateurs</titre>
            </ssection>
          </section>
        </partie>
      </contenu>
    </cours>
    Le XSL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
       <!--  Pour gérer les 2 colonnes -->
       <xsl:key name="ITEMS" match="//titre" use="count(preceding::titre)+1"/>
       <xsl:variable name="ITEM_MEDIAN" select="key('ITEMS', floor(count(//titre) div 2))"/>
       <xsl:variable name="CHAPITRE_MEDIAN" select="//contenu[partie/section/titre = $ITEM_MEDIAN]"/>
    ...
    <table>
      <tr>
        <td>col1<xsl:apply-templates select="contenu/partie [  following-sibling::section = $CHAPITRE_MEDIAN or self::section = $CHAPITRE_MEDIAN ]"/></td>
        <td>col2<xsl:apply-templates select="contenu/partie [ preceding-sibling::section = $CHAPITRE_MEDIAN ]"/></td>
      </tr>
    </table>
    Ca ne match pas ce qu'il faut, j'obtiens col1 | col2 mais pas mon contenu

  2. #2
    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 : 47
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    est ce que tu ne pourrais pas donner un exemple du rendu que tu veux obtenir, ce serait + simple de te répondre

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Pour l'exemple XML que j'ai choisit, c'est le cas mini, il n'y a que 2 elements mais voici ce que ce souhaite avoir du HTML :

    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
     
    <table>
      <tr>
        <td class="col1">
          <ul>
            <li>Serveurs et navigateurs Web
              <ul>
                <li>Historique de TCP/IP et d'internet</li>
                <li>Qu'est-ce que le World Wide Web ?</li>
                <li>Le protocole http</li>
                <li>Internet / Intranet</li>
              </ul>
            </li>
          </ul>
        </td>
        <td class="col2">
          <ul>
            <li>Introduction
              <ul>
                <li>Serveurs et navigateurs Web</li>
                <li>Communication client / serveur Web</li>
                <li>Les principaux navigateurs</li>
              </ul>
            </li>
          </ul>      
        </td>
      </tr>
    </table>

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    je cherche toujours une solution

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut

  6. #6
    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 : 47
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Tu as jeté un oeil dans les codes sources ?

    http://xml.developpez.com/sources/?p...ML#VII_tableau

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai fini par trouver une solution, je poste pour les futurs neuneux comme moi

    Pour obtenir le HTML 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
     
    <table border="1">
    <tr>
      <td>
        <ul>
          Introduction
          <li>Historique de TCP/IP et d'internet</li>
          <li>Qu'est-ce que le World Wide Web ?</li>
          <li>Le protocole http</li>
          <li>Internet / Intranet</li>
        </ul>
      </td>
      <td>
        <ul>
          Serveurs et navigateurs Web
          <li>Communication client / serveur Web</li>
          <li>Les principaux navigateurs</li>
        </ul>
      </td>
    </tr>
    </table>
    En ayant pour données XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <section>
      <titre>Introduction</titre>
      <ssection><titre>Historique de TCP/IP et d'internet</titre></ssection>
      <ssection><titre>Qu'est-ce que le World Wide Web ?</titre></ssection>
      <ssection><titre>Le protocole http</titre></ssection>
      <ssection><titre>Internet / Intranet</titre></ssection>
    </section>
    <section>
      <titre>Serveurs et navigateurs Web</titre>
      <ssection><titre>Communication client / serveur Web</titre></ssection>
      <ssection><titre>Les principaux navigateurs</titre></ssection>
    </section>
    Il faut ecrire le XSL 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
     
    <xsl:key name="all" match="//ssection" use="count(preceding::ssection)+1"/>
       <xsl:variable name="all_demi" select="key('all', floor(count(//ssection) div 2))"/>
       <xsl:variable name="moitie" select="//section[ssection = $all_demi]"/>
     
       <xsl:template match="/">
          <html>
             <body>
                <table border='1'>
                <tr>
                  <td>
                    <xsl:apply-templates select="cours/contenu/partie/section[following-sibling::section = $moitie or self::section = $moitie]"/>
                  </td>
                  <td>
                    <xsl:apply-templates select="cours/contenu/partie/section[preceding-sibling::section = $moitie]"/>                 
                  </td>
                </tr>                 
                </table>
             </body>
          </html>
       </xsl:template>
       <xsl:template match="section">
         <ul>
             <xsl:value-of select="titre"/>
             <xsl:apply-templates select="ssection"/>
         </ul>
       </xsl:template>
       <xsl:template match="ssection">
          <li><xsl:value-of select="titre"/></li>
       </xsl:template>

Discussions similaires

  1. [XSLT] numérotation des lignes du tableau résultat
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 02/02/2006, 09h48
  2. [T-SQL] Convertir des lignes en colonne
    Par cortex93 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/12/2005, 16h17
  3. [XSLT] Compter des occurences d'attributs
    Par 242 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/11/2005, 17h37
  4. Compter des lignes
    Par HULK dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/05/2005, 10h20
  5. [LG]Compter des Lignes...
    Par Loceka dans le forum Langage
    Réponses: 7
    Dernier message: 04/03/2004, 20h29

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