主要用处是约束XML。

1.DTD分为内部DTD外部DTD两类;

内部DTD:将DTD定义在XML文档的内部

<!DOCTYPE  根元素名  [
    元素描述
]>

外部DTD

<!DOCTYPE 根元素名  SYSTEM  “DTD文件名">

外部DTD的优势:
定义一份DTD文档,就可以方便地被多个XML文档共享
当语义约束需要改变时,无需为每份XML文档改变DTD定义,只需改变它们共享的外部DTD即可

2.声明元素:DTD必须定义XML文档中允许出现的所有元素
<!ELEMENT 元素名称  元素类别>

或者

<!ELEMENT 元素名称  (元素内容)>

元素类别/元素内容:
ANY:定义任意类型元素,这种元素可以是字符串,也可以包含子元素,也可以是空元素
EMPTY:定义空元素,不能包含子元素,也不可以包含字符串值
#PCDATA:定义元素的内容只能是字符串,不能包含其他子元素,也不可以是空元素
包含子元素:定义元素的子元素之间的顺序和出现的频率等
混合类型:定义元素的取值是几个确定的类型的混合

3.定义子元素

<!ELEMENT 元素名称  (子元素名)>

子元素的出现频率
通过在元素声明后加上特殊标记,可以定义元素出现的频率:
+:表明子元素可以出现1次或多次
*:表明子元素可以出现0次或多次
?:表明子元素 可以出现0次或1次
无标记:表明子元素只能且必须出现一次

4.定义元素属性

<!ATTLIST 所属的元素名  属性名称  属性类型  属性默认值>

语法

描述

“属性值”

设置属性默认值

#REQUIRED

属性值是必需的

#IMPLIED

属性不是必需的

#FIXED value

属性值是固定的

5.实体
DTD中允许用户自定义实体,所谓实体定义类似于C语言的宏变量,即为一段字符串数据提供一个别名,实体被声明后,就可在其它地方被引用
DTD中定义的实体,可以在XML文档中引用,也可以在DTD中引用
实体类别

实体的作用:
提高代码复用,方便维护
XML中使用一些特殊符号时,会使XML解析器混淆,因此需要为这些符号定义为实体,例如大于或小于符号等,系统已定义好这些实体
对于长度较长并且需要反复使用到的字符串,为了减少字符输入量,可以将其定义为实体

定义内部实体:只能在XML中引用

<!ENTITY  实体名称   “实体值”>

XML中使用实体

&实体名;

定义外部实体:不在DTD中定义,在外部文件中指定

<!ENTITY  实体名称  SYSTEM   “实体所在文件的URI/URL">

引用

&实体名;

定义参数实体:只能在DTD中引用

<!ENTITY  %  实体名称   “实体值”>

DTD中引用参数实体

%实体名;

6.定义命名空间
通过使用xmlns或xmlns:prefix属性来定义命名空间
命名空间定义在元素的开始标签之中

定义:xmlns[:prefix] = "namespaceURI“
使用:<prefix:元素名/属性名>

XML学习总结二——DTD的更多相关文章

  1. XML学习总结(二)——XML入门

    XML学习总结(二)——XML入门 一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(proc ...

  2. XML学习笔记2——DTD

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

  3. xml学习笔记二(规则)

    XML 的语法规则很简单,且很有逻辑.这些规则很容易学习,也很容易使用. 所有 XML 元素都须有关闭标签 在 HTML,经常会看到没有关闭标签的元素: <p>This is a para ...

  4. xml学习总结(二)

    XML Schema (1)Schema内置类型 ->字符串类型 <strlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins ...

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

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

  6. xml基础之二(XML结构【2】)DTD文档模版

    xml基础之二(XML结构[2])DTD文档模版 xml 模板 文档结构  我们知道XML主要用于数据的存储和传输,所以无论是自定义还是外部引用DTD模板文档,都是为了突出数据的存储规范.DTD(文档 ...

  7. XXE学习(二)——DTD基础

    一.DTD简介 文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. 有了DTD文档后,xml就需按照DTD中的规范来书写 DTD 可被成行地声明于 XML ...

  8. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

  9. 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    [转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...

随机推荐

  1. 动态在线扩容root根分区大小的方法详解

    前言 本文主要介绍了关于动态在线扩容root根分区大小的相关内容,分享出来供大家参考学习,下面话不都说了,来一起看看详细的介绍吧. ? 1 qemu-img resize yourname.img + ...

  2. 微软必应Bing搜索引擎这几天无法访问!

    一.用必应(Bing)临时域名: www2.bing.com 或者 www4.bing.com 临时域名博主验证有效 二.修改hosts文件: 用户只需要暂时修改下host然后坐等微软服务器恢复后再删 ...

  3. 区间dp(入门题)

    区间dp:顾名思义就是在区间上进行动态规划,通过合并小区间求解一段区间上的最优解. 常见模板: for(int len=1;len<n;len++){//区间长度 for(int be=1;be ...

  4. eclipse在mac上的快捷键

    Command + Shift + R: 搜索本地项目文件 Command + Shift + T: 搜索jar中的文件 Command+t:快速显示当前类的结构 command+O: 在某个类文件, ...

  5. 用C语言编写一个简单的词法分析程序

    问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...

  6. mybatis学习笔记1.零碎记录

    1.conf.xml文件中的一些标签先后顺序会有影响. conf.xml文件<configuration>标签对里面配置的<typeAliases>标签的位置还有讲究?我将其放 ...

  7. iOS.redefinition-of-struct-x

    Error: Redefinition of struct x Reference

  8. elementUI中表格中表单的验证

    表格中的表单验证,就是在将表格放在表单中,将表格绑定的数据也放在表单中. 最重要的是要给表格中需要验证的字段动态添加prop,再给其绑定规则. <el-form :model="tab ...

  9. GUI学习之七——单选框QRadioButton和QButtonGroup的学习总结

    一.单选框QRadioButton的使用 1.类的描述 a.单选框按钮用于给用户提供若干选项中的单选操作,当一个被选中时,会自动取消选中的那个.(如果只有一个时可以通过单击该按钮改变其状态:而存在多个 ...

  10. GUI学习之五——QPushbutton类学习笔记

    QPushButton是QAbstractButton类下使用最多的子类,它的用法在上一章中基本讲完了,这里还总结了几个别的用法. 一.创建按钮 我们在前面所有的案例中创建按钮都是用这样的方式 win ...