DTD验证XML文档
DTD验证XML文档
1.DTD简介:DTD是Document Type Definition的缩写,即文档定义
1.1:DTD的内容包含:
元素定义规则
元素之间的关系规则
属性的定义规则
1.2:DTD的作用如下:
DTD使每个XML文件可以携带一个自身格式的描述
DTD使不同组织的人可以使用一个通用DTD来交换数据
DTD使应用程序可以使用一个标准DTD效验从外部接收的XML数据会否有效
2.声明DTD
语法:<!DOCTYPE 根元素 [定义内容]>
eg:
<?xml version="1.0"?>
<!DOCTYPE poem[
<!ELEMENT poem (author,title,content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
<author>王维</author>
<title>鹿柴</title>
<content>空山不见人,但闻人语响。返景入深林,复照青苔上。</content>
</poem>
3.使用外部DTD验证XML
语法:<!DOCTYPE 根元素 SYSTEM "DTD文件路径">
eg:poems.dtd
<!ELEMENT poems (poem*)>
<!ELEMENT poem (title,author,year,content)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT content (#PCDATA)>
使用外部DTD验证描述诗集的XML
<?xml version="1.0"?>
<!DOCTYPE poems SYSTEM "poems.dtd">
<poems createYear="2011">
<poem>
<title>春晓</title>
<author>孟浩然/author>
<year>732</year>
<content>春眠不觉晓</content>
</poem>
</poems>
4.DTD元素
4.1:语法:<!ELEMENT NAME CONTENT>
ELEMENT:关键字
NAME:元素名称
CONTENT:元素类型
4.2:常用的元素类型
#PCDATA,可以包含任何字符数据,但是不能在其中包含任何子元素
eg:<!ELEMENT title (#PCDATA)>
纯元素类型,只包含子元素,并且这些子元素没有文本
eg:<!ELEMENT poems (poem*)>
4.3:DTD元素中某些符号的用途
符号 用途 示例 示例说明
() 用来给元素分组 (古龙|金庸|梁羽生),(王苏|玉洁),毛毛 表示分成三组
| 在列出的对象中选择一个 (男人|女人) 两者选其一
, 对象必须按指定的顺序出现 (西瓜,苹果,香蕉) 三个都必须出现
* 允许出现(0到多次) (爱好*) 爱好可以出现0到多次
? 允许出现(0次到1次) (菜鸟?) 表示可出现也可以不出现,如果出现最多一次
+ 允许出现(1次到多次) (成员+) 表示必须出现,而且可以出现多次
4.4:DTD属性
1.语法:<!ATTLIST 元素名称 属性名称 属性类型 属性默认值>
2.DTD元素中属性类型的描述:
属性类型 说明
CDATA 表示字符数据
ID 表示唯一的id
IDREF 表示为另一个元素的id
IDREFS 表示其他id的列表
ENTITY 表示一个实体
ENTITLES 表示一个实体列表
3.DTD元素中属性值的描述
值 说明
#REQUIRED 属性值是必须的
#IMPLIED 属性值不是必须的
#FIXED 属性值是固定的
eg:
<!DOCTYPE mystruts[
<!ELEMENT mystruts (actions)>
<!ELEMENT actions (action*)>
<!ELEMENT action (result*)>
<!ATTLIST action
name CDATA #REQUIRED
class CDATA #REQUIRED>
<!ELEMENT result (#PCDATA)>
<!ATTLIST result
name CDATA #IMPLIED
redirect (true|false) "false">
]>
<mystruts>
<actions>
<action name="register" class="com.RegisterAction">
<result name="success">register_success.jsp</result>
<result name="input">register.jsp</result>
</action>
</actions>
</mystruts>
DTD验证XML文档的更多相关文章
- 验证XML文档的范例代码
如果想变成自己的,就把这里的xml文档名替换成自己xml文档名 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc. ...
- 【HTML/XML 10】XML文档中的Schema文件
导读:DTD是对XML文档进行有效性验证的方法之一,事实上,继DTD之后,出现了用来规范和描述XML文档的第二代标准:Schema.Schema是DTD的继承,但是也有其不同的地方,它是真正的以独立的 ...
- Spring学习----- Spring配置文件xml文档的schema约束
1.配置文件示例. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...
- 关于Spring配置文件xml文档的schema约束
最开始使用spring框架的时候,对于其配置文件xml,只是网上得知其使用方法,而不明其意.最近想着寻根问底的探究一下.以下是本文主要内容: 1.配置文件示例. <?xml version=&q ...
- Spring中xml文档的schema约束
最开始使用Spring框架的时候,对于其配置文件xml,只是网上得知其使用方法,而不明其意.最近想着寻根问底的探究一下.以下是本文主要内容: 1.配置文件示例. <?xml version= ...
- DTD与XML Schema都是XML文档。(选择1项)
DTD与XML Schema都是XML文档.(选择1项) A.正确 B.不正确 解答:DTD不是XML文件, schema是XML文档
- 2018.5.14 XML文档类型定义----DTD
1.DTD概述 一个完全意义上的XML文件不仅仅是Well-fromed(格式良好的),而且还应该是使用了一些自定义的标记ValidatingXMl(有效的)文档也就是说他必须遵守文档类型的定义中已声 ...
- dom4j解析xml文档全面介绍
一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...
- java: (正则表达式,XML文档,DOM和DOM4J解析方法)
常见的XML解析技术: 1.DOM(基于XML树结构,比较耗资源,适用于多次访问XML): 2.SAX(基于事件,消耗资源小,适用于数量较大的XML): 3.JDOM(比DOM更快,JDOM仅使用具体 ...
随机推荐
- iOS 之 assign、retain、copy、nonatomic
1. assign 1.1. 普通赋值 一般用于基本类型 1.2. 常见委托设计模式 防止循环引用 2. retain 保留计数,获取了对象的所有权.引用计数在原有基础上加1. 3. copy 同re ...
- JDBC-ODBC桥连接方式操纵SQL数据库
/** * 功能:演示使用JDBC-ODBC桥连接方式操纵SQL数据库 * 作者:徐守威 * 操作步骤: * 1.配置数据源 * 2.在程序中连接数据源 * 3.操作数据 */ pack ...
- WPF dataGrid中的check的改变事件
关于datagrid信息: <DataGridTemplateColumn Header="备注"> <DataGridTemplateColumn.CellTe ...
- Memcached Client的释疑
1.目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的.与之对应的带d的memcached是建立在libmemcached的基础 ...
- 变形transform的副作用
前面的话 变形transform本来是一个用来处理移动.旋转.缩放和倾斜等基本操作的CSS3属性,但该属性除了完成其本职工作之后,还对普通元素造成了意想不到的影响,本文将详细介绍transform ...
- 从RPC开始(二)、序列化
在C++的世界里构建一个序列化框架:并非一件困难的事情,但也并非简单.因此,需要分成两部分来完成这项任务: 1.序列化容器. 2.序列化方式. 前者,很容易理解:但也决定着我们将要存储数据的方式:二进 ...
- jstree获取整棵树的json数据
$("#树ID").jstree(true).get_json();
- Swift资料大全
简单看了一下swift的语法,个人感觉相对于object-c很是简单明了.Swift的出现并不能说明iOS开发简单了很多,有可能会变得复杂,你需要学习两门编程语言,因为在程序员的世界里,务实并不是最重 ...
- MySQL5.7免安装教程
注如果连文件位置都和我这个一样的话,基本上所有命令都可以直接复制这上面就行,前提是你愿意放到C盘的并在Program files下面新建一个文件夹mysql存放这些东西 建议大家还是自己动手配置一下这 ...
- WinForm DataGridView控件、duck布局
1.DataGridView控件 显示数据表 (1)后台数据绑定: List<xxx> list = new List<xxx>(); dataGridView1.DataSo ...