从元素开始找到无效的内容

时间:2016-06-01 21:20:35

标签: java xml xsd schema

我写错了xml和xsd。 我写了students.xsd:

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema attributeFormDefault="unqualified"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified">
    <xs:element name="students">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="student">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="name">
                                <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:element name="faculty">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="fkp"/>
                                        <xs:enumeration value="fitu"/>
                                        <xs:enumeration value="fre"/>
                                        <xs:enumeration value="fksis"/>
                                        <xs:enumeration value="ftk"/>
                                        <xs:enumeration value="fnido"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="address">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="country">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:string">
                                                    <xs:minLength value="2"/>
                                                    <xs:maxLength value="20"/>
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:element>
                                        <xs:element name="city">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:string">
                                                    <xs:minLength value="2"/>
                                                    <xs:maxLength value="20"/>
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:element>
                                        <xs:element name="street">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:string">
                                                    <xs:minLength value="2"/>
                                                    <xs:maxLength value="30"/>
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="phone">
                                <xs:simpleType>
                                    <xs:restriction base="xs:positiveInteger">
                                        <xs:length value="6"/>
                                        <xs:pattern value="[0-9]"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:int" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

我有文件students.xml:

<?xml version="1.0" encoding="utf-8" ?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="students.xsd">
    <student id="1">
        <name>
            <firstName>Ivan</firstName>
            <lastName>Ivanov</lastName>
        </name>
        <faculty>fksis</faculty>
        <address>
            <country>Belarus</country>
            <city>Minsk</city>
            <street>Rokossovskogo 24</street>
        </address>
        <phone>6677088</phone>
    </student>
    <student id="2">
        <name>
            <firstName>Petr</firstName>
            <lastName>Petrov</lastName>
        </name>
        <faculty>fre</faculty>
        <address>
            <country>Belarus</country>
            <city>Mogilev</city>
            <street>Leninskaya 25</street>
        </address>
        <phone>5467043</phone>
    </student>
</students>

在students.xml中我有错误(从元素&#39开始发现无效内容;学生&#39;。此时不会有子元素。)部分:

<student id="2">
        <name>
            <firstName>Petr</firstName>
            <lastName>Petrov</lastName>
        </name>
        <faculty>fre</faculty>
        <address>
            <country>Belarus</country>
            <city>Mogilev</city>
            <street>Leninskaya 25</street>
        </address>
        <phone>5467043</phone>
    </student>

有什么问题?如何更正此错误? 谢谢!

1 个答案:

答案 0 :(得分:1)

您的架构设置方式,默认只允许一个&#34;学生&#34;元素&#34;学生&#34;。如果你想要一个或多个学生元素,你应该将maxOccurs设置为unbounded。

<xs:element name="student" maxOccurs="unbounded">

(如果省略,maxOccurs默认为1)