2014-10-31 30 views
3

我使用的libxml2與架構驗證個XML,以及一些 因爲原因,我必須使用架構版本1.1,所以我就開始了我的架構頭 這樣的:如何在版本1.1中使用libxml2驗證具有模式的xml?

<?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"> 

,我寫了一個compleType是這樣的:

<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只支持模式version1.0「在我的代碼」。那麼是否有任何解決方案可以使libxml2與模式版本1.1一起工作?我必須使用它的一些新功能。 任何建議都會有幫助!謝謝!

回答

3

libxml2尚未更新爲支持XSD 1.1。據我所知,該產品沒有積極的發展,所以這不太可能發生。您將需要找到不同的模式處理器。

+1

嗯,你可以給一些鏈接?因爲我能夠使用libxml2中的複雜類型驗證xml。我被困在斷言中,因爲它在驗證它時拋出一個錯誤。 – 2015-09-01 08:32:08

+1

複雜類型是XSD 1.0功能,應該可以正常工作。斷言是XSD 1.1功能,在libxml2中不受支持。 – 2015-09-01 21:05:48

相關問題