DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。
它使用一系列的合法元素来定义文档结构。
以上是官方发言。
DTD引入范例
用mybatis开发应该算是主流吧,最近心血来潮,研究了下mapper的xml文件。上图
在mapper的xml文件中,输入<会自动弹出提示,那这些提示是哪来的呢?
就是每个文件中下面这句话,从官方mybatis-3-mapper.dtd文件中引入。
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
- 1
DTD测试代码
说干就干,写了点测试代码试了试dtd的引入,话不多说上代码。
dtd文件代码
<!ELEMENT 班级 (学生+,老师+,年级)> <!--元素 +号代表可以有多个--> <!ELEMENT 学生 (名字,性别,年龄,介绍,爱好*,电话?,成绩)><!--元素 *号代表可以有多个 ?号表示非必填--> <!ELEMENT 老师 (名字,电话?)> <!ELEMENT 年级 (一年级|二年级)><!--元素 |表示二选一 --> <!ELEMENT 名字 (#PCDATA)> <!ELEMENT 性别 (#PCDATA)> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 介绍 (#PCDATA)> <!ELEMENT 爱好 (#PCDATA)> <!ELEMENT 电话 (#PCDATA)> <!ELEMENT 成绩 (语文,数学,英语)> <!ELEMENT 语文 (#PCDATA)> <!ELEMENT 数学 (#PCDATA)> <!ELEMENT 英语 (#PCDATA)> <!ELEMENT 一年级 (#PCDATA)> <!ELEMENT 二年级 (#PCDATA)> <!ATTLIST 一年级 年级主任 CDATA #REQUIRED><!--属性 REQUIRED是必须的--> <!ATTLIST 一年级 年级组长 CDATA #IMPLIED><!--属性 IMPLIED是非必须的-->
xml文件代码
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE 班级 SYSTEM "dtdTest.dtd"><!--引入dtd文件 --> <班级> <学生> <名字>小梁</名字> <性别>男</性别> <年龄>23</年龄> <介绍>校体队成员</介绍> <爱好>篮球</爱好> <爱好>足球</爱好> <成绩> <语文>88</语文> <数学>54</数学> <英语>34</英语> </成绩> </学生> <学生> <名字>小白</名字> <性别>女</性别> <年龄>23</年龄> <介绍>可爱</介绍> <电话>给糖就告诉你</电话> <成绩> <语文>66</语文> <数学>123</数学> <英语>124</英语> </成绩> </学生> <老师> <名字>王老师</名字> <电话>15678943215</电话> </老师> <年级> <一年级 年级主任="老王" 年级组长="隔壁老张"></一年级> </年级> </班级>
当你引入dtd文件时,xml文件就可以通过提示直接生成格式
下面简单说说修饰符的用法
() | 元素分组 | (学生+,老师+,年级) | 分为三组 |
| | 选择一个 | (一年级|二年级) | 一年级或者二年级 |
+ | 元素必须出现一次以上 | (学生+) | 至少一个学生 |
* | 元素可以出现多次 | (爱好*) | 可以有多个爱好 |
? | 元素可有可无 | (电话?) | 可有可无 |
, | 元素需按顺序显示 | (语文,数学,英语) | 看上方范例 |