XML Schema的类型可以包含零个或多个“x”元素以及零或一个“y”元素吗?

时间:2011-09-08 10:02:40

标签: xml xsd

我希望我的名为subquery的元素能够包含零个或多个insert元素,以及零个或一个subquery个元素。这些元素可以在任何地方。这些将是有效的subquery元素:

<subquery>
    <subquery>...</subquery>
</subquery>

<subquery>
    <insert />
    <insert />
</subquery>

<subquery>
    <insert />
    <subquery>...</subquery>
    <insert />
</subquery>

<subquery>
    <subquery>...</subquery>
    <insert />
    <insert />
</subquery>

<subquery>
    <insert />
    <insert />
    <insert />
    <subquery>...</subquery>
</subquery>

我尝试了很多方法,但无法获得有效的架构。当我在一个All中使用maxOccurs="unbounded" insert的类型时,Liquid XML Studio告诉我maxOccurs必须是0或1.不能让它作为序列工作。< / p>

这甚至可能吗?

2 个答案:

答案 0 :(得分:0)

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="subqueries">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="subquery"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="subquery">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="subquery"/>
        <xs:element ref="insert"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="insert">
    <xs:complexType/>
  </xs:element>
</xs:schema>

这就够了吗? (我添加了一个根元素子查询。)

干杯, 维姆

答案 1 :(得分:0)

这个模型不会这样做吗?:insert* (subquery, insert*)?

  <xs:element name="subquery">
    <xs:complexType>
      <xs:sequence>
         <xs:element ref="insert" minOccurs="0" maxOccurs="unbounded"/>
         <xs:sequence minOccurs="0">
            <xs:element ref="subquery"/>
            <xs:element ref="insert" minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>