当前位置: 首页 > 知识库问答 >
问题:

例外:cvc复杂类型。2.4.b:元素“person”的内容不完整。应为{staff}中的一个

益绯辞
2023-03-14

Persons将显示根标签。每个人都有姓名、年龄、性别、地址的条目。一个人可以是学生也可以是教职员工。学生将有rollno、standard和section。如果是工作人员,则标记和主题。每个学生都必须有一个带有以下入口的地址-门牌号、街道、城市和州。管理员提出了一个XML文档。

以下是我的XML:

<?xml version="1.0" encoding="utf-8"?>
<persons>
    <person>
        <name>Tom</name>
        <age>11</age>
        <gender>M</gender>
        <address>
            <doorno>27</doorno>
            <street>Tony's road, koramangala</street>
            <city>Bangalore</city>
            <state>Karnataka</state>
        </address>
        <student>
            <rollno>10</rollno>
            <standard>6</standard>
            <section>A</section>
        </student>  
    </person>
    <person>
        <name>Shiny</name>
        <age>12</age>
        <gender>F</gender>
        <address>
            <doorno>10</doorno>
            <street>Main Bazar, Madiwala</street>
            <city>Bangalore</city>
            <state>Karnataka</state>
        </address>
        <staff>
            <staffid>123</staffid>
            <subject>Maths</subject>
        </staff>
    </person>
</persons>

还有我的XSD:

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

    <xs:element name="persons">
        <xs:complexType>
        <xs:sequence>
            <xs:element name="person" maxOccurs="unbounded">
                <xs:complexType>
                <xs:sequence>
                    <xs:element name="name" type="xs:string"/>
                    <xs:element name="age" type="xs:integer"/>
                    <xs:element name="gender" type="xs:string"/>
                    <xs:element name="address">
                        <xs:complexType>
                        <xs:sequence>
                            <xs:element name="doorno" type="xs:integer"/>
                            <xs:element name="street" type="xs:string"/>
                            <xs:element name="city" type="xs:string"/>
                            <xs:element name="state" type="xs:string"/>
                        </xs:sequence>
                        </xs:complexType>
                    </xs:element>



                    <xs:element name="student">
                        <xs:complexType>
                        <xs:sequence>
                            <xs:element name="rollno" type="xs:integer"/>
                            <xs:element name="standard" type="xs:integer"/>
                            <xs:element name="section" type="xs:string"/>
                        </xs:sequence>
                        </xs:complexType>
                    </xs:element>

                    <xs:element name="staff">
                        <xs:complexType>
                        <xs:sequence>
                            <xs:element name="staffid" type="xs:integer"/>
                            <xs:element name="subject" type="xs:string"/>
                        </xs:sequence>
                        </xs:complexType>
                    </xs:element>

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

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

</xs:schema>

我是XML的新手和学习者。

错误:

Exception: cvc-complex-type.2.4.b: The content of element 'person' is not comple te. One of '{staff}' is expected. 

共有1个答案

邵奇
2023-03-14

你的XSD说应该有

<xs:choice>
    <xs:element name="student">
        <xs:complexType>
        <xs:sequence>
            <xs:element name="rollno" type="xs:integer"/>
            <xs:element name="standard" type="xs:integer"/>
            <xs:element name="section" type="xs:string"/>
        </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="staff">
        <xs:complexType>
        <xs:sequence>
            <xs:element name="staffid" type="xs:integer"/>
            <xs:element name="subject" type="xs:string"/>
        </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:choice>

还请查看另一个答案:如何在XML模式中指定两个字段中的任何一个必须存在?

 类似资料: