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文件就可以通过提示直接生成格式

下面简单说说修饰符的用法

()元素分组(学生+,老师+,年级)分为三组
|选择一个(一年级|二年级)一年级或者二年级
+元素必须出现一次以上(学生+)至少一个学生
*元素可以出现多次(爱好*)可以有多个爱好
元素可有可无(电话?)可有可无
,元素需按顺序显示(语文,数学,英语)看上方范例
12-30 17:53
查看更多