通过限制现有的 xscomplexType 来创建全局 xscomplexType

这是事情变得有点棘手的地方。我们现在限制现有的 xs:complexType。我们的 SolidStateDriveType 派生自 HardDiskType,但删除了 spinUpTime 属性和 RotationSpeed 元素。

请注意,处理属性和元素的方法是不同的。要删除属性,你需要重新声明它并将其用途设置为禁止。对于只是不重新声明它们的元素将导致它们被排除,实际上你需要重新声明你想要保留在新类型中的任何元素。

受限类型的关键概念 :必须可以将受限类型的 XML 实例元素加载到基类型中,另一种方式是受限类型需要能够适应*基类型。因此,你不能排除强制属性或元素,为了在限制类型中排除它,它必须在基类型中是可选的。如果更改受限类型中元素或属性的类型/构面规则,则新类型/构面规则必须与基类型兼容,因此如果基类型为短,则受限类型可以是字节,但是不久。*

<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid Studio 2017 - Developer Bundle Edition (Trial) 15.0.2.7192 (https://www.liquid-technologies.com)-->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="HardDiskType">
        <xs:sequence>
            <xs:element name="Capacity" type="xs:long" />
            <xs:element name="RotationSpeed" type="xs:int" minOccurs="0" />
        </xs:sequence>
        <xs:attribute name="name" type="xs:string" />
        <xs:attribute name="spinUpTime" type="xs:time" />
    </xs:complexType>
    <xs:complexType name="SolidStateDrive">
        <xs:complexContent>
            <xs:restriction base="HardDiskType">
                <xs:sequence>
                    <xs:element name="Capacity" type="xs:long" />
                </xs:sequence>
                <xs:attribute name="spinUpTime" use="prohibited" />
            </xs:restriction>
        </xs:complexContent>
    </xs:complexType>
</xs:schema>

StackOverflow 文档