Как проверить XML на соответствие вложенному XSD в Powershell?

Проблема

Проверка 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 работает нормально.


person Beeblebrox    schedule 29.04.2021    source источник