DTD:Document Type Definition

  DTD是一种简单的XML约束模式语言

  DTD文档必须以utf-8或unicode编码

  注释方式与HTML、XML文档相同

DTD文档的引用:紧跟XML声明语句之后,有两种方式(外部引入及内部嵌入)

<?xml ... standalone="no"?>
<!DOCTYPE ...>

外部引入DTD方式:

有如下两种引用方式:第一种方式为引用本地DTD文件,第二种为公共DTD文件方式(doctype-name一般使用根元素命名)

 <!DOCTYPE doctype-name SYSTEM "dtd-url">
<!DOCTYPE doctype-name PUBLIC "dtd-name" "dtd-url">

内部嵌入DTD方式:

 <!DOCTYPE doctype-name [
... ...
]>

一个简单的DTD文档如下:

1 <!ELEMENT bookshelf(book+)>
2 <!ELEMENT book(name,author,price)>
3 <!ELEMENT name(#PCDATA)>
4 <!ELEMENT author(#PCDATA)>
5 <!ELEMENT price(#PCDATA)>

DTD元素定义

  <!ELEMENT 元素名称 使用规则>

使用规则如下:

EMPTY: 定义空元素

ANY: 任何形式

(#PCDATA): 普通文本

(<ELE1> <ELE2> <ELE3> ...): 无序元素组

(<ELE1>,<ELE2>,<ELE3> ...): 有序元素组(要求子元素必须以<ELE1>、<ELE2>、<ELE3>...的顺序出现)

(<ELE1>|<ELE2>|<ELE3> ...): 仅一个元素

其中后三种中元素后可以添加通配符(+:出现一次或多次;?:出现0次或一次;*:0或多次;什么都没有表示有且仅有一次)

如:<!ELEMENT MYFILE ((TITLE*, AUTHOR?,EMAIL)*|COMMENT)>

DTD属性定义

<!ATTLIST 元素名称

Att1 属性类型 设置说明

...

>

属性类型如下:

CDATA:字符串

ENUMERATED

ID

...

设置说明如下:

#REQUIRED: 必须设置

#IMPLIED: 可有可无

#FIXED "fixed": 固定值

"default":设置默认值

如:<!ATTLIST Meat kind(chicken|beaf|fish|...) "fish">

DTD实体定义

实体:即是为一段文本起别名,方便在XML中或DTD中随时引用。分为引用实体和参数实体。

引用实体在XML中的引用方式为:&实体名;

  <!ENTITY 实体名 "内容">

  <!ENTITY 实体名 SYSTEM "外部XML的URL">  <!-- 将外部XML内容作为实体 -->

参数实体在DTD中的引用方式为:%实体名;

  <!ENTITY %实体名 "内容">

例如:

  <!ENTITY %TAG "name|email|telephone|address">

  <!ELEMENT Info (%TAG;|birthday)>

参数实体就是进行严格地替换,可以简化元素、属性的定义

最新文章

  1. 通过一个实例理解 offsetLeft,offsetTop; offsetWidth , offsetHeight
  2. hdu4833 Best Financing(DP)
  3. rest api参数与content-type
  4. 托马斯微积分答案.djvu的书签
  5. Calendar.get()方法--- WEEK_OF_YEAR 、MONTH、
  6. sixsix团队“餐站”应用M2阶段发布报告
  7. C语言程序设计现代方法_基本类型(第七章)
  8. 【转】Maven实战(二)---多模块开发---缺少Jar包
  9. poj1410
  10. NAT简单介绍
  11. 怎么让普通用户使用root权限执行用户命令
  12. &quot;机器人防火墙&quot;:人机识别在应用安全及风控领域的一点实践
  13. 关于使用nodejs的mysql查询时碰到的坑
  14. 从Hadoop到Spark的架构实践
  15. journalctl 清理journal日志
  16. 开启C语言的学习之门
  17. 把旧系统迁移到.Net Core 2.0 日记 (16) --Cors跨域访问
  18. ES6,变量,函数-参数,结构赋值
  19. RocketMq(一)初识消息中间件
  20. [BZOJ4372]烁烁的游戏(动态点分治+线段树)

热门文章

  1. Android Context作用
  2. Linux服务器集群技术的概述
  3. C++标准库的数值极限numeric_limits
  4. [BZOJ 3172] [Tjoi2013] 单词 【AC自动机】
  5. Sliding Window
  6. codeforces C. Inna and Huge Candy Matrix
  7. 关于javaBean中boolean类型变量的set和get注入后传到前端JS中的问题
  8. -_-#【jsonp】cache
  9. wpa_supplicant使用笔记-wpa_cli iwconfig
  10. kafka-简单事例