Statement on glibc/iconv Vulnerability

Manejo de errores con las funciones de manejo de errores de libxml

libxml ofrece una serie de funciones para el manejo de errores, que pueden ser empleadas para capturar y tratar los errores en el procesamiento de XSLT.

Ejemplo #1 fruits.xml

Un archivo XML válido.

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

Ejemplo #2 fruits.xsl

Contiene una expresión selectiva no válida.

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

Ejemplo #3 Errores de compaginación e impresión

El siguiente ejemplo captura y muestra los errores de libxml que se producen al llamar a XSLTProcessor::importStyleSheet() on una hoja de estilo que contiene un error.

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

?>

El resultado del ejemplo sería algo similar a:

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