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] Changer l'ordre de tri


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 115
    Points : 60
    Points
    60
    Par défaut [XSLT] Changer l'ordre de tri
    Bonjour

    Voici mon 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <ROOT>
        <Title>TOUS LES TITRES</Title>
        <AAA id="1">
            <BBB>1</BBB>
            <CCC>Titre1</CCC>
        </AAA>
        <AAA id="2">
            <BBB>0</BBB>
            <CCC>Titre2</CCC>
        </AAA>
        <AAA id="1">
            <BBB>1</BBB>
            <CCC>Titre3</CCC>
        </AAA>
        <AAA id="1">
            <BBB>0</BBB>
            <CCC>Titre0</CCC>
        </AAA>
    </ROOT>
    Le xsl suivant affiche les elements sequentiellement

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:output encoding="ISO-8859-15" method="xml" indent="yes"/>
     
        <xsl:template match="/ROOT">
            <html xml:lang="en" lang="en">
                <head>
                    <title>
                        <xsl:value-of select="Title"/>
                    </title>
                </head>
                <body>
                    <xsl:apply-templates select="AAA[@id='1']"/>
                </body>
            </html>
        </xsl:template>
     
        <xsl:template match="AAA">
            <xsl:if test="position()!=1">
                <br />
            </xsl:if>
            <xsl:value-of  select="CCC"/>
        </xsl:template>
     
    </xsl:stylesheet>
    Ceci m'affiche
    Titre1
    Titre3
    Titre0

    Je souhaite que le regroupement s'effectue sur l'élément <BBB> pour avoir l'affichage suivant
    Titre1 Titre3
    Titre0

    Merci de me donner une piste sur la technique à utiliser

  2. #2
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    il faut faire un select par rapport à BBB puis de voir si le BBB d'après à une valeur différentes du BBB en cours de traitement
    un exemple autre
    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
     
    <students>
    <student id="1">
    	<adress>
    		<street></street>
    		<cp></cp>
    		<city></city>
    	</adress>
    	<civility>
    		<name>name1</name>
    		<forname></forname>
    		<birthday></birthday>
    		<sex>M</sex>
    	</civility>
    	<study>
    		<class></class>
    	</study>
    </student>
    <student id="2">
    	<adress>
    		<street></street>
    		<cp></cp>
    		<city></city>
    	</adress>
    	<civility>
    		<name>name2</name>
    		<forname></forname>
    		<birthday></birthday>
    		<sex>M</sex>
    	</civility>
    	<study>
    		<class></class>
    	</study>
    </student>
    </students>
    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
     
    ?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output 
      encoding="ISO-8859-15"
      method="html"
      doctype-public="-//W3C//DTD HTML 4.01//EN"
      doctype-system="http://www.w3.org/TR/html4/strict.dtd"
      indent="yes" />
     
    <xsl:template match="students">
    	<html>
    	<xsl:for-each select="student">
    		<xsl:sort select=".//sex" order="ascending"/>
    		<xsl:variable name="sexcurrent" select=".//sex"/>
    		<xsl:if test="not(preceding-sibling::student//sex=$sexcurrent)">
    			<xsl:variable name="id"><xsl:value-of select=".//sex"/></xsl:variable>
    			<h1> sexe: <xsl:value-of select="//base/sexs/sex[@id=$id]"/></h1>
     
    			<ul>
    				<xsl:for-each select="//student[.//sex=$sexcurrent]">
    					<li><xsl:value-of select=".//name"/></li>
    				</xsl:for-each>
    			</ul>
     
    		</xsl:if>
    	</xsl:for-each>
     
    	</html>
    </xsl:template>
     
    </xsl:stylesheet>

Discussions similaires

  1. [AC-2003] Changer ordre de tri d'une requete en VBA
    Par lio33 dans le forum VBA Access
    Réponses: 0
    Dernier message: 14/12/2009, 18h01
  2. Changer l'ordre de tri par défaut d'un GridView
    Par wazodnuit dans le forum ASP
    Réponses: 1
    Dernier message: 02/08/2007, 13h30
  3. [XSLT] Changer l'ordre de tri d'une liste
    Par FlyByck dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 10/05/2007, 09h10
  4. Changer ordre de tri seulement
    Par dany007 dans le forum IHM
    Réponses: 5
    Dernier message: 22/02/2007, 13h27
  5. Réponses: 1
    Dernier message: 29/03/2006, 11h33

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