【问题标题】:Change Sequence to Choice将顺序更改为选择
【发布时间】:2011-02-10 00:56:48
【问题描述】:

在我的架构文件中,我定义了一个 Group,其中包含可能的 元素序列

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

然后我像这样引用这个 Group

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

是否可以在其他位置引用 Group,但对其进行限制,使其成为 Choice 而不是 Sequence。我想重用它的位置只允许其中的 Elements 之一。

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

【问题讨论】:

    标签: xml schema xsd


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      没有。您不能对组执行此操作。要获得这种类型的可重用性,请使用复杂类型而不是组来定义元素序列(foo、bar、baz)。

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

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

      【讨论】:

      • 谢谢。我和另一个小组一起去了。实施起来更简单。
      • 不会限制旧类型 1) 创建序列选择和/或 2) 需要再次输入 xs:element 标签,这样不会从重用中受益?
      • @jasso - 我更新了我的回复以确保准确性。问题是您可以将选择限制为序列,但不能将序列限制为选择。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 2016-12-30
      相关资源
      最近更新 更多