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] tri et paramétrage via PHP


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut [XSLT] tri et paramétrage via PHP
    Bonjour,
    je suis débutant en XML/XSLT et je souhaiterais paramétrer une mise en forme de tri via une transformation XSL.

    J'ai un fichier XML bien formé, et un fichier XSL qui contient :

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:template match="/">
    <xsl:param name="mysort">times</xsl:param>
    <xsl:param name="mytype">number</xsl:param>
    <xsl:param name="myorder">descending</xsl:param>
    
    <html><head>...</head>
    <body>
    
    <xsl:for-each select="data/line">
    <xsl:sort select="(*|*/*)[name()=$mysort]" data-type="{$mytype}" order="{$myorder}" />
    
    (...)
    
    </xsl:for-each>
    </body></html>
    </xsl:template>
    </xsl:stylesheet>

    Avec ce code, mon tri s'effectue comme il faut.
    Cependant, je constate deux problèmes :
    1) lorsque je remplace ma déclaration param par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:param name="mysort" select="times"/>
    <xsl:param name="mytype" select="number" />
    <xsl:param name="myorder" select="descending" />
    le tri ne marche plus

    2) lorsque j'applique la fonction PHP :
    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
    function getXML_T($xslpath, $xmlpath)
    {
    	$sort=$_POST["sort"];
    	$type=$_POST["type"];
    	$order=strcmp($_POST["order"],"a")==0 ? "ascending" : "descending";
     
    	$xslDoc = new DOMDocument();
    	$xslDoc->load($xslpath);
    	$proc = new XSLTProcessor;
    	$proc->importStylesheet($xslDoc);
    	$xmlDoc = new DOMDocument();
    	$xmlDoc->load($xmlpath);
     
    	// parameters setting
    	$proc->setParameter("", "mysort", $sort);
    	$proc->setParameter("", "mytype", $type);
    	$proc->setParameter("", "myorder", $order);
     
    	return $proc->transformToXML($xmlDoc);
    }
    la fonction de tri reste inchangée.


    Auriez-vous des idées ??

  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
    Pour la première partie, c'est du texte, il te manque les ' '

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:param name="mysort" select="'times'"/>
    <xsl:param name="mytype" select="'number'" />
    <xsl:param name="myorder" select="'descending'" />

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    Merci Erwy, je constate que ça résout effectivement le premier point !
    Je trouvais ça pas logique que ça ne marche pas, mais simple question de syntaxe en fait


    Pour le 2), j'ajouterai également que le setParameter() a pourtant l'air de fonctionner vu que lorsque je fais un getParameter("", "mysort") juste après, cela me ressort bien la nouvelle valeur.

    Reste que le tri s'effectue malgré tout selon les valeurs données dans le .xsl sans changement...

Discussions similaires

  1. [XSLT] Tri en fonction d'un paramètre
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 21/04/2005, 10h29
  2. [Help] pb d'insertion via PHP ...
    Par romtrash dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/04/2005, 11h47
  3. [XSLT] transformation XML->XML en php
    Par amellouki dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 03/03/2005, 12h32
  4. Réponses: 2
    Dernier message: 27/05/2004, 00h40
  5. Transformation xml + xsl -> HTML via PHP
    Par petit-ourson dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/10/2003, 22h42

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