Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Element minOccurs maxOccurs 
:(
    Опции темы
Agentx86
Дата 30.11.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 27.4.2006

Репутация: нет
Всего: нет



Не могу решить задачу. Есть два элемента.
Код

  <xs:element name="onWillAppear" type="command"   />
   <xs:element name="onDidAppear" type="command"   />


И есть еще
Код

  <xs:element name="navigationBar" type="navigationBar"/>
  <xs:element name="toolbar" type="toolbar"/>
 <xs:element name="searchBar" type="searchBar"/>
 <xs:element name="sqlDataSet" type="sqlDataSet"/>


Нужно так сделать чтобы первые два элемента могли встречаться максимум по одному разу миниум ноль и не могли быть друг в друга вложены.Но в них могут быть вложены остальные элементы navigationBar, toolbar, searchBar, sqlDataSet сколько угодно раз в любой последовательности или не одного. Также эти элементы могут быть не вложены не одного раза
PM MAIL   Вверх
LSD
Дата 30.11.2010, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Ну тут не совсем понятно, что за тип такой command. А в общем это будет выглядеть так:
Код

  <xs:element name="onWillAppear" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="navigationBar" type="navigationBar"  minOccurs="0"/>
        <xs:element name="toolbar" type="toolbar" minOccurs="0"/>
        <xs:element name="searchBar" type="searchBar" minOccurs="0"/>
        <xs:element name="sqlDataSet" type="sqlDataSet" minOccurs="0"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Agentx86
Дата 30.11.2010, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 27.4.2006

Репутация: нет
Всего: нет



В общем я понял, что мою задачу решить нельзя. А все потому что нельзя засунуть choice в all.
Допустим есть три элемента. 1,2,3,
Элемент 1 может встречаться сколько угодно раз и где угодно. А 2,3 только по одному разу. Вот примеры.

1,2,3,1
1,1,1,2,1,1,3,1,1
1,1,2,1,1,1,
1,1,3,1,1
2,1,1,3
3,1,1

Сомневаюсь, что возможно написать XSD схему для таких комбинаций. Но если возможно то пишите идеи.

PM MAIL   Вверх
LSD
Дата 1.12.2010, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Цитата(Agentx86 @  30.11.2010,  20:33 Найти цитируемый пост)
Сомневаюсь, что возможно написать XSD схему для таких комбинаций.

Не только можно, но тут еще более одного способа.

Если элемент 2 идет всегда перед 3, то пишешь:
Код

      <xs:sequence>
        <xs:element name="1" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="2" minOccurs="0"/>
        <xs:element name="1" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="3" minOccurs="0"/>
        <xs:element name="1" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>


Если нужно чтобы 2 и 3 могли встречаться в любой последовательности есть два варианта:
1. choice из двух sequence перечисленных выше с разным порядком 2 и 3 (плохо подходит если элементов станет больше)
2. 
Код

      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="1"/>
        <xs:element name="2"/>
        <xs:element name="3"/>
      </xs:choice>

плюс ограничение уникальности на элементы 2 и 3.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0631 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.