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>