2016-11-17 8 views
1

Я определил компоненты типов inputTextType и inputEmailType (их определения здесь не важны). Мне нужно иметь components коллекцию любого номера inputText и/или inputEmail в любом порядке (пример: текст, текст, текст, текст). Я пробовал:XML-схема для сбора компонентов любого определенного типа

<xs:complexType name="componentsType"> 
    <xs:choice> 
     <xs:element name="inputText" type="inputTextType" maxOccurs="unbounded" minOccurs="0"/> 
     <xs:element name="inputEmail" type="inputEmailType" maxOccurs="unbounded" minOccurs="0"/> 
    </xs:choice> 
</xs:complexType> 

но при проверке XML

<components> 
    <inputText> 
     <label>label 1</label> 
     <name>as</name> 
    </inputText> 
    <inputText> 
     <label>label 2</label> 
     <name>ghyyy6</name> 
    </inputText> 
    <inputEmail> 
     <label>drg</label> 
     <name>rgtght</name> 
    </inputEmail> 
</components> 

У меня есть ошибка cvc-complex-type.2.4.a: Invalid content was found starting with element 'inputEmail'. One of '{inputText}' is expected.. XML правильный (мне это нужно). Как мне исправить XSD?

Для XML выше я изменил XSD для

<xs:complexType name="componentsType"> 
    <xs:choice> 
     <xs:element name="inputText" type="inputTextType" maxOccurs="unbounded" minOccurs="0"/> 
     <xs:element name="inputEmail" type="inputEmailType" maxOccurs="unbounded" minOccurs="0"/> 
    </xs:choice> 
</xs:complexType> 

, и она работала, но тогда я не смог определить текст, электронную почту, текст, текст, но только сначала все тексты, а затем все письма.

ответ

1

Перемещение ограничений вхождений до xs:choice:

<xs:choice minOccurs="0" maxOccurs="unbounded"> 
    <xs:element name="inputText" type="inputTextType"/> 
    <xs:element name="inputEmail" type="inputEmailType"/> 
</xs:choice> 

 Смежные вопросы

  • Нет связанных вопросов^_^