DTD简单使用
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)>
参数实体就是进行严格地替换,可以简化元素、属性的定义
最新文章
- 通过一个实例理解 offsetLeft,offsetTop; offsetWidth , offsetHeight
- hdu4833 Best Financing(DP)
- rest api参数与content-type
- 托马斯微积分答案.djvu的书签
- Calendar.get()方法--- WEEK_OF_YEAR 、MONTH、
- sixsix团队“餐站”应用M2阶段发布报告
- C语言程序设计现代方法_基本类型(第七章)
- 【转】Maven实战(二)---多模块开发---缺少Jar包
- poj1410
- NAT简单介绍
- 怎么让普通用户使用root权限执行用户命令
- ";机器人防火墙";:人机识别在应用安全及风控领域的一点实践
- 关于使用nodejs的mysql查询时碰到的坑
- 从Hadoop到Spark的架构实践
- journalctl 清理journal日志
- 开启C语言的学习之门
- 把旧系统迁移到.Net Core 2.0 日记 (16) --Cors跨域访问
- ES6,变量,函数-参数,结构赋值
- RocketMq(一)初识消息中间件
- [BZOJ4372]烁烁的游戏(动态点分治+线段树)
热门文章
- Android Context作用
- Linux服务器集群技术的概述
- C++标准库的数值极限numeric_limits
- [BZOJ 3172] [Tjoi2013] 单词 【AC自动机】
- Sliding Window
- codeforces C. Inna and Huge Candy Matrix
- 关于javaBean中boolean类型变量的set和get注入后传到前端JS中的问题
- -_-#【jsonp】cache
- wpa_supplicant使用笔记-wpa_cli iwconfig
- kafka-简单事例