XML Schema rcase-NameAndTypeOK.3.2.5无效

时间:2012-04-13 06:56:23

标签: xml inheritance xsd

所以,我正在尝试创建一个模式,我使用一个模式作为参考,从不接触和另一个模式,我可以触摸,扩展,限制等等。所以我现在遇到的问题是我' 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中的限制?有什么我做错了吗?

1 个答案:

答案 0 :(得分:0)

我没有看到另一种解决方法 - 问题是所定义的Main不是限制,也不是B的扩展 - 因为它可以包含元素B3作为B,但有一个额外的子元素B-4

如果你想拥有一个固定的基础架构,然后一个派生架构的声明等于基础架构和其他一些不同,你应该使用xsd:redefine