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 : 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: $@";
}
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.