如果从用例的角度来看,您的类型彼此不相关,您应该使用不同的类型来避免不相关实体之间的耦合。如果它们独立发散,稍后会节省您的精力。
如果它们相关,您可以利用扩展。将公共属性取出为一个基本类型,并从该基本类型扩展其他类型。
<xsd:complexType name="MyBaseComplexType">
<xsd:sequence>
<!-- Common Elements -->
<xsd:element name="FirstName" type="xsd:string"/>
<xsd:element name="LastName" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CustomComplexType">
<xsd:complexContent>
<xsd:extension base="MyComplexType">
<xsd:sequence>
<xsd:element name="Age" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="OtherCustomComplexType">
<xsd:complexContent>
<xsd:extension base="MyComplexType">
<xsd:sequence>
<xsd:element name="SomeOtherAttribute" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
CustomComplexType
和OtherCustomComplexType
现在将包含FirstName
和LastName