Конструкция XML-схемы для элементов может встречаться любое количество раз в любом порядке. - PullRequest
2 голосов
/ 31 июля 2010

Я хочу написать XML-схему, которая может принимать некоторые элементы, которые могут встречаться любое количество раз в любом порядке.как в следующих примерах.оно должно удовлетворять всем подобным сочетаниям.Помогите мне и спасибо заранее.

Пример 1

<root>
    <node1><em> one </em>  </node1>
    <node1><em> two </em>  </node1>
    <node2><em> three</em> </node2>
    <node1><em> four </em> </node1>
    <node2> <em>five </em> </node2>
    <node2><em> six </em>  </node2>
</root>

Пример 2

<root>    
    <node1><em> one  </em> </node1>
    <node2> <em>two </em>  </node2>
    <node1><em> three </em></node1>
    <node2><em> four</em>  </node2>
    <node2><em> five </em> </node2>
    <node1><em> six </em>  </node1>
    <node1><em> seven</em> </node1>
</root>

Ответы [ 2 ]

4 голосов
/ 31 июля 2010

Примерно так должно работать:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="root" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="node1" nillable="true">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
        <xs:element name="node2" nillable="true">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

По сути, <xs:choice> дает вам возможность выбрать любой из содержащихся в нем узлов, например, любой из <node1> или <node2>. См. статью W3Schools для более подробного объяснения различных вариантов.

Поскольку <xs:choice> имеет атрибуты minOccurs="0" и maxOccurs="unbounded", вы можете повторять этот сценарий «выбрать любой из содержащихся узлов» любое количество раз.

В конце концов, вы можете выбрать любое количество узлов, и каждый раз, вы можете выбрать либо узел 1, либо узел 2 (или более, если вы добавите дополнительные опции к <xs:choice>)

1 голос
/ 31 июля 2010

marc_s ответ попадает прямо в голову.

Когда я писал схемы, я нашел этот ресурс очень полезным: http://www.w3schools.com/Schema/schema_elements_ref.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...