XSD (XML SChema)中自定义类型的三种方式
- 通过严格继承
<xs:simpleType name="myInteger">
<xs:restriction base="xs:integer">
<xs:minInclusive value="-2"/>
<xs:maxExclusive value="5"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="graphicalFormat">
<xs:restriction base="xs:NOTATION">
<xs:enumeration value="jpeg"/>
<xs:enumeration value="gif"/>
<xs:enumeration value="png"/>
<xs:enumeration value="svg"/>
<xs:enumeration value="pdf"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="wakeUpTime">
<xs:restriction base="xs:time">
<xs:enumeration value="07:00:00-07:00"/>
<xs:enumeration value="07:15:00-07:00"/>
<xs:enumeration value="07:30:00-07:00"/>
<xs:enumeration value="07:45:00-07:00"/>
<xs:enumeration value="08:00:00-07:00"/>
</xs:restriction>
</xs:simpleType>
- 通过List继承
<xs:simpleType name="myIntegerList">
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
- 通过Union继承
<xs:simpleType name="myIntegerUnion">
<xs:union memberTypes="xs:integer">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="undefined"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
下面是两个更高级(不过也比较奇怪的)Union方式
<xs:simpleType name="listOfUnions">
<xs:list>
<xs:simpleType>
<xs:union memberTypes="xs:date xs:integer"/>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:simpleType name="UnionOfLists">
<xs:union>
<xs:simpleType>
<xs:list itemType="xs:date"/>
</xs:simpleType>
<xs:simpleType>
<xs:list itemType="xs:integer"/>
</xs:simpleType>
</xs:union>
</xs:simpleType>
From : O‘Reilly XML Schema