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



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

问题是,如果我已经在内存中下载了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控制子资源的加载。

最新更新