請務必在呼叫 ->setRelaxNGSchema() 之前載入您的資料,否則會出現錯誤。
<?php
$xml_reader = new XMLReader();
$xml_reader->setRelaxNGSchema($rng_schema);
$xml_reader->xml($xml_data);
?>
以上程式碼會產生以下警告:「警告:XMLReader::setRelaxNGSchemaSource()
[xmlreader.setrelaxngschemasource]: 無法設定 schema。這必須在
讀取之前設定,否則 schema 包含錯誤。」
而以下程式碼則不會產生警告
<?php
$xml_reader = new XMLReader();
$xml_reader->xml($xml_data); // 或 $xml_reader->xml($xml_file);
$xml_reader->setRelaxNGSchema($rng_schema);
?>
參考:http://bugs.php.net/bug.php?id=46978