[英]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文件如下所示(请注意, enable
和type
与prim_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.