从foll到XML的XSD。 ER图

时间:2017-06-20 16:10:07

标签: xml xsd

为此enter image description here

生成XML

我的Xml:

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

<company>
    <companyname>ABC company</companyname>
    <address>xyz street, India.</address>

    <department>
        <dname>Marketing</dname>
        <deptphoneno>9876543210</deptphoneno>
        <deptfaxno>0442456879</deptfaxno>
        <deptemail>marketing@abc.com</deptemail>

        <employee>
            <empid>101</empid>
            <ename>Rishie</ename>
            <emailid>rishie@abc.com</emailid>
            <phoneno>9876543211</phoneno>
        </employee>

        <contractemployee>
            <name>Ravi</name>
            <phoneno>9874563214</phoneno>
        </contractemployee>
    </department>

</company>   

和我的XSD:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="company">
     <xs:complexType>
      <xs:sequence>
       <xs:element name="companyname" type="xs:string"/>
       <xs:element name="address" type="xs:string"/>

       <xs:element name="department">
        <xs:complexType>
         <xs:sequence>
          <xs:element name="dname" type="xs:string"/>
          <xs:element name="deptphoneno" type="xs:integer"/>
          <xs:element name="deptfaxno" type="xs:integer"/>
          <xs:element name="deptemail" type="xs:string"/>

          <xs:element name="employee">      
           <xs:complexType>
            <xs:sequence>
             <xs:element name="empid" type="xs:integer"/>
             <xs:element name="ename" type="xs:string"/>
             <xs:element name="emailid" type="xs:string"/>
             <xs:element name="phoneno" type="xs:integer"/>
            </xs:sequence>
           </xs:complexType>
          </xs:element>


          <xs:element name="contractemployee">      
           <xs:complexType>
            <xs:sequence>
             <xs:element name="name" type="xs:string"/>
             <xs:element name="phoneno" type="xs:integer"/>
            </xs:sequence>
           </xs:complexType>
          </xs:element>

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

</xs:schema>

我知道乍一看一切看起来都正确......但我一直都会遇到一些错误!我希望有人可以帮我解决这个问题! 我不确定它是xml还是xsd。

错误:

Exception: cvc-complex-type.2.4.a: Invalid content was found starting with eleme
nt 'employee'. One of '{contractemployee}' is expected.

请使用我的XSD中的<xs:schema>标记和xml中的<company>来帮助我。

2 个答案:

答案 0 :(得分:1)

***XML file-***
<?xml version="1.0" encoding="UTF-8"?>
<company>
 <companyname>ABC</companyname>
 <address>Mumbai</address>
 <department>
    <dname>IT</dname>
    <deptphoneno>123</deptphoneno>
    <deptfaxno>456</deptfaxno>
    <deptemail>abc@gmail.com</deptemail>
    <employee>
        <empid>8</empid>
        <ename>xyz</ename>
        <emailid>xyz@gmail.com</emailid>
        <phoneno>789</phoneno>
    </employee>
  </department>
  <department>
    <dname>EE</dname>
    <deptphoneno>789</deptphoneno>
    <deptfaxno>901</deptfaxno>
    <deptemail>mno@gmail.com</deptemail>
    <employee>
        <empid>9</empid>
        <ename>abc</ename>
        <emailid>pqr@gmail.com</emailid>
        <phoneno>567</phoneno>
    </employee>
    <contractemployee>
        <name>asd</name>
        <phoneno>234</phoneno>
    </contractemployee>
  </department>
</company>


***XSD file***
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="company">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="companyname" type="xs:string"/>
            <xs:element name="address" type="xs:string"/>

            <xs:element name="department" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="dname" type="xs:string"/>
                    <xs:element name="deptphoneno" type="xs:integer"/>
                    <xs:element name="deptfaxno" type="xs:integer"/>
                    <xs:element name="deptemail" type="xs:string"/>

                    <xs:element name="employee" maxOccurs="unbounded">
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element name="empid" type="xs:integer"/>
                            <xs:element name="ename" type="xs:string"/>
                            <xs:element name="emailid" type="xs:string"/>
                            <xs:element name="phoneno" type="xs:integer"/>
                          </xs:sequence> 
                        </xs:complexType>
                    </xs:element>

                    <xs:element name="contractemployee" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element name="name" type="xs:string"/>
                            <xs:element name="phoneno" type="xs:integer"/>
                          </xs:sequence> 
                        </xs:complexType>
                    </xs:element>

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

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

答案 1 :(得分:0)

您的XML对您的XSD有效。

问题中的错误消息不是由您在问题中使用XSD验证XML而产生的。

重新检查您发布的内容与您正在使用的内容之间的区别,这会给您带来问题。

另见