< Day Day Up > |
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. 5.11.1 PHP 5 and DOMValidating 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
All of the validation methods behave in a similar manner, so you only need to switch the method name in the previous example to switch to a different validation scheme. Both XML Schema and RelaxNG support validation against files and strings. You can validate a DOM object only against the DTD defined at the top of the XML document. |
< Day Day Up > |