CakeFest 2024: The Official CakePHP Conference

Fehlerbehandlung mit den Funktionen der libxml

libxml bietet Funktionen zur Verarbeitung von Fehlern, die auch dafür verwendet werden können Fehler bei der Verarbeitung von XSLT abzufangen.

Beispiel #1 fruits.xml

Eine gültige XML-Datei.

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

Beispiel #2 fruits.xsl

Enthält einen ungültigen Ausdruck im select.

<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>

Beispiel #3 Sammel und ausgaben der Fehler

Das Beispiel unten sammelt die Fehlermeldungen die beim Aufruf des fehlerhaften Stylesheets mittels XSLTProcessor::importStyleSheet() durch libxml erzeugt werden und gibt sie kontrolliert aus.

<?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);
}

?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

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!'

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top