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