DTD(Document Type Definition)文档类型定义:

DTD被用于定义XML文档的结构,作为规范XML文档的一种内容模型,DTD在各领域已形
成统一规范的文档。

在XML文档中使用DTD:

内部DOCTYPE声明:

在XML文档中包好DTD:<!DOCTYPE 根元素 [元素声明]>

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE student [
<!ELEMENT student (name,hometown,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT hometown (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
<student>
<name>Halen</name>
<hometown>unknown</hometown>
<age>ninteen</age>
</student>

外部文档声明:

DTD作为单独文件存在:
引用共有DTD文档:<!DOCTYPE 根元素 PUBLIC "文件路径及文件名">
引用私有DTD文档:<!DOCTYPE 根元素 SYSTEM "文件路径及文件名">

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE student SYSTEM "student.dtd">
<student>
<name>Halen</name>
<hometown>unknown</hometown>
<age>ninteen</age>
</student>
<!DOCTYPE student [
<!ELEMENT student (name,hometown,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT hometown (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>

声明一个元素:

叶子元素声明:<!ELEMENT 元素名 类别>
枝干元素声明:<!ELEMENT 元素名 (子元素1,子元素2...)>
选择性子元素声明:<!ELEMENT 元素名 (子元素1|子元素2|...)>
 
类别可使用下列值:
EMPTY     空元素
#PCDATA   字符类型数据,声明时使用#PCDATA需要用括号将其括起来
ANY       任意内容
 
控制子元素出现次数:
无符号  子元素只出现1次
+       子元素出现1次或多次
?       子元素出现0次或1次
*       子元素出现任意次

声明属性:

语法规则:<!ATTLIST 元素名称 属性名称 属性类型 默认值>

示例:
<!ATTLIST student name CDATA "unknown">
<student name="unknown">
 
属性类型选项:
CDATA    值为字符数据 (character data)
(en1|en2|..)  此值是枚举列表中的一个值
ID     值为唯一的 id
IDREF    值为另外一个元素的 id
IDREFS    值为其他 id 的列表
NMTOKEN   值为合法的 XML 名称
NMTOKENS   值为合法的 XML 名称的列表
ENTITY    值是一个实体
ENTITIES   值是一个实体列表
NOTATION   此值是符号的名称
xml:    值是一个预定义的 XML 值
 
默认值参数也可选用下列值:
#REQUIRED   属性值是必需的
#IMPLIED  属性不是必需的
#FIXED value 属性值是固定的
默认值   在XML中若没有定义属性值,则采用默认值

DTD实体:

内部通用实体:在DTD中定义的一段具体数据,可在DTD或XML中引用
语法规则:<!ENTITY 实体名称 "实体值">
示例:
<!ENTITY unknown "BeiJing">
<hometown>&unknown;</hometown>

 
外部通用实体:在文档实体(DTD、XML文档)以外定义的实体对象
语法规则:<!ENTITY 实体名称 SYSTEM "URI/URL">
示例:
<!ENTITY unknown SYSTEM "hometown.txt>
<hometown>&unknown;</hometown>
&unknown;表示hometown.txt文件的内容
 
内部参数实体:只能出现在DTD文档中
语法规则:<!ENTITY % 实体名 实体内容>
示例:
<!ENTITY % info "(name,age)">
<!ELEMENT student %info;>
 
外部参数实体:在外部DTD文档中声明的参数实体
语法规则:<!ENTITY % 实体名 SYSTEM "URI/URL">

DTD笔记的更多相关文章

  1. XML学习入门

    很久没更新博客了.来一发! 关于XML,当时没学过感觉难吧?其实XML还是蛮好学的,这里留下一些入门级别的内容. XML中dtd(文档类型定义)的主要用处是约束xml,也可以去约束html,xhtml ...

  2. XML学习笔记2——DTD

    在上一篇笔记中,将文档类型分类时,曾经根据文档是否使用并遵守了DTD或Schema来区分为格式良好的XML和有效的XML,那么什么是DTD和Schema呢?DTD和Schema都是用来规范XML文档的 ...

  3. XML学习笔记(二)-- DTD格式规范

    标签(空格分隔): 学习笔记 XML的一个主要目的是允许应用程序之间自由交换结构化的数据,因此要求XML文档具有一致的结构.业务逻辑和规则.可以定义一种模式来定义XML文档的结构,并借此验证XML文档 ...

  4. DTD学习笔记

    1.  DTD基本介绍 xml文件分为两种类型,一个是在好形式,这是well-formed,还有一个合法有效,这是valid. XML文件遵循-called"好形式"各种语法规则要 ...

  5. 超全面的JavaWeb笔记day05<xml&dtd&jaxp>

    0.表单提交方式(*****) button提交 超链接提交 事件 1.xml简介和应用(了解) 2.xml文档声明和乱码解决(*****) 文档声明 必须放在第一行第一列 设置xml编码和保存编码一 ...

  6. 【代码笔记】XML深入学习:DTD约束与DTD语法(2)

    DTD语法之定义实体(了解即可) 实体分为一般实体和参数实体. 定义实体:定义变量 引用实体:使用变量 一般实体:定义实体在DTD中,实体引用在xml中. 参数实体:定义实体在DTD中,实体引用在DT ...

  7. 【代码笔记】XML深入学习:DTD约束与DTD语法(1)

    2015-12-27 文件名    student.xml <?xml version="1.0" encoding="GB2312" standalon ...

  8. DTD复习笔记(复习资料为菜鸟教程里的DTD教程)

    DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 为什么使用 DTD? 通过 DTD,您的每一个 XML 文件均可携带 ...

  9. HTML学习笔记——DOCTYPE和DTD,标准模式和兼容模式

    主要涉及知识点: HTML与XHTML HTML与XHTML的区别 DOCTYPE与DTD的概念 DTD的分类以及DOCTYPE的声明方式 标准模式(Standard Mode)和兼容模式(Quirc ...

随机推荐

  1. IntelliJ IDEA 类和方法注释的生成以及Javadoc的简单使用记录

    idea,设置类注释和,方法注释的常见的设置方法(不同的版本设置方法有所偏差,简单记录一些目前自己在使用的方法,) 方法注释:在keyMap中搜索Fix doc comment ,后点击右键设置一个快 ...

  2. CSS 如何让 height:100%; 起作用

    当你设置一个页面元素的高度(height)为100%时,期望这样元素能撑满整个浏览器窗口的高度,但大多数情况下,这样的做法没有任何效果.你知道为什么height:100%不起作用吗? 按常理,当我们用 ...

  3. DDL、DML、DCL、DQL的理解

    DDL.DML 和 DCL 的理解 DDL(data definition language)数据库定义语言 的主要语句(操作) Create 语句:可以创建数据库和数据库的一些对象. Drop 语句 ...

  4. linux open()文件操作

    python程序中经常用到的读文件: f = open("___", 'r') for line in f:#这里每次读取文件的一行,line为字符串,串尾包括了'\n'!!!   ...

  5. 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛

    Banana Bananas are the favoured food of monkeys. In the forest, there is a Banana Company that provi ...

  6. AS创建工程结构

  7. iOS学习笔记21-推送证书与秘钥申请

    ---恢复内容开始--- 一.iOS证书 iOS常用的证书包括开发证书和发布证书,无论是真机调试还是最终发布应用到App Store这两个证书都是必须的,它是iOS开发的基本证书.Xcode7以后真机 ...

  8. 刷题总结——动态逆序对(bzoj3295)

    题目: Description 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素 ...

  9. 将一个list均分成n个list

    /** * 将一个list均分成n个list,主要通过偏移量来实现的 * @param source * @return */ public <T> List<List<T&g ...

  10. cf487C Prefix Product Sequence

    Consider a sequence [a1, a2, ... , an]. Define its prefix product sequence . Now given n, find a per ...