12

どちらも正しく検証されるxmlファイルとxsdファイルがあります( http://xsdvalidation.utilities-online.info/でテスト済み)。

ただし、xml は xsd に対して検証されません。これは、xml と比較して、xsd で complexType 要素を誤ってネストしているためだと思います。の外側の要素がpeople問題を引き起こしているようです...これ

がxmlです:

<?xml version = "1.0"?>

<people>
    <person>
        <firstname>Joe</firstname>
        <lastname>Schmoe</lastname>
    </person>

    <person>
        <firstname>Cletus</firstname>
        <lastname>Jenkins</lastname>
    </person>
</people>

...そしてここにxsdがあります:

<?xml version = "1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name = "people">
        <xs:complexType>
            <xs:sequence>

                <xs:element name = "person">
                    <xs:complexType>
                        <xs:sequence>

                            <xs:element name = "firstname" type = "xs:string" />
                            <xs:element name = "lastname" type = "xs:string" />

                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>
4

2 に答える 2

13

maxOccurs="unbounded"「person」という名前の要素に追加します。これは、1つ以上の人物要素のシーケンスです。

注:maxOccursは小文字ではなくlowerCamelCaseで記述してください

于 2012-06-22T00:23:08.483 に答える
4

XSDでこれを試してください。

<?xml version = "1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="people" type="people"/>

    <xs:complexType name="people">
        <xs:sequence>
            <xs:element name="person" type="person" maxOccurs="unbounded" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="person">
        <xs:sequence>
            <xs:element name="firstname" type="xs:string" maxOccurs="1" minOccurs="1"/>
            <xs:element name="lastname" type="xs:string" maxOccurs="1" minOccurs="1"/>
       </xs:sequence>
    </xs:complexType>

</xs:schema>
于 2012-06-22T00:23:20.210 に答える