XML定义和使用DTD
Posted 我永远信仰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML定义和使用DTD相关的知识,希望对你有一定的参考价值。
如果加入了DTD那么在写xml的时候就会有提示、有模板了,非常的友好!
一、实验目的:
1.定义内部DTD
2.定义外部DTD
三、实验内容:
分别使用内部和外部DTD完成如图表格的xml
使用xml描述表中学生的成绩信息。
1、内部DTD
完整代码:格式良好,有效的xml
<?xml version="1.0" encoding="UTF-8" ?>
<!--声明内部DTD-->
<!DOCTYPE scores[
<!ELEMENT scores (student+)>
<!ELEMENT student (name,course,score)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
]>
<scores>
<student id="1">
<name>王同</name>
<course>java</course>
<score>89</score>
</student>
<student id="2">
<name>李佳</name>
<course>sql</course>
<score>58</score>
</student>
</scores>
代码解释:
1)内部DTD定义:
<!DOCTYPE scores [
...
...
]>
语法如下
<!DOCTYPE 根元素 [元素声明]>
2)元素声明语法:
<!ELEMENT 元素名 (子元素[,子元素…])
文中代码:
<!ELEMENT scores (student+)>
声明了根标签下的一个student元素,该元素必须出现
3)数量词
<!ELEMENT scores (student+)>
(student+)
表示student标签必须要出现至少一次
- +:表示出现1~n次,至少1次
- ?:表示出现0次或一次
- *:表示出现任意次
4)属性声明语法
<!ATTLIST 元素名称 属性名称 属性类型 默认值> <!ATTLIST student id CDATA #REQUIRED> 定义了 student 标签 的一个名为id的属性,且必须要有
- 属性类型:CDATA,表示字符数据(character data)
默认值:
- - #REQUIRED,表示必须出现的
- - #IMPLIED,表示不是必须的
<!ELEMENT course (#PCDATA)> # PCDATA表示元素的内容只能是可解析的文本,不能再出现标签了。 比如 <course> <abc></abc> </course> 会报错
注意:
2、外部DTD
完整代码:
<?xml version="1.0" encoding="UTF-8" ?> <!--引入外部 DTD--> <!DOCTYPE scores SYSTEM "dtd/score.dtd"> <scores> <student id="1"> <name>王同</name> <course>java</course> <score>89</score> </student> <student id="2"> <name>李佳</name> <course>sql</course> <score>58</score> </student> </scores>
1)在同级文件夹dtd目录下创建一个独立的score文件,后缀名为.dtd。
2)在里面编写DTD内容,和在xml内部写的完全一样,只是不需要DOUTYPE标签了,因为DOUTYPE标签属于是xml里的标签。score.dtd内容:
<?xml version="1.0" encoding="utf-8" ?> <!ELEMENT scores (student+)> <!ELEMENT student (name,course,score)> <!ATTLIST student id CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT course (#PCDATA)> <!ELEMENT score (#PCDATA)>
代码解释:
引用外部的DTD文件
在xml的序言区添加,格式为:<!DOCTYPE 根元素 SYSTEM "文件名">
如果dtd文件和xml文件不在同级目录下,需要用上相对路径,比如我的score.dtd是在dtd目录下
<!DOCTYPE scores SYSTEM "dtd/score.dtd">
以上是关于XML定义和使用DTD的主要内容,如果未能解决你的问题,请参考以下文章