La función DOMDocument::relaxNGValidateSource() es una función incorporada en PHP que se usa para realizar la validación de relaxNG en el documento usando una string como esquema RNG. La diferencia entre relaxNGValidate() y relaxNGValidateSource() es que el primero acepta un nombre de archivo de esquema rng mientras que el segundo también puede aceptar un esquema rng como string.
Sintaxis:
bool DOMDocument::relaxNGValidateSource( string $source )
Parámetros: esta función acepta un solo parámetro $fuente que contiene el esquema RNG.
Valor de retorno: esta función devuelve VERDADERO en caso de éxito o FALSO en caso de error.
Los siguientes programas ilustran la función DOMDocument::relaxNGValidateSource() en PHP:
Programa 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"; } ?>
Producción:
This document is valid!
Programa 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"; } ?>
Producción:
This document is not valid!
Referencia: https://www.php.net/manual/en/domdocument.relaxngvalidatesource.php