Open In App

PHP | DOMDocument relaxNGValidateSource() Function

Last Updated : 12 Apr, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

The DOMDocument::relaxNGValidateSource() function is an inbuilt function in PHP which is used to perform relaxNG validation on the document using a string as RNG schema. The difference between relaxNGValidate() and relaxNGValidateSource() is that the former accepts a rng schema filename whereas latter can accept a rng schema as string too. 

Syntax:

bool DOMDocument::relaxNGValidateSource( string $source )

Parameters: This function accepts a single parameter $source which holds the RNG schema. 

Return Value: This function returns TRUE on success or FALSE on failure. 

Below given programs illustrate the DOMDocument::relaxNGValidateSource() function in PHP: 

Program 1: 

php




<?php
 
// Create a new DOMDocument
$doc = new DOMDocument;
 
// RNG schema
$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 XML
$doc->loadXML("<?xml version=\"1.0\"?>
<body>
  <div>
    <h1>Heading 1</h1>
    <h2>Heading 2</h2>
  </div>
  <div>
    <h1>Heading 3</h1>
    <h2>Heading 4</h2>
  </div>
</body>");
 
// Check if XML follows the relaxNG rule
if ($doc->relaxNGValidateSource($RNG)) {
    echo "This document is valid!\n";
}
?>


Output:

This document is valid!

Program 2: 

php




<?php
 
// Create a new DOMDocument
$doc = new DOMDocument;
 
// RNG schema
$RNG = "<element name=\"company\"
    xmlns=\"http://relaxng.org/ns/structure/1.0\">
<zeroOrMore>
  <element name=\"employee\">
    <element name=\"name\">
      <text/>
    </element>
    <element name=\"salary\">
      <text/>
    </element>
  </element>
</zeroOrMore>
</element>";
 
// Load the XML
$doc->loadXML("<?xml version=\"1.0\"?>
<company>
  <employee>
    <name>John Smith</name>
    <salary>Web</salary>
  </employee>
  <employee>
    <!-- Do not add salary to violate rule -->
    <name>John Doe</name>
  </employee>
</company>");
 
// Check if XML doesn't follows the relaxNG rule
if (!$doc->relaxNGValidateSource($RNG)) {
    echo "This document is not valid!\n";
}
?>


Output:

This document is not valid!

Reference: https://www.php.net/manual/en/domdocument.relaxngvalidatesource.php



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads