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

Format d'échange (XML, JSON...) Java Discussion :

XSL 2.0 : comment l'activer concrètement ?


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 14
    Par défaut XSL 2.0 : comment l'activer concrètement ?
    Bonjour,

    Dernièrement, j'ai créé un fichier XSL 2.0 assez complexe pour transformer un gros Xml en un autre avec du tri, des groupes et des expressions régulières. En XSL1, ça serait vraiment pénible. Tout fonctionne parfaitement en local avec Altova XmlSpy.

    Le but est que cette transformation s'effectue toute seule en tâche Cron la nuit pour avoir un XML groupé, nettoyé et trié tous les matins, prêt à être utilisé par un site web.

    Lorsque j'ai tout mis sur le serveur distant pour essai, ça plante avec un message du type "xsl:version: only 1.0 features are supported". Visiblement, le problème viendrait du fait que les expressions XSL2 ne sont pas comprises. J'ai tjrs travaillé avec XSL 1.0 jusque-là et ce type de transfo en Cron marche en général très bien. Mais là, ça serait vraiment top si je pouvais le faire marcher en version 2.

    J'ai du mal à comprendre comment permettre XSL 2.0 sur mon serveur distant. J'ai lu pas mal de chose ces derniers jours sur les forums et j'avoue que je suis encore plus perdu.

    Je serais ravi si on pouvait me guider vers les démarches concrètes à effectuer.
    • Tout d'abord, est-ce que c'est possible et simple d'autoriser XSL 2 sur un serveur ? Ou est-ce parfois impossible, par exemple cela varie selon les hébergeurs. Je suis chez 1and1.
    • N'est-ce qu'une question de processeur / librairie à installer dans un dossier et le tour est joué ?
    • Est-ce plutôt une histoire de php incompatible avec xsl2 ? Sachant que la tâche cron est l'exécution d'un fichier php de ce type :
      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
      <?php
      $xml_file = 'MonFichierInitial.xml';
      $xml = new DOMDocument();
       
      $xml->load($xml_file);
       
      $xsl_file = 'MonFichierXSL2.xsl';
       
      $xsl = new DOMDocument();
       
      $xsl->load($xsl_file);
       
      $proc = new XSLTProcessor();
       
      $proc->ImportStyleSheet($xsl);
       
      $newDoc=$proc->transformToDoc($xml);
      $newDoc->save("MonfichierFinal.xml");
       
      ?>
    • Faudrait donc soit autoriser php + xsl2 ou passer par un autre langage qui supporte le xsl2.
    • Enfin, est-ce que je suis complètement à côté de la plaque ? Avant de partir dans des installations de Saxon ou modifications de fichiers sur les serveurs, j'aimerais être certain de partir dans la bonne direction.


    Merci mille fois par avance

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Le problème est que xslt 2.0 n'est pas soutenu nativement par php même jusqu'à ce moment. Il existe un projet SourceForge qui fait une classe s'assurant une liaison entre php et les xslt2 processeurs comme Saxon en java ou comme AltovaXML en com.

    Voici ce qu'il faut faire.

    [1] Téléchargez le fichier du projet PHP-XML_XSLT2Processor et copiez le répertoire quelque part dans la serveur.
    http://sourceforge.net/projects/xslt2processor/

    [2] Téléchargez si vous n'avez pas encore Saxon, version 9j (j pour java) par exemple. La version libre marche bien déjà pour xsl transformation.

    [3] Avec les deux logiciels prêts, vous ajoutez quelque ligne spécialement pour le but de les utiliser, en particulier, un include de XSLT2Processor.php du projet avec le chemin complet... Je fais une variable d'environment exprès au temps d'exécution - vous pouvez faire autrement - par classpath par exemple. Et puis initiez le processeur xslt2 avec ces données. Après, c'est si on travaille avec le processeur comme d'habitude.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    include "C:/votre_chemin_a_vous/XML_XSLT2Processor-0.5.3/XSLT2Processor.php";
    putenv("SAXON_HOME=C:/votre_chemin_a_vous/saxonb9-1-0-7j/");
     
    //$proc = new XSLTProcessor();
    $proc = new XML_XSLT2Processor("saxon9",null,"JAVA-CLI");
     
    //etc etc comme si rien de différence...
    Voilà en gros, c'est fait.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 14
    Par défaut merci
    merci, c'est très sympa. Je vais regarder tout ça en détail.

Discussions similaires

  1. Comment participer activement ?
    Par Alcatîz dans le forum Pascal
    Réponses: 0
    Dernier message: 18/03/2007, 16h32
  2. Réponses: 9
    Dernier message: 19/09/2006, 22h54
  3. xsl:output method="?"... comment obtenir un résult
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 31/01/2006, 14h42
  4. wcout sous dev-c++ : Comment l'activer?
    Par Médinoc dans le forum Dev-C++
    Réponses: 3
    Dernier message: 03/10/2005, 13h37
  5. XML/XSL vers HTML: comment transformer les linefeed en <B
    Par AlainM dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/11/2003, 12h30

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