Путать со схемой xsd и элементами файла xml

У меня один файл схемы xsd. В этом xsd-файле я перепутал с «выбором».

Например, myschema.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Emp">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="E1" />
        <xs:element ref="E2" />
        <xs:element ref="E3" />
        <xs:element ref="E4" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

myxmlfile1.xml - например, 1

РЕДАКТИРОВАТЬ: Добавлен корневой элемент Сотрудник.

<?xml version="1.0" encoding="utf-8"?>
<Employee>
  <Emp>
    <E1></E1>
    <E2></E2>
  </Emp>
</Employee>

myxmlfile2.xml - например, 2

РЕДАКТИРОВАТЬ: Добавлен корневой элемент Сотрудник.

<?xml version="1.0" encoding="utf-8"?>
<Employee>
  <Emp>
    <E1></E1>
  </Emp>
  <Emp>
    <E2></E2>
  </Emp>
</Employee>

В этих 2 файлах xml, согласно схеме, myxmlfile1.xml верен, иначе myxmlfile2.xml верен ??

очистите меня с объяснением ...

РЕДАКТИРОВАТЬ:

Here i want to know, 
  • Элемент Emp может иметь дочерние элементы E1 и E2 в любом порядке (или) ??

  • может иметь любой из дочерних элементов, то есть E1 или E2 (не может иметь обоих). ??


person cgsabari    schedule 23.07.2013    source источник
comment
Если вы не знаете, какой из ваших примеров верен, это может быть только потому, что вы не обратили внимания на уже предоставленные ответы на этот вопрос. Прочтите их еще раз внимательно.   -  person C. M. Sperberg-McQueen    schedule 24.07.2013


Ответы (2)


Подумайте о xs: choice с maxOccurs = unbounded как о том, что вы можете иметь столько элементов, сколько захотите, и каждый элемент должен быть либо foo, либо bar, либо baz (или любым другим списком в вашем xs: choice).

person Michael Kay    schedule 23.07.2013
comment
Мой запрос обновлен. Emp не является корневым элементом. Сотрудник - это корневой элемент. теперь скажи мне решение плз. - person cgsabari; 24.07.2013
comment
Ваше изменение вопроса никак не повлияло на мое объяснение того, что означает xs: choice. - person Michael Kay; 24.07.2013
comment
Вы не спросили, правильно ли это. Вы спросили, что это значит. Его можно назвать правильным только в том случае, если он соответствует какому-либо требованию, и вы не указали требование .... Извините, оглядываясь назад на вопрос, кажется, вы продолжаете его менять. Это затрудняет ответ. - person Michael Kay; 24.07.2013

Во-первых, второй пример недействителен или правильно сформированный xml (XML не может содержать более одного корневого элемента).

Первый подходит, потому что xs: choice и maxOccurs = "unbounded" используются вместе.

xs: choice заставляет вас выбрать только один из предоставленных элементов, а maxOccurs = "unbounded" позволяет делать это столько раз, сколько вы хотите.

Порядок в этом случае не имеет значения, например, действует и такой документ:

<?xml version="1.0" encoding="utf-8"?>
<Emp>
  <E4></E4>
  <E4></E4>
  <E2></E2>
  <E3></E3>
</Emp>
person Pavel Furs    schedule 23.07.2013
comment
Извини чувак. я обновил свой запрос. здесь Emp не является корневым элементом. а теперь скажи мне, какой пример правильный? - person cgsabari; 24.07.2013