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] Répétion de boucles à un nombre défini


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Par défaut [XSLT] Répétion de boucles à un nombre défini
    Bonjour, je ne sais pas si ce la est possible ; mais j'aimerais savoir s'il y a une structure ou une manière de répéter une boucle un certain nombre de fois ???

    Pour être plus clair mon fichier XML contient des <ROW num=" "> allant de 1 à parfois 130...

    Mon fichier XSL est composé de boucles afin d'afficher les valeurs beaucoup plus rapidement mais je n'ai pour autant pas besoin d'afficher les 130, en fait j'aimerai avoir que les 10 premiers.

    Quelqu'un pourrait-il m'éclairer ??

    J'ai chercher des exemples sur le net mais les seules structures trouvées sont le each-for (celle que j'utilise déjà dans mon fichier XSL) ou le système de templates...

    Merci d'avance pour votre aide !!! Je me tiens disponible si vous avez besoins de plus d'informations ^

  2. #2
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Dans le select d'un xsl:for-each on peut toujours rajouter un filtre tel que [position() &lt; 10].

    Ce n'est pas forcément très efficace car tous les éléments sont passés au filtre mais c'est plus simple qu'une méthode par template récursif où l'on décrémente progressivement un compteur !

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Par défaut
    Merci beaucoup ça marche impec' !

    J'aurais juste une dernière question ; dans le cas où l'utilisateur désire selectioner un ROW pour afficher les 10ROW à partir du numéro du ROW qu'il a selectionné, comment faire ???

    Je m'explique plus clairement, actuellement le fichier affiche les dix premiers ROW (ROW num="1" à ROW num"10") mais comme je disais parfois il y en a 130. Alors comment pourrais-je faire pour permettre à l'utilisateur de choisir un numéro (par exemple "20") pour que le fichier affiche de ROW num="20" à ROW num="30" ?



    Je n'arrive pas à trouver de solution, est-ce qu'il faut passer par un formulaire avec derrière du PHP qui récupère la valeur pour changer la structure du XSL ?

  4. #4
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Toute la combinatoire de filtre est possible !

    Par exemple, pour une variable ou un paramètre deb de la transformation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [position() &gt;= $deb and position() &lt; $deb+10]

  5. #5
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Par défaut
    Merci infiniment mais comment pourrais-je récupérer la valeur $deb ?

  6. #6
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Le passage de paramètres s'écrit simplement en début de feuille de style par <xsl:param name="deb"/>.

    Le passage lui-même dépend, bien sûr, du langage et du moteur : en PHP5,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        $xslp = new xsltProcessor();
        $xslp->importStyleSheet($xsl);
        $xslp->setParameter("", "deb", $deb);
        $result = $xslp->transformToXml($xml);

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [XSLT 2.0]Calculer le nombre de noeuds max contenu par un fragment-node
    Par Louis-Guillaume Morand dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 18/03/2007, 01h10
  3. [XSLT] dans une boucle : valeur noeud position précédente
    Par Yudala dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 02/03/2007, 09h56
  4. [XSLT] Problème de boucle
    Par robinou dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/01/2007, 19h04
  5. [XSLT]créer une boucle
    Par fraoustin dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 11/01/2005, 14h13

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