Проверка XML: "На данный момент не ожидается никакого дочернего элемента"

Я пытаюсь разработать грамматику XSD в соответствии с данным XML файлом. Данный XML файл itemList.xml показан ниже.

<?xml version="1.0" encoding = "utf-8"?>
<itemList 
    xmlns="http://www.w3schools.com" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://www.w3schools.com  itemList.xsd" >
     <item>spoon</item>  
     <item>knife</item>
     <item>fork</item>  
     <item>cup</item>
</itemList>

Созданный мной файл itemList.xsd показан ниже.

<schema 
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:co="http://www.w3schools.com"
    targetNamespace="http://www.w3schools.com" 
    elementFormDefault="qualified">
<simpleType name="itemType">
    <restriction base="string"/>
</simpleType>
<complexType name="itemListType">
    <sequence>
        <element name="item" type="co:itemType"/>
    </sequence>
</complexType>
<element name="itemList" type="co:itemListType"/>
</schema>

Когда я проверяю XML на XSD с помощью этого механизма проверки XML, я получаю сообщение об ошибке

Cvc-complex-type.2.4.d: Invalid Content Was Found Starting With Element 'item'. No Child Element Is Expected At This Point.. Line '6', Column '12'.

Кажется, что я должен переписать мой complexType в itemList.xsd, но я не уверен, что делать. Большое спасибо тому, кто мог бы помочь.

Ответ 1

В настоящее время ваш itemList состоит только из одного элемента; это потому, что мощность частиц по умолчанию равна 1 (minOccurs = maxOccurs = 1).

Если вам нужно больше одного, вам нужно добавить атрибут maxOccurs с соответствующим номером; для неограниченного использования maxOccurs = "unbounded"... так:

<element name="item" type="co:itemType" maxOccurs="unbounded"/>

Ответ 2

В моем случае я получил это сообщение, потому что упорядочение полей в моем XML не соответствует тем, что было в моем XSD, я ошибочно изменил порядок двух последних полей.

Хотя это не та ситуация в вопросе, я думал, что это может помочь другим, которые обращаются к этому вопросу по названию (несомненно, я снова буду ссылаться на этот вопрос в будущем, когда я забуду то, что только что узнал).