2017-07-06 40 views
0

我必須從實體關係圖生成XML和XSD。我的XML是正確的,但我無法驗證通過此XML文檔生成的XSD,因爲它拋出了一個錯誤:發現無效內容以元素'employee'開始。預計會有'{contractemployee}'之一。從元素'employee'開始找到無效內容。其中一個'{contractemployee}'預計

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<company> 
<companyname>capgemini</companyname> 
<address>mumbai</address> 
    <department> 
     <dname>software</dname> 
     <deptphoneno></deptphoneno> 
     <deptfaxno>0447654321</deptfaxno> 
     <deptemail>[email protected]</deptemail> 
      <employee> 
       <empid>101</empid> 
       <ename>rajat</ename> 
       <emailid>[email protected]</emailid> 
       <phoneno>9876543211</phoneno> 
      </employee> 
      <contractemployee> 
       <name>jade</name> 
       <phoneno>9882507167</phoneno> 
      </contractemployee> 
    </department> 
</company> 

XSD:

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
    <xsd:element name="company"> 
     <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="companyname" type="xsd:string"/> 
      <xsd:element name="address" type="xsd:string"/> 
      <xsd:element name="department"> 
       <xsd:complexType> 
        <xsd:sequence> 
         <xsd:element name="dname" type="xsd:string"/> 
         <xsd:element name="deptphoneno" type="xsd:long"/> 
         <xsd:element name="deptfaxno" type="xsd:int"/> 
         <xsd:element name="deptemail" type="xsd:string"/> 
         <xsd:element name="employee"> 
          <xsd:complexType> 
           <xsd:sequence> 
            <xsd:element name="empid" type="xsd:int"/> 
            <xsd:element name="ename" type="xsd:string"/> 
            <xsd:element name="emailid" type="xsd:string"/> 
            <xsd:element name="phoneno" type="xsd:long"/> 
           </xsd:sequence> 
          </xsd:complexType> 
         </xsd:element> 
         <xsd:element name="contractemployee"> 
          <xsd:complexType> 
           <xsd:sequence> 
            <xsd:element name="name" type="xsd:string"/> 
            <xsd:element name="phoneno" type="xsd:long"/> 
           </xsd:sequence> 
          </xsd:complexType> 
         </xsd:element> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
</xsd:schema> 

回答

1

你是相當接近的答案。根據E-R圖,部門與員工之間存在1個多項強制關係,而部門與合同員工之間存在1個多項選擇關係。每當有可選關係時,我們使用minOccurs =「0」。

我發佈了兩個XML & XSD,以便您更好地理解它。 XML

<?xml version="1.0" encoding="UTF-8"?> 
<company 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation='companyxsd.xsd'> 
    <companyname>Capgemini</companyname> 
    <address>Mumbai</address> 
    <department> 
     <dname>Operations</dname> 
     <deptphoneno>987610</deptphoneno> 
     <deptfaxno>223654</deptfaxno> 
     <deptemail>[email protected]</deptemail> 
     <employee> 
      <empid>20</empid> 
      <ename>Mukesh</ename> 
      <emailid>[email protected]</emailid> 
      <phoneno>967642</phoneno> 
     </employee> 
     <contractemployee> 
      <name>Ramesh</name> 
      <phoneno>25643</phoneno> 
     </contractemployee> 
    </department> 
</company> 

該XML的XSD: XSD

<?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> 
<xs:element name="address" type="xs:string"></xs:element> 
<xs:element name="department" maxOccurs="unbounded"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="dname" type="xs:string"></xs:element> 
<xs:element name="deptphoneno" type="xs:long"></xs:element> 
<xs:element name="deptfaxno" type="xs:long"></xs:element> 
<xs:element name="deptemail" type="xs:string"></xs:element> 


<xs:element name="employee" maxOccurs="unbounded"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="empid" type="xs:int"></xs:element> 
<xs:element name="ename" type="xs:string"></xs:element> 
<xs:element name="emailid" type="xs:string"></xs:element> 
<xs:element name="phoneno" type="xs:long"></xs:element> 
</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> 
<xs:element name="phoneno" type="xs:long"></xs:element> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 

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

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

希望這有助於你:)

+0

1-多可選只有一部分在那裏我沒有支付多多關注:P 感謝您的幫助:) – Jade

相關問題