【发布时间】:2011-12-04 15:26:06
【问题描述】:
想象在 definition.xsd
中有一个已定义的简单类型<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="myType">
<xs:restriction base="xs:string" />
</xs:simpleType>
</xs:schema>
那么该类型在2个不同的xsds中使用:use1.xsd和use2.xsd:
use1.xsd:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="definition.xsd"></xs:include>
<xs:complexType name="ComplexType1">
<xs:attribute name="typeInstance1" type="myType" use="required" />
</xs:complexType>
</xs:schema>
use2.xsd:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="definition.xsd"></xs:include>
<xs:complexType name="ComplexType2">
<xs:attribute name="typeInstance2" type="myType" use="required" />
</xs:complexType>
</xs:schema>
然后有2个文件particularUse1.xsd和particularUse2.xsd,重新定义了之前的两个xsd:
particularUse1.xsd:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:redefine schemaLocation="use1.xsd">
<xs:simpleType name="myType">
<xs:restriction base = "myType">
<xs:enumeration value = "value1"/>
<xs:enumeration value = "value2"/>
</xs:restriction>
</xs:simpleType>
</xs:redefine>
</xs:schema>
particularUse2.xsd:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:redefine schemaLocation="use2.xsd">
<xs:simpleType name="myType">
<xs:restriction base = "myType">
<xs:enumeration value = "value1"/>
<xs:enumeration value = "value2"/>
</xs:restriction>
</xs:simpleType>
</xs:redefine>
</xs:schema>
现在的问题:我如何才能重用 myType 的重新定义,特别是 Use1.xsd 和 specificUse2.xsd,它们不会重复。
最好是另一个文件reused.xsd:
<xs:simpleType name="myType">
<xs:restriction base = "myType">
<xs:enumeration value = "value1"/>
<xs:enumeration value = "value2"/>
</xs:restriction>
</xs:simpleType>
reused.xsd 文件中的引用用于 particularUse1.xsd 和 particularUse2.xsd。
【问题讨论】:
标签: xsd enumeration reusability simpletype