La función DOMDocument::schemaValidateSource() es una función incorporada en PHP que se usa para validar un documento basado en un esquema definido en la string dada. La diferencia entre schemaValidate() y schemaValidateSource() es que el primero acepta un nombre de archivo de esquema mientras que el segundo puede aceptar un esquema como string.
Sintaxis:
bool DOMDocument::schemaValidateSource( string $source, int $flags = 0 )
Parámetros: esta función acepta dos parámetros, como se mencionó anteriormente y se describe a continuación:
- $fuente: Especifica la string que contiene el esquema.
- $flags (Opcional): Especifica las banderas de validación.
Valor de retorno: esta función devuelve VERDADERO en caso de éxito o FALSO en caso de error.
Los programas dados a continuación ilustran la función DOMDocument::schemaValidateSource() en PHP:
Programa 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"; } ?>
Producción:
This document is valid!
Programa 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"; } ?>
Producción:
This document is not valid!
Referencia: https://www.php.net/manual/en/domdocument.schemavalidatesource.php