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 be
set 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
XMLReader::setRelaxNGSchema
(PHP 5 >= 5.2.0)
XMLReader::setRelaxNGSchema — Dateiname oder URI des RelaxNG-Schema setzen
Beschreibung
bool
XMLReader::setRelaxNGSchema
( string
$filename
)Dateiname oder URI des RelaxNG-Schemas setzen, das zur Validierung verwendet werden soll.
Parameter-Liste
-
filename -
Dateiname oder URI des RelaxNG-Schemas.
Rückgabewerte
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
Siehe auch
- XMLReader::setRelaxNGSchemaSource() - Zeichenkette setzen, die RelaxNG-Schemadaten enthält
- XMLReader::setSchema() - Validiert Dokument gegen XSD
- XMLReader::isValid() - Zeigt an, ob das geparste Dokument valide ist
remy dot damour at laposte dot net ¶
4 years ago
