2012-04-13 81 views
0

所以,我試圖創建一個模式,從而我使用一個模式作爲參考,從不觸及另一個模式,我可以觸摸,擴展,限制等。我現在遇到的問題是我正面臨着一種限制rcase-NameAndTypeOK3.2.5。XML Schema rcase-NameAndTypeOK.3.2.5無效

<!--Msg --> 
<xs:complexType name="Main"> 
    <xs:complexContent> 
     <xs:restriction base="B"> 
      <xs:sequence> 
       <xs:element name="B1" type="BType"/> 
       <xs:element name="B2" type="BType"/> 
       <xs:element name="B3" type="B3-Type"/> 
      </xs:sequence> 
     </xs:restriction> 
    </xs:complexContent> 
</xs:complexType> 
<!-- Types --> 
<xs:complexType name="B3-Type"> 
    <xs:complexContent> 
     <xs:extension base="BType"> 
      <xs:sequence> 
       <xs:element name="B-4"/> 
      </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

<!-- Source --> 
<xs:complexType name="BType"> 
    <xs:sequence> 
     <xs:element name="B-1"/> 
     <xs:element name="B-2"/> 
     <xs:element name="B-3"/> 
    </xs:sequence> 
</xs:complexType> 
<xs:complexType name="B"> 
    <xs:sequence> 
     <xs:element name="B1" type="BType"/> 
     <xs:element name="B2" type="BType"/> 
     <xs:element name="B3" type="BType"/> 
    </xs:sequence> 
</xs:complexType> 

我有一個解決辦法,那就是在除去主要的限制。是否有另一種解決方法,但不刪除Main中的限制?有什麼我做錯了嗎?

回答

0

我沒有看到其他的解決方法 - 問題是,Main定義不是限制,也不是B的延伸 - 是它可以包含一個元素B3作爲B但有一個額外的子元素B-4

如果你想有一個固定的基礎架構,然後派生模式的一些聲明等於基地之一,可能有一些不同,你應該使用xsd:redefine

+0

感謝您的幫助! – user1330885 2012-05-10 06:35:20

+0

不客氣,不是很不幸 – MiMo 2012-05-10 13:49:53