Hier anhand einer einfachen XSL-Transformation ein Beispiel wie man mehrere Bedingungen abprüfen kann. Es werden die boolschen Rückgabewerte aller Tests die für den erfolgreichen Programmlauf erforderlich sind in einem Array gesammelt.
<?php
/* das XML ... */
$xml = <<<EOT
<book>
<chapter>
<title>Chapter I.</title>
<content><p>Once upon a time ...</p></content>
</chapter>
</book>
EOT;
/* das XSL ... */
$xsl = <<<EOT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="title"><h1><xsl:value-of select="." /></h1></xsl:template>
<xsl:template match="content"><xsl:copy-of select="." /></xsl:template>
</xsl:stylesheet>
EOT;
/* In diesem Array werden die Ergebnisse der Tests abgelegt ... */
$test = array();
$test['XML is empty'] = !empty($xml);
$xmldoc = new DOMDocument;
$test['XML is not valid'] = @$xmldoc->loadXML($xml);
$xsldoc = new DOMDocument;
$test['XSL is not valid'] = @$xsldoc->loadXML($xsl);
$proc = new XSLTProcessor();
$test['XSLT-Processor failed'] = @$proc->importStyleSheet($xsldoc);
/* da true im numerischen Kontext zu int(1) gewandelt wird kann man sehr einfach prüfen
ob alle Tests erfolgreich waren. */
if (count($test) != array_sum($test)){
/* die erfolgreichen Tests werden aus dem Array gefiltert, übrig bleiben die Fehlermeldungen */
$test = array_filter($test, create_function('$a', 'return !$a;'));
print 'Ups, das hat leider nicht geklappt.';
var_dump($test);
}else{
$html = $proc->transformToXML($xmldoc);
print $html;
}
?>