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] [JavaScript] tri + affichage à partir d'une position


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Fabouney
    Invité(e)
    Par défaut [XSLT] [JavaScript] tri + affichage à partir d'une position
    Bonjour à tous et à toute,

    mon problème, enfin, ma question plutôt est relativement simple, je vais essayer d'être clair.
    je récupére une liste d'enregistrements dans une base mysql, à partir de cette liste d'enregistrement j'effectue un système de pagination en PHP(aucun problème pour faire ceci).
    chaque lien de pagination (1, 2 ...) fait appel à une fonction en javascript qui en fait va charger mon fichier XML et le transformer avec mon fichier XSL, je passe en parametre à mon fichier XSL le numéro de la page, est grace a une requête Xpath, je lit les noeud dans mon fichier XML a partir de la position voulu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... select="//s[position() <= $numPage * 10 and position() >= ($numPage - 1) * 10 + 1]"
    en loccurence les 10 premiers.
    jusque là pas de problème, la où je bloque un peut c'est qu'en fait je veux procèder de la même manière pour trier les éléments de mon fichier XML (en passant en paramettre le nom du noeud à trier), ma question est :

    comment dois-je procèder pour tout trier dans un premier temp, et seulement ensuite récupére les éléments à partir de la position X, car si je fait pas le tri après, le tri va être effectué sur les 10 noeud extrait du fichier XML.

    voici la structure de mon 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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <artist n="Pigloo">
    <s id="7368">
    	<t>PAGE 1</t>
    	<l>le-ragga-des-pingouins.html</l>
    	<y>2006</y>
    	<d>2006-04-11</d>
    	<f id="5714" pid="1">
    		<p1>2.28571</p1>
    		<p2>2.28571</p2>
    		<p3>1.2381</p3>
    		<tp>MP3</tp>
    		<vc>4</vc>
    	</f>
    </s>
    </artist>
    voici un bout de mon fichier 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
    <xsl:template match="/">
    	<span>Page : <xsl:value-of select="$numPage" /></span>
    	<table style="font-family:verdana;font-size:9pt;" border="0" cellpadding="1" cellspacing="3">
     
    	<xsl:for-each select="//s[position() &lt;= $numPage * 10 and position() &gt;= ($numPage - 1) * 10 + 1]">
     
    .......
     
    	</xsl:for-each>
    	</table>
    </xsl:template>
     
     
    </xsl:stylesheet>
    P.S : le tri doit pouvoir s'effectuer sur <t> , sur <p1>, le nom des balise est volontairement très petit, pour eviter un fichier XML trop volumineux.


    Merci de vos contributions
    Cordialement

  2. #2
    Fabouney
    Invité(e)
    Par défaut
    j'ai fait ceci, vous en pensez quoi ?


    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
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output 
      method="html"
      encoding="ISO-8859-1"
      doctype-public="-//W3C//DTD HTML 4.01//EN"
      doctype-system="http://www.w3.org/TR/html4/strict.dtd"
      indent="yes" />
     
    <xsl:param name="numPage">1</xsl:param>
     
    <xsl:template match="/">
    <table>
    	<xsl:apply-templates/>
    </table>
    </xsl:template>
     
    <xsl:template match="artist"> 
    	<xsl:apply-templates select="s">
      		<xsl:sort select="t" order="descending"/> 
    	</xsl:apply-templates> 
    </xsl:template>
     
    <xsl:template match="s">
    <xsl:variable name="position"><xsl:value-of select="position()" /></xsl:variable>
     
    <xsl:if test="$position &lt;= $numPage * 10 and $position &gt;= ($numPage - 1) * 10 + 1">
    	<xsl:value-of select="t" /><br />
    </xsl:if>
     
    </xsl:template> 
     
    </xsl:stylesheet>

  3. #3
    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 : 48
    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
    bien

    Dans un cas comme celui-ci deporté le test de la selection dans la template est la solution la plus simple

  4. #4
    Fabouney
    Invité(e)
    Par défaut
    OK c'est cool, j'pense que ca peut aider certaine personne, bonne journée

    P.S : j'ai un autre tout petit soucis que j'ai evoqué dans ce post

    Bonne journée

Discussions similaires

  1. Affichage données de BDD à partir d'une position verticale définie
    Par amaubird dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 10/05/2015, 13h45
  2. [XSLT][JavaScript] Transformation à partir d'un flux xml
    Par tatemilio2 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 21/07/2009, 11h16
  3. Réponses: 1
    Dernier message: 08/02/2009, 10h47
  4. comment ouvrir un FileStream à partir d'une position choisie
    Par ryoussef19 dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 19/06/2007, 13h58
  5. Réponses: 4
    Dernier message: 08/01/2007, 23h38

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