从xsd中的ChildType元素中排除parentType元素

时间:2013-06-20 09:52:16

标签: xsd

我在xsd中有以下两个元素。两者都是相关的延伸。我只是想知道在ChildType中使用它时是否有可能从ParentType中删除/排除一个或多个元素。这意味着尽管ChildType扩展了ParentType,但它不包含ParentType中的所有元素,我可以从ChildType中删除元素名称=“p3”type =“boolean”吗?

<complexType name="ChildType">
    <complexContent>
        <extension base="tns:ParentType">
            <sequence>
                <element name="a" type="boolean"/>
                <element name="b" type="string"/>
            </sequence>
        </extension>
    </complexContent>
</complexType>


<complexType name="ParentType" abstract="true">
    <sequence>
        <element name="p1" type="integer"/>
        <element name="p2" type="string"/>
        <element name="p3" type="boolean"/>         
    </sequence>
</complexType>

提前致谢!

1 个答案:

答案 0 :(得分:1)

没有;如果要删除某些元素并添加其他元素,则需要两个派生步骤:一个通过删除一些可选元素来限制类型,另一个通过在末尾添加其他元素来扩展它。

但是,在这种情况下,ParentType的所有元素都不是可选的,因此没有任何限制是合法的。 [嗯,纠正:唯一可能的限制是将较小类型分配给元素p1,p2或p3的限制;没有涉及删除任何这些元素的限制将是合法的。]