Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在版本1.1中,如何使用libxml2验证具有模式的xml?_C++_Xml_Xsd_Libxml2 - Fatal编程技术网

C++ 在版本1.1中,如何使用libxml2验证具有模式的xml?

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

我使用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>
我在_模式中得到一个空指针。 但如果我删除了上面的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);