Схема XML для типа, который может содержать ноль или более элементов «x» и ноль или один элемент «y» в любом месте? - PullRequest
0 голосов
/ 08 сентября 2011

Я хочу, чтобы мой элемент с именем 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>

Я пробовал много способов, но не могу заставить работать правильную схему.Когда я использую maxOccurs="unbounded" для типа insert внутри All, Liquid XML Studio говорит мне, что maxOccurs должно быть 0 или 1. Также невозможно заставить его работать как последовательность.это вообще возможно?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2011

Разве эта модель не сделает это ?: 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>
0 голосов
/ 08 сентября 2011
<?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>

Этого будет достаточно?(Я добавил подзапросы корневого элемента.)

Cheers, Wim

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...