我使用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一起工作吗?我必须使用它的一些新功能。 任何建议都会有所帮助!谢谢!
答案 0 :(得分:3)
libxml2尚未更新以支持XSD 1.1。据我所知,该产品没有积极开发,所以不太可能发生这种情况。您需要找到不同的架构处理器。