Capturer les erreurs de parsing xml
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:
Code:
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: $@";
} |
La transformation xsl se fait bien (sauf le fichier invalide) et je n'ai pas d'exception de capturée.
Merci d'avance pour toute idée ou toute piste.