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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    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
    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.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    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
    Par défaut
    Je ne vois pas le problème. Je déplace la discussion dans le forum PHP.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    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 confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    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
    Membre chevronné 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
    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 ?

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