2014-03-27 101 views
0

我是新來的XML,並且遇到了使用實例驗證XML Schema的麻煩!XML Schema的問題Nillable

XSD

<?xml version="1.0"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="result"> 
    <xs:complexType> 
     <xs:all> 
     <xs:element name="response"> 
      <xs:complexType> 
      <xs:all> 
       <xs:element minOccurs="0" name="status" type="xs:string" /> 
       <xs:element minOccurs="0" name="messages" nillable="true"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element minOccurs="0" maxOccurs="unbounded" name="item"> 
         <xs:complexType> 
         <xs:all> 
          <xs:element maxOccurs="1" minOccurs="0" name="date" type="xs:string"/> 
          <xs:element maxOccurs="1" minOccurs="0" name="department" type="xs:string"/> 
          <xs:element maxOccurs="1" minOccurs="0" name="msg-from" type="xs:string"/> 
          <xs:element maxOccurs="1" minOccurs="0" name="reply1" type="xs:string"/> 
          <xs:element maxOccurs="1" minOccurs="0" name="reply2" type="xs:string"/> 
         </xs:all> 
         </xs:complexType> 
        </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:all> 
      </xs:complexType> 
     </xs:element> 
     </xs:all> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

我的XML 實例

<result xmlns:xsi="http://www.w3.org/2001/XMLSchema"> 
    <response> 
     <status>No new messages</status> 
     <messages xsi:nil="true"/> 
    </response> 
</result> 

當我試圖驗證對使用工具,如this的XSD的情況下,我得到以下錯誤:

cvc-complex-type.3.2.2: Attribute 'xsi:nil' is not allowed to appear in element 'messages'. 

我不明白,因爲我已經爲messages元素添加了nillable="true"

我們將非常感謝您的幫助!謝謝。

+0

我發現在XML實例中放入'xmlns:xsi =「http://www.w3.org/2001/XMLSchema-instance」'驗證XML實例!但我正在使用的庫不會生成這個。 – giga

+2

咋,你的命名空間是錯的。請回答您的問題並標記接受的答案。 –

回答

2

我發現將xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"放在XML實例中會驗證XML實例!