Discussion: for-each et sort [XSLT 1.0]

  1. #1
    Membre à l'essai
    Homme Profil pro
    infographiste
    Inscrit en
    avril 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : infographiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : avril 2012
    Messages : 32
    Points : 18
    Points
    18

    Par défaut for-each et sort

    Bonjour à tous,

    Je début en Xsl,et voici mon problème je cherche à faire un trie sur des éléments. j'y suis arrivé mais il triplé les infos, et là, il ne tripe pas les info mais il ne les trie plus.

    Voici mes code merci à vous.

    Pour info : je suis dyslexique et dysorthographie, je fais un max.

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <Products>
        <product>
            <ISBN>9781234567891</ISBN>
            <title>zzzzzzzzzzz</title>
            <date>2015-10-23</date>
             <serial_info>
                <code>VR33</code>
            </serial_info>
        </product>
        <product>
            <ISBN>9782345678912</ISBN>
            <title>Xxxxxxxxxx xxxxx</title>
            <date>2017-10-03</date>
             <serial_info>
                <code>VR32</code>
            </serial_info>
        </product>
        <product>
            <ISBN>9783456789123</ISBN>
            <title>Wwwww</title>
            <date>2016-04-28</date>
            <serial_info>
                <code>VR33</code>
            </serial_info>
        </product>
       <serial>
           <code>VR33</code>
           <title>Eeeee</title>
       </serial>
         <serial>
              <code>VR34</code>
              <title>Ttttttt</title>
         </serial>
    </Products>
    mon code xslt :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"
       xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/"
       version="1.0">
     
       <xsl:output indent="yes"/>
     
       <xsl:template match="Products">
           <Products >
     
              <xsl:apply-templates select="product"></xsl:apply-templates>
     
           </Products>
        </xsl:template>
     
     
     
     
     
        <xsl:template match="product">
             <product> 
             <xsl:for-each select=".">
                  <xsl:sort select="translate(date,'-','')" order="descending"/>
     
                              <ISBN><xsl:value-of select="ISBN"/></ISBN>
                              <date><xsl:value-of select="substring(date, 0, 5)"/></date>
     
                </xsl:for-each>
             </product>
     
     
            </xsl:template>
    </xsl:stylesheet>
    Merci à vous.

    Philippe

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 257
    Points : 19 062
    Points
    19 062

    Par défaut

    Hello,

    tu ne peux pas faire for-each select=".", ça n'a aucun intérêt.

    Tu dois mettre ton xsl:sort dans le apply-templates, comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:apply-templates select="product">
      <xsl:sort select="date" order="descending"/>
    </xsl:apply-templates>
    et le translate() sur date ne sert à rien, ça marche tout aussi bien avec ou sans les tirets.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Homme Profil pro
    infographiste
    Inscrit en
    avril 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : infographiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : avril 2012
    Messages : 32
    Points : 18
    Points
    18

    Par défaut

    Merci cela fonction très bien je passe à la suite à très bientôt avec d'autres questions

    Philippe

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

Discussions similaires

  1. [XSLT 1.0] for-each & sort sur plusieurs attributs
    Par Metalman dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/05/2017, 19h40
  2. [XSLT] XSLT sort dans un for-each avec select sur un param
    Par tralloc dans le forum XML
    Réponses: 5
    Dernier message: 23/11/2012, 10h06
  3. [XSLT] for-each-group et sort
    Par renardbleu dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 05/02/2008, 16h36
  4. [XSL] for-each + sort, et comparaison current previous value
    Par johan_barbier dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/11/2005, 17h46
  5. [VB6] For Each ... In ...
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/02/2003, 13h56

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