Gestion des erreurs avec les fonctions de gestion d'erreur libxml

libxml fournit des fonctions pour gérer les erreurs qui peuvent être utilisées pour capturer et gérér celles ci lors du traitement XSLT.

Exemple #1 fruits.xml

Un fichier XML valide.

<fruits>
 <fruit>Apple</fruit>
 <fruit>Banana</fruit>
 <fruit>Cherry</fruit>
</fruits>

Exemple #2 fruits.xsl

Contient une expression select invalide.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" encoding="utf-8" indent="no"/>
 <xsl:template match="fruits">
  <ul>
   <xsl:apply-templates/>
  </ul>
 </xsl:template>
 <xsl:template match="fruit">
  <li><xsl:value-of select="THIS IS A DELIBERATE ERROR!"/></li>
 </xsl:template>
</xsl:stylesheet>

Exemple #3 Collating and printing errors

L'exemple ci dessous capture et affiche les erreurs libxml levées lors de l'appel XSLTProcessor::importStyleSheet() avec une feuille de style contenant une erreur.

<?php

$xmldoc 
= new DOMDocument();
$xsldoc = new DOMDocument();
$xsl = new XSLTProcessor();

$xmldoc->loadXML('fruits.xml');
$xsldoc->loadXML('fruits.xsl');

libxml_use_internal_errors(true);
$result $xsl->importStyleSheet($xsldoc);
if (!
$result) {
    foreach (
libxml_get_errors() as $error) {
        echo 
"Libxml error: {$error->message}\n";
    }
}
libxml_use_internal_errors(false);

if (
$result) {
    echo 
$xsl->transformToXML($xmldoc);
}

?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

Libxml error: Invalid expression

Libxml error: compilation error: file fruits.xsl line 9 element value-of
Libxml error: xsl:value-of : could not compile select expression 'THIS IS A DELIBERATE ERROR!'