XMLReader::setRelaxNGSchemaSource()
(PHP 5 >= 5.1.0, PHP 7)
Set the data containing a RelaxNG Schema
说明
public XMLReader::setRelaxNGSchemaSource(string $source): bool
Set the data containing a RelaxNG Schema to use for validation.
参数
- $source
String containing the RelaxNG Schema.
返回值
成功时返回TRUE
,或者在失败时返回FALSE
。
参见
- XMLReader::setRelaxNGSchema() Set the filename or URI for a RelaxNG Schema
- XMLReader::setSchema() Validate document against XSD
- XMLReader::isValid() Indicates if the parsed document is valid
If you get the following warning message when calling ->setRelaxNGSchemaSource(): "Warning: XMLReader::setRelaxNGSchemaSource() [xmlreader.setrelaxngschemasource]: Unable to set schema. This must be set prior to reading or schema contains errors." Make sure to load data using XMLReader::open() or XMLReader::xml() prior to calling XMLReader::setRelaxNGSchemaSource(). Cf. comment on XMLReader::setRelaxNGSchema for more details.
This function and setRelaxNGSchema() seem picky about when they are called - right after the call to open(). For example: <?php $schema="/path/to/schema.rng"; $xmlfile="/path/to/xml.xml"; $xml = new XMLReader(); $xml->open($xmlfile); $xml->setRelaxNGSchemaSource(file_get_contents($schema)); while ($xml->read()) { // ... } $xml->close(); ?>