PHP | XMLReader setRelaxNGSchemaSource() Function

The XMLReader::setRelaxNGSchemaSource() function is an inbuilt function in PHP which is used to set the data containing a RelaxNG Schema to use for validation. The setRelaxNGSchemaSource() function is different from setRelaxNGSchema() function as the former accepts the rule as a string variable whereas later function accepts the rule as a .rng file.
Syntax:
bool XMLReader::setRelaxNGSchemaSource( string $source )
Parameters: This function accepts a single parameter $source which holds the string containing the RelaxNG Schema.
Return Value: This function returns TRUE on success or FALSE on failure.
Below examples illustrate the XMLReader::setRelaxNGSchemaSource() function in PHP:
Example 1:
- data.xml
<?xmlversion="1.0"?><body><div><h1>GeeksForGeeks</h1><p>Portal for Geeks</p></div><div><h1>Heading 3</h1><p>Heading 4</p></div></body>
- index.php
<?php// Create a new XMLReader instance$XMLReader=newXMLReader();// Open the XML file$XMLReader->open('data.xml');// Create rule as a string$RNG= "<element name=\"body\"xmlns=\"http://relaxng.org/ns/structure/1.0\"><zeroOrMore><element name=\"div\"><element name=\"h1\"><text/></element><element name=\"p\"><text/></element></element></zeroOrMore></element>";// Load the rule$XMLReader->setRelaxNGSchemaSource($RNG);// Iterate through the XML nodeswhile($XMLReader->read()) {if($XMLReader->nodeType == XMLREADER::ELEMENT) {// Check if XML follows the relaxNG ruleif($XMLReader->isValid()) {echo"This document is valid!<br>";}}}?>
- Output:
This document is valid! This document is valid! This document is valid! This document is valid! This document is valid! This document is valid! This document is valid! 
Example 2:
- data.xml
<?xmlversion="1.0"?><body><div><!--Create empty div elementto violate rule--></div><div><h1>Heading 3</h1><h2>Heading 4</h2></div></body>
- index.php
<?php// Create a new XMLReader instance$XMLReader=newXMLReader();// Open the XML file$XMLReader->open('data.xml');// Create rule as a string$RNG= "<element name=\"body\"xmlns=\"http://relaxng.org/ns/structure/1.0\"><zeroOrMore><element name=\"div\"><element name=\"h1\"><text/></element><element name=\"h2\"><text/></element></element></zeroOrMore></element>";// Load the rule$XMLReader->setRelaxNGSchemaSource($RNG);// Iterate through the XML nodeswhile($XMLReader->read()) {if($XMLReader->nodeType == XMLREADER::ELEMENT) {// Check if XML follows the relaxNG ruleif(!$XMLReader->isValid()) {echo"This document is not valid!<br>";}}}?>
- Output:
This document is not valid! This document is not valid! This document is not valid! 
Reference: https://www.php.net/manual/en/xmlreader.setrelaxngschemasource.php
 
				 
					


