2017-07-06 13 views
0

エンティティ関係図からXMLとXSDを生成する必要があります。私のXMLは正しいですが、というエラーをスローするので、このXML文書で生成されたXSDを検証することはできません。要素 'employee'で始まる無効な内容が見つかりました。 「契約者」のいずれかが予想されます。要素 'employee'で始まる無効なコンテンツが見つかりました。 'contractemployee'の1つが期待されます

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 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この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

関連する問題