Make sure to load your data prior to calling ->setRelaxNGSchema() otherwise you will get an error.<?php$xml_reader = new XMLReader();$xml_reader->setRelaxNGSchema($rng_schema);$xml_reader->xml($xml_data);?>Above code generates the following warning: "Warning: XMLReader::setRelaxNGSchemaSource()[xmlreader.setrelaxngschemasource]: Unable to set schema. This must beset prior to reading or schema contains errors."whereas the following does not generate a warning:<?php$xml_reader = new XMLReader();$xml_reader->xml($xml_data); // or $xml_reader->xml($xml_file);$xml_reader->setRelaxNGSchema($rng_schema);?>cf. http://bugs.php.net/bug.php?id=46978