簡體   English   中英

XSD:重用complexType的子元素嗎?

[英]XSD: reuse sub-elements of complexType?

我在XSD文件中定義了以下兩種類型:

<complexType name="primitive">
  <attribute name="seq_num" type="int"/>
  <element name="prim_to" type="int"/>
</complexType>


<complexType name="configdata">
  <sequence>
    <element name="enable" type="boolean"/>
    <element name="type" default="int"/>
   </sequence>
</complexType>

這兩種類型都用於許多定義中,即我不希望更改它們。 我想定義一個新的元素set ,該元素set擴展primitive並包含configdata所有子元素。 該元素的XML文件如下所示(請注意, enabletypeprim_to處於同一級別):

<set seq_num="1234">
  <prim_to>22</prim_to>
  <enable>true<enable>
  <type>42</type>
</set>

我可以通過以下方式聲明set

<element name="set">
  <complexType>
    <complexContent>
      <extension base="primitive">
        <sequence>
          <element name="config" type="configdata"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
</element>

在這種情況下,XML文件將如下所示:

<set seq_num="1234">
  <prim_to>22</prim_to>
  <config>
    <enable>true<enable>
    <type>42</type>
  </config>
</set>

我的挑戰是以這種方式定義set ,使其擴展primitive並包含configdata所有子元素-但不包含configdata類型的configdata 基本上,對於上面的XML文件,這是一個沒有兩個'config'標簽的問題。 在XSD中可以嗎? 我將不勝感激任何提示。

提前致謝,
威泰克

一個類型只能擴展單個其他類型(換句話說,沒有多重繼承)。 因此,您的set元素可以擴展configdata(使用xsd:extension)並具有其他元素,或者它可以擴展另一種類型,您可以復制configdata元素來對其進行擴展。 您可以使用組來避免冗余。

您應該像這樣定義set元素:

<element name="set" type="configdata" />

使用此結構, set元素將包含configdata復雜類型中的兩個子元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM