微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

验证 XML 文档无法从原始 XSD 文档中加载使用相对路径引用的架构

如何解决验证 XML 文档无法从原始 XSD 文档中加载使用相对路径引用的架构

如果我从 xmlSchemaNewParserCtxt() 开始,解析器很好并找到所有引用的模式,但我想知道如果我使用 xmlSchemaNewMemParserCtxt(),我是否能以某种方式告诉它模式在哪里。

问题是,如果我已经在内存中下载了 XSD,我可以将文档 URL 传递给解析器,以便它找到相关的内容吗?

a)

char *urlPath = "http://docs.oasis-open.org/ubl/os-UBL-2.1/xsd/maindoc/UBL-Invoice-2.1.xsd";
xmlSchemaNewParserCtxt (urlPath);

b)

xmlSchemaNewMemParserCtxt (schemaBuffer,buffSize);

变体 a) 工作正常,变体 b) 产生错误 I/O 警告:无法加载外部实体“../common/UBL-CommonAggregateComponents-2.1.xsd”

架构位于此处:http://docs.oasis-open.org/ubl/os-UBL-2.1/xsd

解决方法

最好的解决方案可能是使用 XML 目录,但您也可以使用 xmlRegisterInputCallbacksxmlSetExternalEntityLoader 控制子资源的加载。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。