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)>
参数实体就是进行严格地替换,可以简化元素、属性的定义
DTD简单使用的更多相关文章
- XML学习笔记2——DTD
在上一篇笔记中,将文档类型分类时,曾经根据文档是否使用并遵守了DTD或Schema来区分为格式良好的XML和有效的XML,那么什么是DTD和Schema呢?DTD和Schema都是用来规范XML文档的 ...
- 04_XML_03_XMLDTD约束与校验
[什么是XML约束] 在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,称之为XML约束. 常见的XML约束技术有:XML DTD和XML Schema DTD(Document Typ ...
- html学习一(html简史及doctype)
html3部分 doctype(html) dtd head body 一.深入浅出HTML与XHTML的区别 HTML(HyperText Markup Language,超文本标记语言)最早的HT ...
- XML和DTD的简单介绍和入门
XML(Extensible Markup Lanaguage),可扩展标记语言,是标准通用标记语言(Standard Generalized Markup Language, SGML)的一个子集, ...
- XML文件基础,DTD校验文件编写,Schema文件的简单使用
dtd <!-- <!ELEMENT 元素(子元素,...)> --> <!ELEMENT students (student+,cat*) > <!ELEM ...
- 搭建一个简单的mybatis框架
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- Spring+SpringMVC+Hibernate简单整合(转)
SpringMVC又一个漂亮的web框架,他与Struts2并驾齐驱,Struts出世早而占据了一定优势,下面同样做一个简单的应用实例,介绍SpringMVC的基本用法,接下来的博客也将梳理一下Str ...
- php静态缓存简单制作
制作缓存的目的是为了让我们的页面运行更加快速,减少读取数据库内容的次数,给用户更好的体验,为此我们可以使自己的程序做一下缓存,并且设置一个缓存过期的时间,来保证与数据库的一致,当然并不是所有的程序都适 ...
- Hibernate(二)__简单实例入门
首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...
随机推荐
- YII 创建后台模块
1,在protected/config/main.php目录下修改如下目录 'modules'=>array( // uncomment the following to enable the ...
- lsmod
http://blog.csdn.net/yuan892173701/article/details/8960607 抽空写下
- 在Site Settings下找不到Navigation标签
有时候我们可能找不到Navigation标签, 仅仅在Look and Feel下面看到"Quick launch" 如何才能找到我们想要的"Navigation&quo ...
- 开发人员应关注的20个jQuery网站/博客
http://blog.jobbole.com/1466/ 2. 10个优秀的移动Web应用开发框架 http://blog.jobbole.com/1436/ 3. 介绍jQ Mobile ht ...
- Java增强的泛型
尽管Java 8是2014年年初才发布的,而Java 9要等到2016年年中,但是目前有一些计划放到某个未来版本(希望是Java 10)中的特性已经合并了进来. 具体而言,有两个比较大的特性已经开始原 ...
- 用它解决大问题啦,STRACE应用
脚本是沙沙,辉哥和我在去年解决一个PHP时弄出来的...强! 简单而实用. 抓到的TRC文件放在TRC目录下. 如果有异常的进程或输出,可以在里面详细的分析.. #!/bin/bash mkdir t ...
- IAR FOR ARM 7.2.2破解方法
直接上图,注意选择"NO" 工具下载地址: http://download.csdn.net/detail/lan120576664/7604593 其实发现,该注册工具连IAR ...
- java进程卡死问题
原文地址:http://stackoverflow.com/questions/28739600/jvm-hang-and-kill-3-jmap-failed tomcat进程出现了如下异常,并且卡 ...
- 对于唯一索引使用唯一条件搜索, InnoDB 只锁定找到的index record,不是它之前的区间
| test100 | CREATE TABLE `test100` ( `sn` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增编号', `phoneNo` ...
- 【HDOJ】2405 Marbles in Three Baskets
BFS+状态压缩. /* 2405 */ #include <iostream> #include <queue> #include <cstdio> #inclu ...