如何使用libxml2验证带有1.1版架构的xml?

时间:2014-10-31 05:34:49

标签: c++ xml xsd libxml2

我使用libxml2来验证带有模式的xmls,并且由于某些原因    原因我必须使用模式版本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只支持架构版本1.0和#34;在我的代码中#34;。那么有什么解决方案可以使libxml2与schema version1.1一起工作吗?我必须使用它的一些新功能。 任何建议都会有所帮助!谢谢!

1 个答案:

答案 0 :(得分:3)

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