2017-07-07 111 views
1

我必須從這個圖生成XML和XSD:錯誤:XML文檔的文件過早結束?

diagram

但是一個錯誤:文件過早結束彈出。 我還遇到另一個錯誤:xsd:所有必須以結束標記終止 我的代碼是否正確?

實體關係約束:

1. A theater can have at least 1 screen but not more than 3. 
2. A screen may have many shows and sometimes it may not have any show. 
    show-time example - 10 AM, 12 PM etc. 
3. A show has information on the movie which has the director name, title 
    and the release date which can occur in any order. 
4. A movie will have actors and actors may have many actor's name. 

代碼:

<?xml version="1.0" encoding="UTF-8"?> 
<theater> 
<name>rajat</name> 
<address>mumbai</address> 
<phone>987654</phone> 
    <screen> 
     <seats>30</seats> 
     <width>30</width> 
      <show> 
       <show-time>10 AM</show-time> 
        <movie> 
         <director>jade</director> 
         <title>game</title> 
         <release-date>10/10/2017</release-date> 
          <actors> 
           <name>james</name> 
           <name>aaron</name> 
          </actors> 
        </movie> 
      </show> 
    </screen> 
</theater> 

XSD:

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="https://www.w3.org/2001/XMLSchema" 
attributeFormDefault="unqualified" elementFormDefault="qualified"> 
<xsd:element name="theater"> 
<xsd:complexType> 
<xsd:sequence> 
    <xsd:element name="name" type="xsd:string"/> 
    <xsd:element name="address" type="xsd:string"/> 
    <xsd:element name="phone" type="xsd:long"/> 
    <xsd:element name="screen" maxOccurs="3"/>     
<xsd:complexType> 
<xsd:sequence> 
    <xsd:element name="seats" type="xsd:byte"/> 
    <xsd:element name="width" type="xsd:byte"/> 
    <xsd:element name="show" minOccurs="0"/> 
<xsd:complexType> 
<xsd:sequence> 
    <xsd:element name="show-time" type="xsd:string" maxOccurs="unbounded" 
    minOccurs="0"/> 
    <xsd:element name="movie"/> 
<xsd:complexType> 
<xsd:all> 
    <xsd:element name="director" type="xsd:string"/> 
    <xsd:element name="title" type="xsd:string"/> 
    <xsd:element name="release-date" type="xsd:string"/> 
    <xsd:element name="actors"/> 
<xsd:complexType> 
<xsd:sequence> 
    <xsd:element name="name" type="xsd:string" maxOccurs="unbounded" 
    minOccurs="0"/> 
</xsd:sequence> 
</xsd:complexType> 
</xsd:element> 
</xsd:all> 
</xsd:complexType> 
</xsd:element> 
</xsd:sequence> 
</xsd:complexType> 
</xsd:element> 
</xsd:sequence> 
</xsd:complexType> 
</xsd:element> 
</xsd:sequence> 
</xsd:complexType> 
</xsd:element> 
</xsd:schema> 
+0

您的XML有效,如果這就是您要求的。你還沒有提供應該讀取它的代碼。 –

+0

我也添加了xsd。基本上我必須生成XML以及XSD – Jade

+1

您的XSD不*有效。使用高亮和正確縮進的編輯器。你有幾個不匹配的開/關標籤。 –

回答

0

第一:

xmlns:xsd="https://www.w3.org/2001/XMLSchema" 

反而應該

xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

二:

<xsd:element name="screen" maxOccurs="3"/> 
     <xsd:complexType> 

反而應該

<xsd:element name="screen" maxOccurs="3"> 
     <xsd:complexType> 

上述類型的錯誤發生在多個地方。

三:

最後,使用XML編輯器和平衡你的結束標記。


總之,這裏是你的XSD固定在語法上是有效的:

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      attributeFormDefault="unqualified" elementFormDefault="qualified"> 
    <xsd:element name="theater"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="name" type="xsd:string"/> 
     <xsd:element name="address" type="xsd:string"/> 
     <xsd:element name="phone" type="xsd:long"/> 
     <xsd:element name="screen" maxOccurs="3"> 
      <xsd:complexType> 
      <xsd:sequence> 
       <xsd:element name="seats" type="xsd:byte"/> 
       <xsd:element name="width" type="xsd:byte"/> 
       <xsd:element name="show" minOccurs="0"> 
       <xsd:complexType> 
        <xsd:sequence> 
        <xsd:element name="show-time" type="xsd:string" 
           maxOccurs="unbounded" 
           minOccurs="0"/> 
        <xsd:element name="movie"> 
         <xsd:complexType> 
         <xsd:all> 
          <xsd:element name="director" type="xsd:string"/> 
          <xsd:element name="title" type="xsd:string"/> 
          <xsd:element name="release-date" type="xsd:string"/> 
          <xsd:element name="actors"> 
          <xsd:complexType> 
          <xsd:sequence> 
           <xsd:element name="name" type="xsd:string" 
              maxOccurs="unbounded" 
              minOccurs="0"/> 
          </xsd:sequence> 
          </xsd:complexType> 
          </xsd:element> 
         </xsd:all> 
         </xsd:complexType> 
        </xsd:element> 
        </xsd:sequence> 
       </xsd:complexType> 
       </xsd:element> 
      </xsd:sequence> 
      </xsd:complexType> 
     </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

驗證對你的XML文檔作爲一個練習爲你做。

+0

愚蠢的錯誤從我身邊。感謝您的幫助。我現在已經解決了這個問題:) – Jade