web-dev-qa-db-ja.com

XML検証:「この時点では子要素は想定されていません」

私は与えられたXMLファイルに従ってXSD文法を開発しようとしています。与えられた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>

this XML validator を使用して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'.

itemList.xsdcomplexTypeを書き換える必要があるようですが、どうすればよいかわかりません。助けてくれる人に感謝します。

15
goldfrapp04

現在、itemListは1つのアイテムで構成されています。これは、デフォルトのパーティクルカーディナリティが1であるためです(minOccurs = maxOccurs = 1)。

複数必要な場合は、適切な数のmaxOccurs属性を追加する必要があります。無制限の場合は、maxOccurs = "unbounded" ...を次のように使用します。

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

私の場合、XMLのフィールドの順序がXSDのフィールドの順序と一致していないためにこのメッセージが表示されましたが、最後の2つのフィールドの順序を誤って逆にしました。

これは問題の状況ではありませんが、この質問にタイトルで引き付けられる他の人を助けるかもしれないと思いました(間違いなく、私が今学んだことを忘れたときに、この質問を将来再び参照します)。

12
DaveRlz