一、什么是DTD
    文档类型定义
    Document Type Definition
    DTD用来描述xml文档结构,一个DTD文档包含:
        元素的定义规则
        元素之间的关系规则
        属性的定义规则
二、为什么要有DTD
    1.有了DTD,每个xml文件可以携带一个自身格式的描述
    2.有了DTD,不同组织的人可以使用一个通用DTD用来交换数据
    3.应用程序可以使用一个标准DTD校验外部接收的xml数据是否有效
三、如何编写一个DTD文档
    1.语法
        DTD文档的声明及引用
        内部DTD文档(Students.xml)
        <!DOCTYPE 根元素 [定义内容]>
        外部DTD文档
        <!DOCTYPE 根元素 SYSTEM "DTD文件路径">
        内外部DTD文档结合
        <!DOCTYPE 根元素 SYTEM "DTD文件路径" [定义内容]>
四、元素的定义
    语法
        <!ELEMENT NAME CONTENT>
    ELEMENT:关键字
    NAME:元素名称
    CONTENT:元素类型
        EMPTY:该元素不能包含子元素和文本,但可以有属性
        #PCDATA:可以包含任何字符数据,但是不能在其中包含任何子元素
        纯元素类型:只包含子元素,并且这些子元素外没有文本
        ANY:该元素可以包含任何在DTD中定义的元素内容
    符号:
    <!DOCTYPE CCTV-6[
        <!ELEMENT CCTV-6 (电影+)>
        <!ELEMENT 电影 (名称,主演+,类型?,片长)>
        <!ELEMENT 名称 (#PCDATA)>
        <!ELEMENT 主演 (#PCDATA)>
        <!ELEMENT 类型 (#PCDATA)>
        <!ELEMENT 片长 (#PCDATA)>
        
    ]>
定义属性的语法结构
    语法
        <!ATTLIST 元素名称
            属性名称 属性类型 属性特点
            ...
        >
    属性类型:CDATA
        <!ELEMENT 人
            姓名 CDATA #REQUIRED
        >
    属性类型ID取值必须是唯一的。
        <!ATTLIST 公司职员
            编号 ID #REQUIRED
            姓名 CDATA #REQUIRED
        >
    属性类型IDREF/IDREFS
        
    属性类型Enumerated
        <!ATTLIST person 性别(男|女) #REQUIRED>
    属性特点
        #REQUIRED必须出现
        <!ATTLIST 元素名 属性名 属性类型 #REQUIRED>
        #IMPLIED可以省略
        <!ATTLIST 元素名 属性名 属性类型 #IMPLIED>
        #FIXED必须是固定值
        <!ATTLIST 元素名 属性名 属性类型 #FIXED "VALUE">
        #Default默认值
        <!ATTLIST 元素名 属性名 属性类型 "value">
    <!ELEMENT 家庭 (人+,家电*)>
    <!ELEMENT 人 EMPTY>
    <!ELEMENT 家电 EMPTY>
    <!ATTLIST 人
        名字 CDATA #REQUIRED
        年龄 CDATA #REQUIRED
        性别 (男|女) "女"
        住址 CDATA #FIXED "北京"
        爱好 CDATA #IMPLIED
    >
    <!ATTLIST 家电
        名称 CDATA #REQUIRED
        数量 CDATA #REQUIRED
    >
实体
    语法
        <!ENTITY 实体名 "实体值">

QQ截图20181015130417.png