XML学习总结二——DTD
主要用处是约束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的更多相关文章
- XML学习总结(二)——XML入门
XML学习总结(二)——XML入门 一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(proc ...
- XML学习笔记2——DTD
在上一篇笔记中,将文档类型分类时,曾经根据文档是否使用并遵守了DTD或Schema来区分为格式良好的XML和有效的XML,那么什么是DTD和Schema呢?DTD和Schema都是用来规范XML文档的 ...
- xml学习笔记二(规则)
XML 的语法规则很简单,且很有逻辑.这些规则很容易学习,也很容易使用. 所有 XML 元素都须有关闭标签 在 HTML,经常会看到没有关闭标签的元素: <p>This is a para ...
- xml学习总结(二)
XML Schema (1)Schema内置类型 ->字符串类型 <strlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins ...
- XML学习笔记(二)-- DTD格式规范
标签(空格分隔): 学习笔记 XML的一个主要目的是允许应用程序之间自由交换结构化的数据,因此要求XML文档具有一致的结构.业务逻辑和规则.可以定义一种模式来定义XML文档的结构,并借此验证XML文档 ...
- xml基础之二(XML结构【2】)DTD文档模版
xml基础之二(XML结构[2])DTD文档模版 xml 模板 文档结构 我们知道XML主要用于数据的存储和传输,所以无论是自定义还是外部引用DTD模板文档,都是为了突出数据的存储规范.DTD(文档 ...
- XXE学习(二)——DTD基础
一.DTD简介 文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. 有了DTD文档后,xml就需按照DTD中的规范来书写 DTD 可被成行地声明于 XML ...
- MyBatis学习系列二——增删改查
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...
- 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
[转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...
随机推荐
- maven工程 添加本地jar依赖
和第三方平台对接的时候要用到对方提供的一个jar包,jar包怎么直接添加到pom文件的依赖中呢? jar包一般都是公共的,要上传到私服仓库.我们都是直接登录私服,操作仓库. 登录私服可以在项目的pom ...
- forEach() 和 map() 遍历
1.forEach() 没有返回值. arr[].forEach(function(value,index,array){ //do something }) 参数:value数组中的当前项, i ...
- docker简单搭建gitlab
docker启动非常简单: docker run --detach --hostname 192.168.0.33 --publish 443:443 --publish 80:80 \ --publ ...
- vue项目中使用less或者sass的方法
半年木有更新博客了... 前段时间一直在学习vue,开始记录一下遇到的问题吧 这篇文章主要是总结一下vue中使用less或者sass的方法,以less为例(style.less) 主要是两种 1.对于 ...
- maven之如何将自己的写的 maven 构件发布到 nexus 私服
概念:Nexus服务器是一个代码包管理的服务器,可以理解 Nexus 服务器是一个巨大的 Library 仓库.Nexus 可以支持管理的工具包括 Maven , npm 等,对于 JAVA 开发来说 ...
- java实验环境搭建,eclise下载与使用
一.1.官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载后安装,默认安装即可. 2.在 wind ...
- 关于Android UI 优化
之前项目为了同时兼容tv和手机端的UI,使用了百分比布局来动态计算控件的宽高,这种适配方案只关心屏幕的宽高(分辨率),与屏幕的像素密度无关. 在新的项目里也使用了这种方案.但是由于项目的运行硬件计算能 ...
- DynamoDB
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/dynamodb.html Creating a New Table I ...
- centos7 安装 redis4.0.8
1.安装lrzsz yum install lrzsz -y 2.利用rz命令将window中从redis官网下载好的“redis-4.0.8.tar.gz” 拷贝到centos中 redis官网 : ...
- awk命令小结
先在此至敬朱双印老师,博客写得很详细:http://www.zsythink.net/archives/tag/awk/ 这是朱双印老师关于awk博客的链接,强力推荐给大家 AWK一般在网上说是一 ...