Validating Against a Schema
Schemas are a way to define a
specification for your XML documents. In PHP 4, there is no built-in
way to validate an XML document against any type of schema. The PEAR
XML_DTD
package (available at http://pear.php.net/package/XML_DTD) provides
a way to validate XML files against a Document Type Definition (DTD).
However, because it uses SAX, it is not easy to combine DTD
validation with DOM.
PHP 5 allows you to validate files against DTDs, XML Schema, and RelaxNG schema. The DOM extension supports all three types, while SimpleXML provides only an XML Schema validator.
PHP 5 and DOM
Validating any file using DOM
is a similar process, regardless of the underlying schema format. To
validate, call a validation method on a DOM object. It returns
true
if the file passes. If
thereâs an error, it returns
false
and prints a message to the error log. There
is no method for âcapturingâ the
error message.
$file = 'address-book.xml'; $schema = 'address-book.xsd'; $ab = new DOMDocument $ab->load($file); if ($ab->schemaValidate($schema)) { print "$file is valid.\n"; } else { print "$file is invalid.\n"; }
If the schema is stored in a string, use
DOMDocument::schemaValidateSource( )
instead of schemaValidate( )
.
Table 5-4 lists all the validation methods.
Table 5-4. DOM schema validation methods
Method name |
Schema type |
Data location |
---|---|---|
|
XML Schema |
File |
|
XML Schema |
String |
|
RelaxNG |
File |
|
Get Upgrading to PHP 5 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.