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

Bibliothèques et frameworks PHP Discussion :

[XSL] Mise en cache XSL / XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut [XSL] Mise en cache XSL / XML
    Bonjour !

    Voici une question que je ne suis pas sur d'avoir bien placé dans le forum, pourtant il me semble que la réponse que je cherche se situe au niveau du serveur.

    Voici donc mon probleme :

    - Nous utilisons des XSL pour pour générer des formulaires de saisie. Une interface nous permet d'éditer ces XSL en ligne, mais on peut aussi le faire hors-ligne et envoyer les nouvelles XSL sur le serveur.

    Dans les deux cas, un probleme tres étrange se produit: lorsqu'on recharge le formulaire, tous les champs qui ont été modifiés sont affichés en double.
    Si on rafraichit la page, le probleme disparait.

    A noter également, ce probleme ne semble apparaitre que pour la premiere personne qui se connecte en faisant appel a la nouvelle XSL.


    Mes questions sont donc

    • Si je me suis trompé de section sur le forum : ou puis-je poster pour être plus pertinent ?
    • Les XSL sont-elles mises en cache quelque part au niveau du serveur ?
    • Comment peut-on demander une vidange du cache XSL du serveur (si il existe), via PHP ou autre ?


    D'avance merci pour votre attention

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Quel serveur et comment sont générés les formulaires (quel techno et éventuellement le code) ? Je dirais que c'est un problème avec le code, pas spécialement un problème de cache : typiquement, les problèmes de cache sont des délais pour la prise en compte des modifications du XSL, ce qui n'est pas le cas ici puisque les champs en double sont ceux modifiés : le "code a vu" les champs modifiés, donc le nouveau XSL.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Quel serveur et comment sont générés les formulaires (quel techno et éventuellement le code) ? Je dirais que c'est un problème avec le code, pas spécialement un problème de cache : typiquement, les problèmes de cache sont des délais pour la prise en compte des modifications du XSL, ce qui n'est pas le cas ici puisque les champs en double sont ceux modifiés : le "code a vu" les champs modifiés, donc le nouveau XSL.
    En ce qui concerne le serveur :

    Serveur : Apache 2.2.3
    PHP 5.1.6

    Et sinon voici le bout de code (allégé des trucs inutiles) qui génère la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // format html de lecture
    $result = XmlUtils :: transform($xml, FICHEXML_XSL_HTML, $arrParams);
    Sachant que la fonction est la suivante :

    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
     static function transform ($xmlBuffer, $xslFile, $arrParams=null, $validation=true) {
     
        $xsl = new DOMDocument;
     
        if ( !$xsl->load($xslFile) ){
           // Exception
        }
     
        // Configuration du transformateur
        $proc = new XSLTProcessor;
     
        // ajout des paramètres si ils sont présents
        if ( count($arrParams) )
    	    foreach ( $arrParams as $name => $value) {
      	     $proc->setParameter("", $name, $value);
      	   }
     
        $proc->importStyleSheet($xsl); // attachement des règles xsl
     
        // Chargement du source XML
        $xml = new DOMDocument;
     
        if ( !$xml->loadXML($xmlBuffer) )
        { // Exception }
     
        $result = $proc->transformToXML($xml);
     
     
        return $result;

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Je ne vois pas le problème. Je déplace la discussion dans le forum PHP.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je continue de chercher mais je n'ai pas vraiment d'élement en plus, je voulais juste repréciser, que ce qui est étrange c'est la chose suivante et que c'est surtout ça que j'aimerais comprendre :

    Lorsqu'on modifie la XSLT, les champs modifiés sont affichés en double (donc il semblerait que ce soit les anciens champs + les nouveaux à la fois), et ce UNIQUEMENT pour la première personne qui va charger la page après que la modification aie eu lieu, ou en tous cas seulement pour les toutes premieres personnes.


    Quelqu'un a-t-il, à défaut d'avoir une solution, une idée, une suggestion, un problème similaire, des questions qui pourraient m'aider à cerner l'origine de ce soucis.

    J'ajoute que ce soucis est vraiment problématique car les utilisateurs ne se rendent pas forcément compte du dédoublement de champs dans le formulaire et saisissent alors des données qui ne sauront être traitées par la suite, voire qui vont planter l'appli

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 281
    Points
    281
    Par défaut
    Le problème doit venir de $arrParams qui n'est pas vidé après avoir été utilisé, ou quelque chose du genre.
    Mets l'intégralité du code (ou du moins autre chose que juste l'appel à la fonction) stp pour voir si ça vient de là.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    En fait ce code n'est appelé qu'une fois par affichage de la page.

    En gros l'utilisateur arrive sur le formulaire de saisie, on affiche la page (en appellant cette fonction).
    Et ensuite l'execution du php se termine et si on a un autre appel ce sera lors du chargement d'une autre page, donc je ne pense pas que $arrParams puisse être en cause la variable étant détruite a la fin de l'execution du la page


    Je ne peux pas mettre grand chose de plus le reste n'est pas lié c'est vraiment le passage concerné que je vous ai mis la

  8. #8
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Est-ce que le problème survient avec n'importe quel navigateur ?
    Si tu monitores les requêtes/responses du server (avec firebug par exemple), que vois tu ?

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Le problème survient effectivement avec n'importe quel navigateur, on l'a vu sur Firefox, IE6, IE7 au moins.

    Je ne comprends pas le deuxième point de ta question par contre, comment puis-je faire pour réaliser cette action ? (j'ai firebug)

  10. #10
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Ouais comme ça survient avec n'importe quel navigateur, le problème doit venir du server uniquement..
    Dans un pareil cas, j'essaierais de reproduire le "bug" avec un system et un code le plus minimal possible. Enlève tout ce qui est superflus.. tu trouveras sûrement plus facilement qu'est-ce qui déconne comme ça

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bon le pire c'est que c'est vraiment aléatoire .. genre la j'essaye de le reproduire depuis 30 minutes et pas moyen ...

Discussions similaires

  1. Fichier XML avec groupes et sa mise en forme XSL
    Par Pingva dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 08/07/2011, 16h57
  2. [XML/XSL] Mise en page A4
    Par yayabon dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 11/04/2011, 18h29
  3. pas de mise en cache du Xml
    Par Lock622 dans le forum Flash
    Réponses: 14
    Dernier message: 15/08/2006, 20h46
  4. [XSL] Application d'un XSL pour produire un XSL... help
    Par Greedo dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/05/2003, 11h30
  5. [xsl java]Appliquer une XSL à un String contenant doc XML
    Par aldo047 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 03/04/2003, 15h46

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