function xslt_error_handler($parser, $errno, $level, $fields)
{
if (is_array($fields)) {
$msg = array('Message Type' => ucfirst($fields['msgtype']), 'Message Code' => $fields['code'], 'Message' => $fields['msg'], 'Error Number' => $errno, 'Level' => $level);
switch ($fields['URI']) {
case 'arg:/_xml':
$msg['Input'] = 'XML';
break;
case 'arg:/_xsl':
$msg['Input'] = 'XSL';
break;
default:
$msg['Input'] = $fields['URI'];
}
$msg['Line'] = $fields['line'];
} else {
$msg = array('Message Type' => 'Error', 'Error Number' => $errno, 'Level' => $level, 'Fields' => var_export($fields, TRUE));
}
$error_details = $msg['Message Type'] . ' in XSLT Transformation' . "\n" . '<table>' . "\n";
foreach ($msg as $label => $details) {
$error_details .= '<tr><td><b>' . $label . ': </b></td><td>' . htmlentities($details) . '</td></tr>' . "\n";
}
$error_details .= '</table>';
trigger_error($error_details, E_USER_ERROR);
}