XML文件和相关联的dtd

XML file and dtd associated

本文关键字:dtd 关联 文件 XML      更新时间:2023-09-26

我在一个简单的xml文件练习中遇到了问题。这是名为"Newfile.XML"的XML文件

<?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>

这是一个相对的dtd文件,名为"student.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>

当我尝试使用Eclipse运行Newfile.xml时,它会说:"错误行14:文档中根元素后面的标记必须格式正确。"

错误在哪里?你能帮我吗?

我认为这是因为您的XML格式不正确——您有一个student元素的开始和结束标记,然后对另一个student元素也是如此,然后对students元素有结束标记

但是您没有students元素的打开标记。

顺便说一下,在第二个student元素中也有两个major元素,但是DTD指定只允许有一个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>