产生DTD对于一个给定的代码
问题描述:
给定的代码是:产生DTD对于一个给定的代码
<?xml version="1.0" encoding="UTF-8"?>
<student id="12C042">
<fName>John</fName>
<lName>Nelson</lName>
<plan>
<courses year="3">
<course>
<name> Extensible Markup Language</name>
<shortName>XML</shortName>
<record>
<grade>30</grade>
<date>12-Jan-2017</date>
</record>
</course>
<course>
<name>Object Oriented Concepts and Unified Modeling Language</name>
<shortName><![CDATA[OOP & UML]]></shortName>
</course>
</courses>
</plan>
</student>
我需要生成这样的一个DTD XML文件。
我做了一个代码:
<!ELEMENT student (fName,lName,plan)>
<!ELEMENT fName (#PCDATA)>
<!ELEMENT lName (#PCDATA)>
<!ELEMENT plan (courses)>
<!ELEMENT courses (course?)>
<!ELEMENT course (name,shortName*,record*)>
<!ELEMENT name ANY>
<!ELEMENT shortName ANY>
<!ELEMENT record (grade,date)>
<!ELEMENT grade ANY>
<!ELEMENT date ANY>
<!ATTLIST student id NMTOKEN #REQUIRED>
<!ATTLIST courses year CDATA #IMPLIED>
它扔我一个错误:
Error:
Public ID: null
System ID: file:/home/p/student.xml
Line number: 20
Column number: 13
Message: The content of element type "courses" must match "(course)".
error
答
您当前的courses
声明说,course
允许零个或一个时间(这是什么?
手段)。
您的XML有两个course
元素。
您需要将声明更改为允许course
零次或多次(*
)或一次或多次(+
)。
例...
<!ELEMENT courses (course)*>
课程是你的DTD定义两次。这显然是不允许的,因为错误消息说。 – Markus
我删除了这行现在显示给我。错误: 公共ID:null 系统ID:file:/home/p13290/student.xml 行号:20 列号:13 消息:元素类型“courses”的内容必须匹配“(course)”。 错误 –