2015-11-30 100 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

好的谢谢你的解决方案:) –