На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL
  
> Валидация с помощью XSD
    Всем привет!

    Делаю XSD документ с помощью редактора Oxygen XML Editor. Есть задача создать такую схему которая обеспечит выполнение следующих условий:
    - Элемент Category должен содержать один дочерний элемент Params
    - Этот же элемент Category должен содержать один или более элементов item.

    Построить такую схему с помощью all\choice\sequence мне не удалось. Скорее всего не могу сообразить, либо в стандарте есть какие-то неявные вещи, которые через интерфейс сделать сложнее.
    Подскажите как должна выглядеть схема для соблюдения таких условий?
      Недоизложил.

      То что я хочу делает xs:sequence, но обязывает соблюдать порядок элементов. Но мне хотелось бы не иметь жесткой привязки к порядку элементов.
        Уникальность по атрибуту, который может принимать только одно значение.

        0. категория - это элемент. ибо пункт 3.
        1. внутри категории сделай сиквенс чойсов (парамс или айтем)
        2. парамсу назначь атрибут. зафиксируй или хотя бы ограничь атрибут. http://www.w3schools.com/schema/schema_simple_attributes.asp
        3. на категорию повесь юник по парамсам: селектор будет брать парамсы, а ключом будет тот атрибут. http://www.w3schools.com/schema/el_unique.asp

        Не помню сейчас тонкостей fixed'а, то ли он подставляет значение имплицитно в итоговом документе, то ли нет. Может, его можно комбинировать с use="optional". Если с фикседом не пролезет, то можно дефолт попробовать, ограничив при этом значения атрибута енумерацией из одного элемента (правда, тут может юник взбрыкнуть, если значение не задано).

        Короче, покомбинируй fixed, default и по необходимости optional.
          ss, атрибутов нет. Речь только об элементах
            ExpandedWrap disabled
                <xs:element name="Category">
                  <xs:complexType>
                    <xs:all>
                      <xs:element name="Params"/>
                      <xs:element name="Item" maxOccurs="unbounded" minOccurs="0"/>
                    </xs:all>
                  </xs:complexType>
                </xs:element>
            Сообщение отредактировано: Profi -
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0280 ]   [ 16 queries used ]   [ Generated: 28.03.24, 11:19 GMT ]