Bonjour,
j'essaie de faire tant bien que mal des transformations xml en utilisant les modules XML::LibXML et XML::LibXSLT
Tout fonctionne à merveille mais j'essaie d'optimiser mon script pour faire face à des erreurs xml, ou à des fichiers manquants.
J'ai une feuille de style xsl qui charge un autre document xml que celui à transformer avec la fonction document(). Cela se passe bien si les deux documents sont valides mais si le deuxième document n'est pas valide au sens xml alors je n'arrive pas à récupérer l'erreur. A priori, le message d'erreur ne vient pas du module perl mais de la librairie xslt directement. Si je fais la même transformation avec xsltproc j'ai exactement le même message.
Mon code ressemble à ça:
La transformation xsl se fait bien (sauf le fichier invalide) et je n'ai pas d'exception de capturée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 eval { $parser = XML::LibXML->new(); $xslt = XML::LibXSLT->new(); $xslt->max_depth(2000); $source = $parser->parse_file($xml); $style_doc = $parser->parse_file($xsl); $stylesheet = $xslt->parse_stylesheet($style_doc); $result = $stylesheet->transform($source, %params); print "resultat: ".$stylesheet->output_string($result); }; if ($@) { print "Exception: $@"; }
Merci d'avance pour toute idée ou toute piste.
Partager