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