XML-схема, помещающая обе последовательности и все в один узел complexType - PullRequest
1 голос
/ 09 марта 2010

Вот XML-файл:

<section>
    <number>1</number>
    <title>A Title goes here...</title>
    <code>TheCode</code>

    <element></element>
    <element></element>
</section>

В узле раздела есть номер, заголовок и код узла. Их последовательность не должна быть фиксированной. Кроме того, под узлом секции есть несколько элементов.

Идея состоит в том, чтобы использовать следующую схему:

<xs:complexType name="Type-section">

  <xs:all>
    <xs:element name="number" minOccurs="0"></xs:element>
    <xs:element name="code"  minOccurs="1"></xs:element>
    <xs:element name="title"  minOccurs="1"></xs:element>
  </xs:all>

  <xs:sequence>
    <xs:element maxOccurs="unbounded" name="element"></xs:element>
  </xs:sequence>
</xs:complexType>

Но это неверно. Я просто не могу соединить «последовательность» и «все» вместе на одном уровне. Как я могу это исправить?

1 Ответ

1 голос
/ 10 декабря 2010

Если порядок не должен быть важным, то вы можете сделать это, перечислив все перестановки и указав их в качестве выбора. Однако поддерживать его будет довольно сложно, так как число вариантов возрастает O (n!). Мне пришлось вернуться к последовательности для некоторых вещей, которые я пишу, из-за ограничений, подобных этим на XML-схеме.

, например

<choice>
  <sequence>
    <element name="a" />
    <element name="b" />
    <element name="c" />
  </sequence>

  <sequence>
    <element name="a" />
    <element name="c" />
    <element name="b" />
  </sequence>


  <sequence>
    <element name="b" />
    <element name="a" />
    <element name="c" />
  </sequence>


  <sequence>
    <element name="b" />
    <element name="c" />
    <element name="a" />
  </sequence>


  <sequence>
    <element name="c" />
    <element name="a" />
    <element name="b" />
  </sequence>


  <sequence>
    <element name="c" />
    <element name="b" />
    <element name="a" />
  </sequence>
</choice>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...