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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в XSD схеме реализовать конструкцию 'OR'? 
:(
    Опции темы
Compositum
Дата 1.4.2012, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



Доброго времени суток.
Как в XSD схеме реализовать конструкцию 'OR'?

У меня есть такое определение типа:
Код

<!--ru-RU: Группа настроек-->
  <xs:complexType name="settingsGroup" >    
    <xs:sequence>
      <xs:element name="string" type="stringValue" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="bool" type="boolValue" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="date" type="dateValue" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="dateTime" type="dateTimeValue" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="int" type="intValue" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="double" type="doubleValue" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="day" type="dayValue" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="month" type="monthValue" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="year" type="yearValue" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="localization" type="languageValue" minOccurs="0" maxOccurs="unbounded"/>     
    </xs:sequence>
    <xs:attribute name="nameId" type="xs:ID" use="required"/>
  </xs:complexType>

Но я хочу его изменить так, чтобы объект типа settingsGroup мог принимать ЛИБО то, что показано выше (произвольную коллекцию объектов обозначенных типов), ЛИБО коллекцию объектов типа settingsGroup. Т.е. должна присутствовать возможность создания дерева.

Спасибо.
PM   Вверх
LSD
Дата 2.4.2012, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Код

    <xsd:complexType name="settingsGroup">
        <xsd:sequence>
            <xsd:element name="string" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="bool" type="xsd:boolean" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="nestedGroup" type="settingsGroup"/>
        </xsd:sequence>
        <xsd:attribute name="nameId" type="xsd:ID" use="required"/>
    </xsd:complexType>



--------------------
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   Вверх
Compositum
Дата 2.4.2012, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



Цитата(LSD @ 2.4.2012,  12:44)
Код

    <xsd:complexType name="settingsGroup">
        <xsd:sequence>
            <xsd:element name="string" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="bool" type="xsd:boolean" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="nestedGroup" type="settingsGroup"/>
        </xsd:sequence>
        <xsd:attribute name="nameId" type="xsd:ID" use="required"/>
    </xsd:complexType>

согласно такому варианту обязательно должна присутствовать подгруппа и необязательно - др. элементы. А мне нужно, чтобы были ЛИБО эти элементы, ЛИБО подгруппы, но не то и другое одновременно.
PM   Вверх
diadiavova
Дата 3.4.2012, 07:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(Compositum @  1.4.2012,  20:27 Найти цитируемый пост)
ИБО то, что показано выше (произвольную коллекцию объектов обозначенных типов), ЛИБО коллекцию объектов типа settingsGroup

Не понял: насколько я понимаю, выше показана именно settingGroup. Вообще задать альтернативу конкретной коллекции в виде произвольной вряд ли получится, поскольку обработчику нужно четкое правило, касающееся того какой именно набор правил следует применить в данном контексте. А если эти два набора имеют достаточно четкие различия, то видимо их можно поместить в элемент choice. Но в схеме все надо пробовать smile Вот например при таком раскладе будет все нормально и у элемента root будут потомки либо a b c, либо d b c
Код

  <xs:element name="root">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="1">
        <xs:sequence>
          <xs:element name="a"/>
          <xs:element name="b"/>
          <xs:element name="c"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element name="d"/>
          <xs:element name="b"/>
          <xs:element name="c"/>
        </xs:sequence>
      </xs:choice>
    </xs:complexType>
  </xs:element>
но если во второй секвенции последовательность начать с a (как в первом случае), то возникает двусмысленность в вопросе о том, какое правило использовать, причем независимо от того, что последует за этим элементом, поскольку при разборе обработчик именно по нему попытается определить какую из секвенций следует применить.

Это сообщение отредактировал(а) diadiavova - 3.4.2012, 08:50


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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