note 46482 modified in function.dom-domdocument-relaxngvalidatesource by danbrown

From: Date: Fri, 28 Nov 2008 22:44:12 +0000
Subject: note 46482 modified in function.dom-domdocument-relaxngvalidatesource by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-147375@lists.php.net to get a copy of this message
Took me a while to get a working example. Here it is: <?php # enable warnings ini_set( 'track_errors', 1); ini_set('error_reporting', E_ALL | E_STRICT); # this is a sample relaxNG definition $rng = <<<EOT <?xml version="1.0" encoding="UTF-8"?> <grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <start> <element name="apple"> <element name="pear"> <data type="NCName"/> </element> </element> </start> </grammar> EOT; # well formed xml, but invalid per schema # too many pears $bad_xml =<<<EOT <?xml version="1.0"?> <apple> <pear>Pear</pear> <pear>Pear</pear> </apple> EOT; # well formed xml and valid per schema $good_xml =<<<EOT <?xml version="1.0"?> <apple> <pear>Pear</pear> </apple> EOT; # this function does the work, it tests the relaxNG in the string $rng # against the xml in string $xml Function relaxNG ( $xml, $rng ) { $dom_xml = new DomDocument; $dom_xml->loadXML($xml); if ( $dom_xml->relaxNGValidateSource ( $rng ) ) { echo "Good\n"; } else { echo $php_errormsg . "\n"; } } # test the good xml, will echo: # Good relaxNG ($good_xml, $rng); # test the bad xml, will echo: # Did not expect element pear there relaxNG ($bad_xml, $rng); ?> results: Good Did not expect element pear there --was-- Took me a while to get a working example. Here it is: <?php # enable warnings ini_set( 'track_errors', 1); ini_set('error_reporting', E_ALL | E_STRICT); # this is a sample relaxNG definition $rng = <<<EOT <?xml version="1.0" encoding="UTF-8"?> <grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <start> <element name="apple"> <element name="pear"> <data type="NCName"/> </element> </element> </start> </grammar> EOT; # well formed xml, but invalid per schema # too many pears $bad_xml =<<<EOT <?xml version="1.0"?> <apple> <pear>Pear</pear> <pear>Pear</pear> </apple> EOT; # well formed xml and valid per schema $good_xml =<<<EOT <?xml version="1.0"?> <apple> <pear>Pear</pear> </apple> EOT; # this function does the work, it tests the relaxNG in the string $rng # against the xml in string $xml Function relaxNG ( $xml, $rng ) { $dom_xml = new DomDocument; $dom_xml->loadXML($xml); if ( $dom_xml->relaxNGValidateSource ( $rng ) ) { echo "Good\n"; } else { echo $php_errormsg . "\n"; } } # test the good xml, will echo: # Good relaxNG ($good_xml, $rng); # test the bad xml, will echo: # Did not expect element pear there relaxNG ($bad_xml, $rng); ?> results: Good Did not expect element pear there http://php.net/manual/en/function.dom-domdocument-relaxngvalidatesource.php

« previous php.notes (#147375) next »