OVH Cloud OVH Cloud

transformation xslt

6 réponses
Avatar
Thierry SCHMIT
bonjour

j'utilise
<?php

$xh = xslt_create();
xslt_process($xh, '159.xml ', 'htdocs/xml/members.xsl');
xslt_free($xh);

?>

ce qui me renvoie une erreur
Warning: Sablotron error on line 80: XML parser error 3: no element found in
c:\program files\apache group\apache\htdocs\xml\guildmembers.php on line 4


Alors que en utilisant Sablotron en standalone avec les même fichiers xml et
xsl tout se passe bien.

Une idée ?

merci d'avance.

6 réponses

Avatar
loufoque
Thierry SCHMIT wrote:
Une idée ?
Sûrement une erreur d'accès aux fichiers.

Vérifie les chemins... essaie aussi avec des absolus...

Avatar
Tek
Je ne connais pas la nature et la complexéité de ta transformation
par feuille de style XSL, mais pourquoi ne pas utiliser les méthodes
de la classe dom_xml ?

Ce qui donnerait quelque chose comme :

<?php
//Transformer XML -> HTML par XSL
$CurrentDir = dirname(__FILE__);
$xmldoc = domxml_open_file("$CurrentDirsample.xml");
$xsldoc = domxml_xslt_stylesheet_file("$CurrentDirsample.xsl");
$result = $xsldoc->process($xmldoc);
print $xsldoc->result_dump_mem($result);
?>

--
M. Frédéric Saunier
1, rue de Chateaudun
92100 Boulogne-billancourt
FRANCE
www.tekool.net


"Thierry SCHMIT" a écrit dans le message de
news:c6qf9b$2u0$
bonjour

j'utilise
<?php

$xh = xslt_create();
xslt_process($xh, '159.xml ', 'htdocs/xml/members.xsl');
xslt_free($xh);

?>

ce qui me renvoie une erreur
Warning: Sablotron error on line 80: XML parser error 3: no element found
in

c:program filesapache groupapachehtdocsxmlguildmembers.php on line 4


Alors que en utilisant Sablotron en standalone avec les même fichiers xml
et

xsl tout se passe bien.

Une idée ?

merci d'avance.


Avatar
loufoque
Tek wrote:

Je ne connais pas la nature et la complexéité de ta transformation
par feuille de style XSL, mais pourquoi ne pas utiliser les méthodes
de la classe dom_xml ?


C'est vrai que Sablotron est bien mais de toutes façons en PHP5 on
pourra plus l'utiliser.

Avatar
Eric Daspet
loufoque wrote:
C'est vrai que Sablotron est bien mais de toutes façons en PHP5 on
pourra plus l'utiliser.


On pourra à priori, il faudra simplement compiler l'extension pour ...
comme en PHP4. Maintenant Sablotron n'est pas forcément pertinent, son
seul avantage est d'offrir des capacités de débogage lors de la
transformation. Vu le gouffre de performance face à l'utilisation de la
libxslt il me semble cohérent de ne pas l'utiliser dans l'applicatif Web
(les deboggages de la feuille XSLT on peut les faire chez soi
directement avec sablot, sans PHP).


--
Eric Daspet
Venez aider notre mangeur de cigogne sur http://mangeur-de-cigogne.info/

Avatar
loufoque
Eric Daspet wrote:

On pourra à priori, il faudra simplement compiler l'extension pour ...
Non. L'extension n'est plus disponible pour PHP5.

D'ailleurs, c'est un peu gênant, on pert les "XSLT scheme
handlers".

Avatar
Thierry SCHMIT
Ce qui donnerait quelque chose comme :

<?php
//Transformer XML -> HTML par XSL
$CurrentDir = dirname(__FILE__);
$xmldoc = domxml_open_file("$CurrentDirsample.xml");
$xsldoc = domxml_xslt_stylesheet_file("$CurrentDirsample.xsl");
$result = $xsldoc->process($xmldoc);
print $xsldoc->result_dump_mem($result);
?>


merci :-)

c'est effectivement une bonne solution.
A noter qu'il ne doit pas y avoir de CR et ou LF au début
du fichier XML sinon la méthode 'domxml_open_file'
échoue