s4s-elt-invalid-content.1: Содержимое недействительно. Элемент 'attribute' недопустим, смещен или встречается слишком часто

Я работаю над XSD для проекта, вот что у меня есть:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://www.example.org/Elizabeth schema" 
xmlns:elz="http://www.example.org/Elizabeth_schema" elementFormDefault="qualified">
<xs:element name ="year">
<xs:complexType mixed = "true">
<xs:sequence>
<xs:element name="entry">
    <xs:complexType mixed ="true">
    <xs:simpleContent>
        <xs:attribute name ="when" type = "xs:string"/> 
        <xs:attribute name = "place" type = "xs:string"/>
        <xs:element name = "items" type = "xs:string"/>
        <xs:element name = "characters">
            <xs:complexType>
            <xs:attribute name ="character" type = "xs:string"/>
            </xs:complexType>
        </xs:element>
        <xs:element name = "eventscollection">
            <xs:complexType>
            <xs:attribute name = "type" type = "xs:string"/>
            </xs:complexType>
        </xs:element>
        <xs:element name ="entrytxt">
            <xs:complexType>
            <xs:any minOccurs = "0"/>
            <xs:anyAttribute minOccurs="0"/>
            </xs:complexType>
        </xs:element>
        </xs:simpleContent>
    </xs:complexType>
    </xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

Я еще не указал xls на схему, потому что сначала хочу, чтобы схема работала. Моя IDE вызывает у меня ошибку:

s4s-elt-invalid-content.1: содержимое "#AnonType_entryyear" недопустимо. Элемент 'attribute' недопустим, смещен или встречается слишком часто.

В строке 11 я представляю первый атрибут под элементом "entry". Я обнаружил, что если я удаляю строку 10 ("simpleContent"), я получаю ту же ошибку, но в строке 13, где я вводю первый элемент в разделе "entry".

Я новичок в этом, и я немного подтрунивал в Интернете, но не могу понять, что случилось с моим кодом. Какие-нибудь мысли?

1 ответ

Решение

Существует ряд проблем с вашим XSD, в том числе

  • entry не имеет простого содержания. + Изменить xs:simpleContent вxs:sequence в xs:complexType,
  • Затем переместите xs:attribute декларации за пределами xs:sequence,
  • Удалить minOccurs от xs:anyAttribute,

Обратите внимание, что вы, вероятно, хотите удалить интервал, окружающий ваш атрибут = Знак - не обязателен, но выглядит довольно нетрадиционно и непоследовательно, как есть.

Вот ваш XSD полностью исправлен:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           targetNamespace="http://www.example.org/Elizabeth schema"
           xmlns:elz="http://www.example.org/Elizabeth_schema" 
           elementFormDefault="qualified">
  <xs:element name="year">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element name="entry">
          <xs:complexType mixed="true">
            <xs:sequence>
              <xs:element name="items" type="xs:string"/>
              <xs:element name="characters">
                <xs:complexType>
                  <xs:attribute name="character" type="xs:string"/>
                </xs:complexType>
              </xs:element>
              <xs:element name="eventscollection">
                <xs:complexType>
                  <xs:attribute name="type" type="xs:string"/>
                </xs:complexType>
              </xs:element>
              <xs:element name="entrytxt">
                <xs:complexType>
                  <xs:sequence>
                    <xs:any minOccurs="0"/>
                  </xs:sequence>
                  <xs:anyAttribute/>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="when" type="xs:string"/> 
            <xs:attribute name="place" type="xs:string"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
Другие вопросы по тегам