ปัญหา
การตรวจสอบ 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 ในการตรวจสอบไฟล์ ONIX XML กับ XSD Schema ที่ซ้อนกัน โดยควรไม่ต้องเปลี่ยน XSD (เนื่องจากมีการอัปเดตบ่อยครั้ง)
PS: การตรวจสอบความถูกต้องของไฟล์เหล่านี้ใน Notepad++/XML Tools หรือ XML Notepad ทำงานได้ดี