【问题标题】:better way to write xsd elements reusable with in other complex elements?编写可在其他复杂元素中重用的 xsd 元素的更好方法?
【发布时间】:2014-01-24 12:14:06
【问题描述】:

我有以下 xsd。请建议我如何改进它。

<xsd:element name="getFirstTableRequest" type="tns:GetFirstTableRequest"/>
<xsd:element name="getSecondTableRequest" type="tns:GetSecondTableRequest"/>
<xsd:element name="getThirdTableRequest" type="tns:GetThirdTableRequest"/>
<xsd:element name="getFourthTableRequest" type="tns:GetFourthTableRequest"/>

<xsd:complexType name="Base" abstract="true">
    <xsd:sequence>
        <xsd:element name="id" type="xsd:string" minOccurs="1" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="GetFirstTableRequest">
    <xsd:complexContent>
        <xsd:extension base="tns:Base">
        </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="GetSecondTableRequest">
    <xsd:complexContent>
        <xsd:extension base="tns:Base">
        </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="GetThirdTableRequest">
    <xsd:complexContent>
        <xsd:extension base="tns:Base">
        </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="GetFourthTableRequest">
    <xsd:complexContent>
        <xsd:extension base="tns:Base">
        </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

有没有最好的方法来改进xsd? 我的意思是在 XSD 之上是否有任何重构空间

谢谢!

【问题讨论】:

    标签: java xml web-services jaxb xsd


    【解决方案1】:

    假设您的扩展类型不添加任何新属性或元素。您可以执行以下操作:

    1. 消除所有子类型。
    2. Base 中删除abstract="true"
    3. 然后将每个根元素更改为type="tns:Base"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2017-03-16
      • 1970-01-01
      相关资源
      最近更新 更多