确保在调用 ->setRelaxNGSchema() 之前加载数据,否则会发生错误。
<?php
$xml_reader = new XMLReader();
$xml_reader->setRelaxNGSchema($rng_schema);
$xml_reader->xml($xml_data);
?>
上面的代码会生成以下警告:"警告:XMLReader::setRelaxNGSchemaSource()
[xmlreader.setrelaxngschemasource]: 无法设置模式。这必须
在读取之前设置,或者模式包含错误。"
而以下代码不会生成警告
<?php
$xml_reader = new XMLReader();
$xml_reader->xml($xml_data); // or $xml_reader->xml($xml_file);
$xml_reader->setRelaxNGSchema($rng_schema);
?>
参见 http://bugs.php.net/bug.php?id=46978