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项目中 ...
随机推荐
- Bootstrap_Javascript_图片轮播
一 . 结构分析 一个轮播图片主要包括三个部分: ☑ 轮播的图片 ☑ 轮播图片的计数器 ☑ 轮播图片的控制器 第一步:设计轮播图片的容器.在 Bootstrap 框架中采用 carousel 样式,并 ...
- js时间戳与日期格式之间的互转
1. 将时间戳转换成日期格式 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 注意:如果是uinx时间戳记得乘于1000.比如php函数time()获得 ...
- 最新发布C#.NET快速开发框架企业版V4.0 (适合开发ERP、进销存系统)
C/S系统开发框架-企业版 V4.0 (Enterprise Edition) http://www.csframework.com/cs-framework-4.0.htm 视频下载: 百度网盘: ...
- Connect mysql on Linux from Windows
ON LINUX: 1 sudo apt-get install mysql-server 2 sudo apt-get install python-dev 3 sudo apt-get insta ...
- SVN 使用的简单整理
1. 在SVN服务器上创建存储Dir,并和个人主机建立联系. 现在SVN服务器上创建一个存储文件夹svn_storeDir.然后在个人电脑上建立一个本地文件夹local_Dir. 进入 ...
- asp.net 导入
开发项目过程中会遇到各种各样的项目需求,我现在遇到的问题是每个部门有不同的excel文件类型,他们每个部门每个文件类型上传成功之后都会在数据库中产生表,表的列名是你excel第一行数据,其他行作为表的 ...
- 阻止文件不被上传到iCloud-b
有空用下 http://www.cocoachina.com/bbs/read.php?tid=86244 http://www.ooso.net/archives/617 http://blog.c ...
- Windows系统下的TCP参数优化
1. TCP连接的状态 首先介绍一下TCP连接建立与关闭过程中的状态.TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用.特定数据包以及超时等,具体状态如下所示: CLOSED:初始状态, ...
- 解决maven仓库有jar包但是maven程序无法下载仓库jar包
话说,这个问题困扰了我两个多月了已经~~~ 后来发现不知道被谁动了,把我的仓库没有放到仓库组里面~~~ 用admin登录进去,默认密码是admin123,然后看截图操作吧. (记得删除你本地报错说** ...
- Web NFC API
W3C Editor's Draft 29 December 2014 This version: http://www.w3.org/2012/nfc/web-api/ Latest publish ...