所以,我正在尝试创建一个模式,我使用一个模式作为参考,从不接触和另一个模式,我可以触摸,扩展,限制等等。所以我现在遇到的问题是我' m面对约束rcase-NameAndTypeOK3.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中的限制。是否有另一种解决方法而不删除Main中的限制?有什么我做错了吗?
答案 0 :(得分:0)
我没有看到另一种解决方法 - 问题是所定义的Main
不是限制,也不是B
的扩展 - 因为它可以包含元素B3
作为B
,但有一个额外的子元素B-4
。
如果你想拥有一个固定的基础架构,然后一个派生架构的声明等于基础架构和其他一些不同,你应该使用xsd:redefine