Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > XSD one or more elements in sequence


Автор: Zloxa 13.5.2016, 10:03
Добрый день.

Есть некое перечисление элементов XML. К примеру Title, Author, ISBN. 

Мне необходимо на уровне XSD задать правило, что должна быть указана либо пара Title+Author, либо ISBN, но при этом допускать чтобы были указаны все три элемента. Есть ли такая возможность?


Автор: diadiavova 13.5.2016, 11:13
Цитата(Zloxa @  13.5.2016,  10:03 Найти цитируемый пост)
Добрый день.

Здорова, коли не шутишь smile 
Цитата(Zloxa @  13.5.2016,  10:03 Найти цитируемый пост)
Мне необходимо на уровне XSD задать правило, что должна быть указана либо пара Title+Author, либо ISBN, но при этом допускать чтобы были указаны все три элемента.

Ну как вариант, можно сделать что-то типа этого
Код

            <xs:choice>
              <xs:sequence>
                <xs:element name="title"/>
                <xs:element name="author"/>
                <xs:element name="ISBN" minOccurs="0"/>
              </xs:sequence>
              <xs:element name="ISBN"/>
            </xs:choice>

Автор: Zloxa 13.5.2016, 11:42
Цитата(diadiavova @  13.5.2016,  12:13 Найти цитируемый пост)
можно сделать что-то типа этого

Спасибо.
У меня таких элементов (групп элементов) - более пяти. Должен быть упомянут хотя-бы один из них. Могут быть упомянуты более одного/все.
как-то совсем-совсем не изящно получается
Код

  <xsd:element name="exampleElement">
     <xsd:complexType>
        <xsd:choice>
           <xsd:sequence>
               <xsd:element name = "Element1" type = "xsd:string"/>
               <xsd:element name = "Element2" type = "xsd:string" minOccurs="0"/>
               <xsd:element name = "Element3" type = "xsd:string" minOccurs="0"/>
               <xsd:element name = "Element4" type = "xsd:string" minOccurs="0"/>
               <xsd:element name = "Element5" type = "xsd:string" minOccurs="0"/>
           </xsd:sequence>
           <xsd:sequence>
               <xsd:element name = "Element2" type = "xsd:string"/>
               <xsd:element name = "Element3" type = "xsd:string" minOccurs="0"/>
               <xsd:element name = "Element4" type = "xsd:string" minOccurs="0"/>
               <xsd:element name = "Element5" type = "xsd:string" minOccurs="0"/>
           </xsd:sequence>
           <xsd:sequence>
               <xsd:element name = "Element3" type = "xsd:string"/>
               <xsd:element name = "Element4" type = "xsd:string" minOccurs="0"/>
               <xsd:element name = "Element5" type = "xsd:string" minOccurs="0"/>
           </xsd:sequence>
           <xsd:sequence>
               <xsd:element name = "Element4" type = "xsd:string"/>
               <xsd:element name = "Element5" type = "xsd:string" minOccurs="0"/>
           </xsd:sequence>
           <xsd:element name = "Element5" type = "xsd:string"/>
        </xsd:choice>
     </xsd:complexType>
  </xsd:element>


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)