2015-11-30 97 views
1

我有一個簡單的xml文件練習的問題。 這就是所謂的 「Newfile.xml」XML文件和dtd關聯

<?xml version="1.0" encoding="UTF-8"?> 
 
<?xml-stylesheet type="text/xsl" href="students.xsl"?> 
 
<!DOCTYPE students SYSTEM "student.dtd"> 
 
    <student id="100026"> 
 
    <name>Joe Average</name> 
 
    <age>21</age> 
 
    <major>Biology</major> 
 
    <results> 
 
     <result course="Math 101" grade="C-"/> 
 
     <result course="Biology 101" grade="C+"/> 
 
     <result course="Statistics 101" grade="D"/> 
 
    </results> 
 
    </student> 
 
    <student id="100078"> 
 
    <name>Jack Doe</name> 
 
    <age>18</age> 
 
    <major>Physics</major> 
 
    <major>XML Science</major> 
 
    <results> 
 
     <result course="Math 101" grade="A"/> 
 
     <result course="XML 101" grade="A-"/> 
 
     <result course="Physics 101" grade="B+"/> 
 
     <result course="XML 102" grade="A"/> 
 
    </results> 
 
    </student> 
 
</students>

的XML文件,這就是所謂的 「student.dtd」,並放在同一個目錄的相對DTD文件

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

 
<!ELEMENT students (student+)> 
 

 
<!ELEMENT student (name,age,major,results)> 
 
<!ATTLIST student id CDATA #REQUIRED> 
 

 
<!ELEMENT name (#PCDATA)> 
 
<!ELEMENT age (#PCDATA)> 
 
<!ELEMENT major (#PCDATA)> 
 
<!ELEMENT results (result+)> 
 

 

 
<!-- <!ELEMENT result (grade,course)> --> 
 
<!ELEMENT result (#PCDATA)> 
 
<!ATTLIST result grade CDATA #REQUIRED> 
 
<!ATTLIST result course CDATA #REQUIRED>

當我嘗試使用Ecl運行Newfile.xml ipse它說: 「錯誤行14: 根元素後面的文檔中的標記必須格式良好。」

錯誤在哪裏? 你能幫我嗎?

+0

那麼,你有沒有發現我的回答有用呢? –

回答

0

我想這是因爲你的XML的格式不正確 - 你有一個student元素再次爲另一student元素的開始和結束標記,那麼同樣的,然後你有關閉標籤students元素。

但是您沒有students元素的開始標記。順便提一下,第二個student元素中也有2個major元素,但是您的DTD指定只允許使用1個major元素。

試試下面,根據您的DTD是有效的:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="students.xsl"?> 
<!DOCTYPE students SYSTEM "student.dtd"> 
<students> 
    <student id="100026"> 
    <name>Joe Average</name> 
    <age>21</age> 
    <major>Biology</major> 
    <results> 
     <result course="Math 101" grade="C-"/> 
     <result course="Biology 101" grade="C+"/> 
     <result course="Statistics 101" grade="D"/> 
    </results> 
    </student> 
    <student id="100078"> 
    <name>Jack Doe</name> 
    <age>18</age> 
    <major>Physics</major> 
    <results> 
     <result course="Math 101" grade="A"/> 
     <result course="XML 101" grade="A-"/> 
     <result course="Physics 101" grade="B+"/> 
     <result course="XML 102" grade="A"/> 
    </results> 
    </student> 
</students> 
+0

好的謝謝你的解決方案:) –