The DOMDocument::schemaValidateSource() function is an inbuilt function in PHP which is used to validate a document based on a schema defined in the given string. The difference between schemaValidate() and schemaValidateSource() is that the former accepts a schema filename whereas latter can accept a schema as string.
Syntax:
bool DOMDocument::schemaValidateSource( string $source, int $flags = 0 )
Parameters: This function accept two parameters as mentioned above and described below:
- $source: It specifies the string containing the schema.
- $flags (Optional): It specifies the validation flags.
Return Value: This function returns TRUE on success or FALSE on failure.
Below given programs illustrate the DOMDocument::schemaValidateSource() function in PHP:
Program 1:
<?php // Create a new DOMDocument $doc = new DOMDocument; // XSD schema $XSD = "<?xml version=\"1.0\"?> <xs:schema xmlns:xs=\"http: //www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\"> <xs:element name=\"body\"> <xs:complexType> <xs:sequence> <xs:element name=\"h1\" type=\"xs:string\"/> <xs:element name=\"strong\" type=\"xs:integer\"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>"; // Load the XML $doc ->loadXML("<?xml version=\"1.0\"?> <body> <h1> Hello </h1> <strong> 22 </strong> </body>"); // Check if XML follows the schema rule if ( $doc ->schemaValidateSource( $XSD )) { echo "This document is valid!\n" ; } ?> |
Output:
This document is valid!
Program 2:
<?php // Create a new DOMDocument $doc = new DOMDocument; // RNG schema $XSD = "<?xml version=\"1.0\"?> <xs:schema xmlns:xs=\"http: //www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\"> <xs:element name=\"student\"> <xs:complexType> <xs:sequence> <xs:element name=\"name\" type=\"xs:string\"/> <xs:element name=\"rollno\" type=\"xs:integer\"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>"; // Load the XML $doc ->loadXML("<?xml version=\"1.0\"?> <student> <!-- rollnow element is missing here --> <name> XYZ </name> </student> "); // Check if XML follows the relaxNG rule if (! $doc ->schemaValidateSource( $XSD )) { echo "This document is not valid!\n" ; } ?> |
Output:
This document is not valid!
Reference: https://www.php.net/manual/en/domdocument.schemavalidatesource.php