C++ 在版本1.1中,如何使用libxml2验证具有模式的xml?
我使用libxml2通过模式验证xmls,因为 我必须使用模式版本1.1的原因,所以我开始使用模式头 像这样:C++ 在版本1.1中,如何使用libxml2验证具有模式的xml?,c++,xml,xsd,libxml2,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" attri
<?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>
我在_模式中得到一个空指针。
但如果我删除了上面的complexType,一切都正常。所以我认为根本原因可能是“在我的代码中”libxml2只支持模式版本1.0。那么,有什么解决方案可以让libxml2与模式版本1.1一起工作呢?我必须使用它的一些新功能。
任何建议都会有帮助!谢谢 libxml2尚未更新为支持XSD 1.1。据我所知,该产品没有积极的开发,因此这种情况不太可能发生。您需要找到不同的模式处理器。Hmmm您能提供一些链接吗?因为我能够用libxml2中的复杂类型验证xml。我在断言方面遇到了麻烦,因为它在验证时抛出了一个错误。复杂类型是XSD 1.0的一个特性,应该可以正常工作。断言是XSD 1.1的特性,在libxml2中不受支持。
xmlSchemaParseCtxtPtr ctxt;
xmlLineNumberDefault(1);
ctxt=xmlSchemaNewParserCtxt("schema.xsd");
_xmlSchema* _schema = xmlSchemaParse(ctxt);