如何使用libxml2在1.1版中使用模式验证xml

How to use libxml2 validate a xml with a schema in version 1.1?

本文关键字:模式 验证 xml 1版 何使用 libxml2      更新时间:2023-10-16

我使用libxml2来验证带有模式的xml我必须使用模式1.1版本的原因,所以我开始了我的模式头像这样:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">

我写了一个完整的类型:

<xs:complexType name="test-type">
    <xs:all>
        <xs:element name="test"></xs:element>
        <xs:element name="test1" minOccurs="0" maxOccurs="4"></xs:element>
    </xs:all>
</xs:complexType>

它在1.1版本中有效,但在1.0版本中无效。当我使用我的程序解析这个模式时:

xmlSchemaParseCtxtPtr ctxt;
xmlLineNumberDefault(1);
ctxt=xmlSchemaNewParserCtxt("schema.xsd");
_xmlSchema* _schema = xmlSchemaParse(ctxt);

我在_schema中得到了一个空指针。但如果我删除了上面的complexType,一切都还好。所以我认为根本原因可能是libxml2"在我的代码中"只支持schema版本1.0。那么,有什么解决方案可以使libxml2与schema版本1.1协同工作吗?我必须使用它的一些新功能。任何建议都会有帮助!谢谢

libxml2尚未更新为支持XSD 1.1。据我所知,该产品没有积极的开发,因此这种情况不太可能发生。您需要找到一个不同的架构处理程序。