Bagaimana cara memvalidasi XML terhadap XSD bersarang di Powershell?

Masalah

Validasi XML terhadap XSD melalui Test-Xml gagal jika XSD disarangkan (termasuk XSD lainnya).

Test-Xml "C:\XML\Onix3sample_refnames.xml" -SchemaPath "C:\XML\ONIX_BookProduct_3.0_reference.xsd"

menghasilkan kesalahan:

Test-Xml : Type 'http://ns.editeur.org/onix/3.0/reference:SourceTypeCode' is not declared, or is not a simple type.

Kemungkinan alasannya

ONIX_BookProduct_3.0_reference.xsd menyertakan dua file XSD lainnya

    <xs:include schemaLocation="ONIX_BookProduct_CodeLists.xsd"/>
    <xs:include schemaLocation="ONIX_XHTML_Subset.xsd"/>

Komentar di kesalahan validasi XML menggunakan skema XSD bersarang - Ketik tidak dideklarasikan menunjukkan bahwa XmlReader tidak mengetahui lokasi masukan Stream yang mendasarinya sehingga tidak dapat memuat XSD turunan include. Dugaan saya: Test-Xml menggunakan XmlReader.

Pengguna lain mengalami masalah yang sama di ASP.Net Core.

File uji

tersedia di https://www.editeur.org/93/Release-3.0-Downloads/

File contoh XML: https://www.editeur.org/files/ONIX%203/ONIX_Books_3.0_sample_6.zip

File skema XSD: https://www.editeur.org/files/ONIX%203/ONIX_BookProduct_XSD_schema+codes_Issue_52.zip

Pertanyaan

Karena pengetahuan .NET saya agak terbatas, saya akan sangat berterima kasih atas solusi Powershell untuk memvalidasi file XML ONIX terhadap Skema XSD yang disarangkan - sebaiknya tanpa harus mengubah XSD (karena seringnya pembaruan).

PS: Validasi file-file ini di Notepad++/XML Tools atau XML Notepad berfungsi dengan baik.


person Beeblebrox    schedule 29.04.2021    source sumber