如何解决如何针对 Powershell 中的嵌套 XSD 验证 XML?
问题
如果 XSD 是嵌套的(包括其他 XSD),则通过 Test-Xml
针对 XSD 验证 XML 会失败。
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 validation error using nested XSD schema - Type not declared 中的注释表明 XmlReader
不知道底层 Stream
输入的位置,因此无法加载 include
的子 XSD。我的猜测:Test-Xml
使用 XmlReader
。
另一个用户拥有 same problem in 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 解决方案来针对嵌套的 XSD 架构验证 onix XML 文件 - 最好无需更改 XSD(由于频繁更新)。
PS:在 Notepad++/XML Tools 或 XML Notepad 中验证这些文件工作正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。