2012-02-05 2 views
1

Я хочу создать XML-схему - файл XSD - для применения на XML-документах. Давайте рассмотрим следующий XML-документ:XML Schema + complexType element + Альтернатива последовательности

<root> 
    <a /> 
    <b /> 
    <c /> 
    <a /> 
    <a /> 
    <b /> 
</root> 

Где соблюдаются следующие желательные ограничения:

  1. < корень> является корневым элементом.
  2. Элементы < a>, < b> и < c> могут появляться неограниченное количество раз.
  3. < a>, < b> и < c> элементы не сгруппированы. Например, элемент может предшествовать и следовать за элементом < b>.

Если бы мне пришлось создать схему XML, чтобы применить на документе пример XML я хотел бы начать, как:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema targetNamespace="http://doesnotmatter.com/" 
      xmlns="http://doesnotmatter.com/" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="root" 
       min="1" 
       max="1"> 
     <complexType> 

      <!-- ? --> 

     </complexType> 
    </xs:element> 

</xs:schema> 

Я не знаю, как заполнить элемент < ComplexType> в моей схеме ,
Я не могу использовать элемент последовательности < из-за 3-го ограничения.
Как я могу достичь своей схемы, чтобы уважать все 3 ограничения.

Редактировать

Выбор элемент был краеугольным камнем моей проблемы.
Вот XML-схема, соответствующая моим потребностям, описанным выше:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema targetNamespace="http://doesnotmatter.com/" 
      xmlns="http://doesnotmatter.com/" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="root"> 
    <xs:complexType> 

     <xs:choice maxOccurs="unbounded"> 
     <xs:element name="a" /> 
     <xs:element name="b" /> 
     <xs:element name="c" /> 
     </xs:choice> 

    </xs:complexType> 
    </xs:element> 

</xs:schema> 

ответ

0

Итак, ваша модель корня: многократно выбирать из числа этих возможностей: а, б, в. Это оно? Оперативное слово выбирается как по выбору. Может быть, мне что-то не хватает, но ответ кажется довольно очевидным.