Xml 为给定代码生成DTD
给定的代码是:Xml 为给定代码生成DTD,xml,dtd,Xml,Dtd,给定的代码是: <?xml version="1.0" encoding="UTF-8"?> <student id="12C042"> <fName>John</fName> <lName>Nelson</lName> <plan> <courses year="3"> <course> <name> Exte
<?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>
您当前对
课程
的声明表示课程
允许零次或一次(这就是?
的意思)
您的XML有两个course
元素
您需要将声明更改为允许课程
零次或多次(*
)或一次或多次(+
)
例如
<!ELEMENT courses (course)*>
元素类型
课程的内容必须匹配(课程)
,错误是由于代码不匹配。
此?
允许记录在xml
中出现零次或一次,因为它不会出现在第二个课程标签中。
因此,要解决此错误,请将课程dtd设置为
<!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 #REQUIRED>
试试这个,它会有用的
<!ELEMENT student (fName,lName,plan*)>
<!ELEMENT fName (#PCDATA)>
<!ELEMENT lName (#PCDATA)>
<!ELEMENT plan (courses*)>
<!ELEMENT courses (course+)>
<!ELEMENT course (name,shortName,record?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT shortName (#PCDATA)>
<!ELEMENT record (grade,date)>
<!ELEMENT grade (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ATTLIST student id NMTOKEN #REQUIRED>
<!ATTLIST courses year CDATA #REQUIRED>
课程在DTD中定义了两次。这显然是不允许的,正如错误消息所说。我删除了现在显示给我的行。错误:Public ID:null系统ID:file:/home/p13290/student.xml行号:20列号:13消息:元素类型“courses”必须匹配(课程)的内容。错误虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
<!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 #REQUIRED>
<!ELEMENT student (fName,lName,plan*)>
<!ELEMENT fName (#PCDATA)>
<!ELEMENT lName (#PCDATA)>
<!ELEMENT plan (courses*)>
<!ELEMENT courses (course+)>
<!ELEMENT course (name,shortName,record?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT shortName (#PCDATA)>
<!ELEMENT record (grade,date)>
<!ELEMENT grade (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ATTLIST student id NMTOKEN #REQUIRED>
<!ATTLIST courses year CDATA #REQUIRED>