当我们需要使用与另一个复杂类型几乎相似的值创建复杂类型时,使用complexContent还是创建复杂类型更好?

问题描述 投票:0回答:1
java xsd jaxb
1个回答
0
投票

如果从用例的角度来看,您的类型彼此不相关,您应该使用不同的类型来避免不相关实体之间的耦合。如果它们独立发散,稍后会节省您的精力。

如果它们相关,您可以利用扩展。将公共属性取出为一个基本类型,并从该基本类型扩展其他类型。

<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

© www.soinside.com 2019 - 2024. All rights reserved.