将序列更改为选择

时间:2011-02-09 14:54:08

标签: xml schema xsd

在我的架构文件中,我使用元素序列定义了

<group name="argumentGroup">
    <sequence>
        <element name="foo" type="double" />
        <element name="bar" type="string" />
        <element name="baz" type="integer" />
    </sequence> 
</group>

然后我像这样引用这个

<element name="arguments">
    <complexType>
        <group ref="my:argumentGroup"/>
    </complexType>
</element>

是否可以在某个其他位置引用但是限制它,因此它是选择而不是序列。我想重用它的位置只允许其中一个 Elements

<element name="argument" minOccurs="0" maxOccurs="1">
    <complexType>
        <group name="my:argumentGroup">
            <! -- Somehow change argumentGroup sequence to choice here -->
        </group>
    <complexType>
</element>

2 个答案:

答案 0 :(得分:5)

不,您需要定义一个不同的组。

答案 1 :(得分:2)

没有。你不能用组来做这件事。要获得这种类型的可重用性,请使用复杂类型而不是组来定义元素序列(foo,bar,baz)。

使用限制将此复杂类型分配给架构中的元素。但是,您需要使用基本复杂类型来使用choice元素。

似乎使用限制,您可以将choice元素更新为限制中的序列。但是,如果使用序列定义基本复杂类型,则将受限元素更新为选项将导致架构验证失败。