2011-09-27 37 views
1

我想驗證此XML:嵌套序列中的XSD

<meta> 
    <house> 
     <big ... /> 
     <little ... /> 
     <big ... /> 
    </house> 

    <flat> 
     <red ... /> 
     <red ... /> 
     <yellow ... /> 
    </flat> 
</meta> 

我寫的。

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="meta"> 
     <xs:complexType> 
      <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
       <xs:element name="house"> 
        <xs:complexType> 
         <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
          <xs:element name='big' /> 
          <xs:element name='little' /> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
       <xs:element name="flat"> 
        <xs:complexType> 
         <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
          <xs:element name='red'/> 
          <xs:element name='yellow'/> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

但是,這並沒有驗證我的例子。 沒有「房屋」或「平面」,只有元,這工作。

哪裏可能是我的問題?

+0

如果你想驗證XSD? W3C? – FloppyDisk

+0

@FloppyDisk:使用python的lxml庫。 – nicolas

回答

0

找到了!

解決辦法:增加了 「XS:選擇」 爲每個 「XS:序」,像這樣:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="meta"> 
     <xs:complexType> 
      <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
       <xs:choice> 
       <xs:element name="house"> 
        <xs:complexType> 
         <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
          <xs:choice> 
           <xs:element name='big' /> 
           <xs:element name='little' /> 
          </xs:choice> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
       <xs:element name="flat"> 
        <xs:complexType> 
         <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
          <xs:choice> 
           <xs:element name='red'/> 
           <xs:element name='yellow'/> 
          </xs:choice> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
       </xs:choice> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema>