Я проверяю документ SVG (который я считаю действительным) по спецификации SVG.Я использую XMLReader в PHP, и предпочел бы придерживаться этого, так как я буду использовать XMLReader в другом месте;Тем не менее, если есть другие потоковые программы чтения, которые будут делать это проще / лучше, дайте мне знать.
ОК, вот код:
// Set some values for the purpose of this example
$this->path = '/Users/jon/Development/Personal/Visualised/master/test-assets/import-png.svg';
$xsdPath = '/Users/jon/Development/Personal/Visualised/master/test-assets/xsd/SVG.xsd';
$reader = new XMLReader();
$reader->open($this->path);
$valid = $reader->setSchema($xsdPath);
$reader->close();
ОК, так что XSDВ папке xsd
находятся следующие файлы:
Кажется, что анализатор импортирует второй и третий XSD из первого - я хочу, чтобы все зависимости были сохранены на диске, а не извлечены из Интернета.
Хорошо, вот вывод:
XMLReader::setSchema(): Element '{http://www.w3.org/2001/XMLSchema}import': Skipping import of schema located at '/Users/jon/Development/Personal/Visualised/master/test-assets/xsd/xml.xsd' for the namespace 'http://www.w3.org/XML/1998/namespace', since this namespace was already imported with the schema located at 'http://www.w3.org/2001/xml.xsd'. in /Users/jon/Development/Personal/Visualised/master/lib/Visualised/Document.php on line 45
Warning: XMLReader::setSchema(): Element '{http://www.w3.org/2001/XMLSchema}attribute': The attribute 'type' is not allowed. in /Users/jon/Development/Personal/Visualised/master/lib/Visualised/Document.php on line 45
Warning: XMLReader::setSchema(): Element '{http://www.w3.org/2001/XMLSchema}attribute': The attribute 'type' is not allowed. in /Users/jon/Development/Personal/Visualised/master/lib/Visualised/Document.php on line 45
Warning: XMLReader::setSchema(): Element '{http://www.w3.org/2001/XMLSchema}attribute': The attribute 'type' is not allowed. in /Users/jon/Development/Personal/Visualised/master/lib/Visualised/Document.php on line 45
Warning: XMLReader::setSchema(): Unable to set schema. This must be set prior to reading or schema contains errors. in /Users/jon/Development/Personal/Visualised/master/lib/Visualised/Document.php on line 45
Похоже, что я импортировал неправильную версию схемы куда-то - я нашел все документы XSD только через веб-поиск.Любые идеи?
Редактировать: последняя ошибка предполагает, что схема должна быть установлена до чтения документа.Итак, я изменил код на это:
$reader = new XMLReader();
$valid = $reader->setSchema($xsdPath);
$reader->open($this->path);
$reader->close();
- некоторые из начальных предупреждений идут, но я все еще получаю Unable to set schema
.