cvc-complex-type.4: атрибут {0} должен присутствовать в элементе {1}

Я новичок в XML и пытаюсь проверить XML с соответствующим XSD, но сталкивается с ошибкой:

cvc-complex-type.4: атрибут 'Companyname' должен присутствовать в элементе 'company'

Хотя я уже добавил название компании в xml и xsd. Что может быть причиной этой ошибки. Любая помощь / предложение?

XML:

<?xml version="1.0" encoding="utf-8"?>
<company Companyname="abc" address="hj" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="companyxsd.xsd" >
    <department dname="dfsdf" deptphoneno="1232321" deptfaxno="2323" deptemail="fefsf">
        <employee empid="fsd" ename="fuehuf" emailid="fhueh" phoneno="364764"> </employee>
        <employee empid="fsd" ename="fuehuf" emailid="fhueh" phoneno="364764"> </employee>
        <contractEmployee name="fdsf" phoneno="12345"> </contractEmployee>
    </department>
</company>

companyxsd.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
        <xs:element name="company" type="comType"/>
        <xs:complexType name="comType">
                <xs:sequence>
                    <xs:element name="department" type="deptType"/>
                </xs:sequence>
                <xs:attribute type="xs:string" name="Companyname" use="required"/>
                <xs:attribute type="xs:string" name="address" use="required"/>
        </xs:complexType>
        <xs:complexType name="deptType">
                <xs:sequence>
                    <xs:element name="employee" type="empType" minOccurs="1" maxOccurs="unbounded"/>
                    <xs:element name="contractEmployee" type="conType" minOccurs="0" maxOccurs="unbounded"/>
                </xs:sequence>
                <xs:attribute type="xs:string" name="dname" use="required"/>
                <xs:attribute type="xs:integer" name="deptphoneno" use="required"/>
                <xs:attribute type="xs:integer" name="deptfaxno" use="required"/>
                <xs:attribute type="xs:string" name="deptemail" use="required"/>
        </xs:complexType>
        <xs:complexType name="empType">
                <xs:attribute type="xs:string" name="empid" use="required"/>
                <xs:attribute type="xs:string" name="ename" use="required"/>
                <xs:attribute type="xs:string" name="emailid" use="required"/>
                <xs:attribute type="xs:integer" name="phoneno" use="required"/>
        </xs:complexType>
        <xs:complexType name="conType">
                <xs:attribute type="xs:string" name="name" use="required"/>
                <xs:attribute type="xs:integer" name="phoneno" use="required"/>
        </xs:complexType>
</xs:schema>

ER ДИАГРАММА

1 ответ

Решение

Ваш XML содержит ряд ошибок. Он не правильно сформирован (начальные теги не соответствуют конечным тегам) и содержит ряд нарушений по отношению к вашей схеме (employee а также contractEmployee теги должны быть пустыми).

Я очистил ваш XML:

<?xml version="1.0" encoding="utf-8"?>
<company Companyname="abc" address="hj" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <department dname="dfsdf" deptphoneno="1232321" deptfaxno="2323" deptemail="fefsf">
        <employee empid="fsd" ename="fuehuf" emailid="fhueh" phoneno="364764"/>
        <employee empid="fsd" ename="fuehuf" emailid="fhueh" phoneno="364764"/>
        <contractEmployee name="fdsf" phoneno="12345"/>
    </department>
</company>

Это правильно проверяет вашу схему, что можно проверить, например, на этом сайте.

Любые дальнейшие проблемы, которые могут у вас возникнуть, связаны с тем, как вы выполняете проверку, а не с содержимым XML или XSD.

Другие вопросы по тегам