【发布时间】:2011-02-09 11:01:44
【问题描述】:
我在我的 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 扩展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类型的元素。基本上对于上面的 XML 文件,问题是没有两个“配置”标签。这在 XSD 中可能吗?我将非常感谢任何提示。
提前致谢,
威泰克
【问题讨论】:
-
我一定是误会了:为什么不用configdata类型定义set,eg element name="set" type="configdata"?
-
与真实代码相比,我已经简化了代码示例。在我的真实代码中,set 是另一个 complexType 的扩展。 set 包含其他元素 - 我希望它也包含 configdata 的所有子元素。
-
那么你在这里真正要求的是拥有 set 元素,扩展多种复杂类型?
-
抱歉不清楚 - 也许我过度简化了代码示例。我试图改写这个问题以使其更清楚。我希望这会有所帮助。我正在通过这样做来学习 XSD——所以这也许是我的问题的根本原因。 ;-)