【问题标题】:How to limit defined complexType in XSD Schema file如何限制 XSD Schema 文件中定义的 complexType
【发布时间】:2015-12-03 15:59:48
【问题描述】:

我在 XSD 文件中定义了一个 object 子类型:

  <xs:complexType  name="object">
    <xs:sequence>
      <xs:element name="state"  maxOccurs="unbounded"  type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

如您所见,&lt;state&gt; 标记已配置为可以出现任意次数(从 1 次开始)。所以这将是一个例子,我使用定义的&lt;object&gt;:

  <System>
    <object_1>
      <state>string_1</state>
      <state>string_2</state>
      <state>string_3</state>
    <object_1>
    <object_2>
      <state>string_4</state>
    <object_2>
    ...
  </System>

但是,有一种特殊情况,我需要用 exactly 2 &lt;state&gt; elements/tags (no多也不少):

<object_n>
  <state>string_n1</state>
  <state>string_n2</state>
</object_n>

当我在 Schema 文件中声明它时,有没有办法扩展/修改/限制这种类型,以便清楚地知道它必须只包含两个子元素?

<xs:element  type="object">
  <xs:somewayToLimitChildren/>

实际上,对象子类型更复杂,因此需要将其设为子类型。

【问题讨论】:

  • maxOccurs="undefined" 应该是 maxOccurs="unbounded"
  • 你是对的,谢谢!根据 Kachna cmets 编辑

标签: xml xsd schema


【解决方案1】:

您需要使用xs:restriction 创建一个新类型:

<xs:complexType name="newObject">
    <xs:complexContent>
        <xs:restriction base="object">
            <xs:sequence>
                <xs:element name="state"  minOccurs="2"  maxOccurs="2" type="xs:string"/>
            </xs:sequence>    
        </xs:restriction>
    </xs:complexContent>
</xs:complexType>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 2019-07-28
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多