Проблема
Проверка XML на соответствие XSD через Test-Xml
завершается ошибкой, если XSD является вложенным (включая другие XSD).
Test-Xml "C:\XML\Onix3sample_refnames.xml" -SchemaPath "C:\XML\ONIX_BookProduct_3.0_reference.xsd"
приводит к ошибке:
Test-Xml : Type 'http://ns.editeur.org/onix/3.0/reference:SourceTypeCode' is not declared, or is not a simple type.
Возможная причина
ONIX_BookProduct_3.0_reference.xsd
включает два других XSD-файла
<xs:include schemaLocation="ONIX_BookProduct_CodeLists.xsd"/>
<xs:include schemaLocation="ONIX_XHTML_Subset.xsd"/>
Комментарий в ошибка проверки XML с использованием вложенной схемы XSD - тип не объявлен предполагает, что XmlReader
не знает местонахождение базового ввода Stream
и, следовательно, не может загрузить дочерние XSD include
. Мое предположение: Test-Xml
использует XmlReader
.
У другого пользователя возникла такая же проблема в ASP.Net Core.
Тестовые файлы
доступно по адресу https://www.editeur.org/93/Release-3.0-Downloads/
Пример файла XML: https://www.editeur.org/files/ONIX%203/ONIX_Books_3.0_sample_6.zip
Файлы схемы XSD: https://www.editeur.org/files/ONIX%203/ONIX_BookProduct_XSD_schema+codes_Issue_52.zip
Вопрос
Поскольку мои знания .NET довольно ограничены, я был бы очень признателен за решение Powershell для проверки XML-файлов ONIX на соответствие вложенной схеме XSD - желательно без необходимости изменять XSD (из-за частых обновлений).
PS: проверка этих файлов в Notepad++/XML Tools или XML Notepad работает нормально.