PHP | XMLReader setRelaxNGSchema() Function

The XMLReader::setRelaxNGSchema() function is an inbuilt function in PHP which is used to set the filename or URI for the RelaxNG Schema to use for validation.
Syntax:
bool XMLReader::setRelaxNGSchema( string $filename )
Parameters: This function accepts a single parameter $filename which holds the filename or URI pointing to a RelaxNG Schema.
Return Value: This function returns TRUE on success or FALSE on failure.
Below examples illustrate the XMLReader::setRelaxNGSchema() function in PHP:
-
Example 1:
- data.xml ( The XML file to be validated )
<?xmlversion="1.0"?><body><div><h1>Heading 1</h1><h2>Heading 2</h2></div><div><h1>Heading 3</h1><h2>Heading 4</h2></div></body> - rule.rng ( The rules to be followed by the XML file )
<elementname="body"<zeroOrMore><elementname="div"><elementname="h1"><text/></element><elementname="h2"><text/></element></element></zeroOrMore></element> - index.php ( PHP script to run the validator )
<?php// Create a new XMLReader instance$XMLReader=newXMLReader();// Open the XML file$XMLReader->open('data.xml');// Load the rule file$XMLReader->setRelaxNGSchema('rule.rng');// Iterate through the XML nodes// and validate each nodewhile($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!
Program 2:
- data.xml
<?xmlversion="1.0"?><body><div><!--Remove Heading 1to violate rule--><h2>Heading 2</h2></div><div><h1>Heading 3</h1><h2>Heading 4</h2></div></body> - rule.rng
<elementname="body"<zeroOrMore><elementname="div"><elementname="h1"><text/></element><elementname="h2"><text/></element></element></zeroOrMore></element> - index.php
<?php// Create a new XMLReader instance$XMLReader=newXMLReader();// Open the XML file$XMLReader->open('data.xml');// Load the rule file$XMLReader->setRelaxNGSchema('rule.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! This document is not valid!
Reference: https://www.php.net/manual/en/xmlreader.setrelaxngschema.php



