2012-04-13 122 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