XML(二)有效的XML: DTD(文档类型定义)介绍与三种使用方式
有效的XML: DTD(文档类型定义)介绍
有效(Valid)的XML文档:
首先,XML文档是个格式正规的(Well-formed)XML文档;
其次,需要满足DTD的要求,这样的XML文档称为有效的(Valid)XML文档。
DTD
DTD,即文档类型定义——Document Type Definition。
DTD用来描述XML文档的结构,
一个DTD文档包含:
元素(ELEMENT)的定义规则;
元素之间的关系规则;
属性(ATTLIST)的定义规则;
可使用的实体(ENTITY)或符号(NOTATION)规则。
DTD文档与XML文档实例的关系
类与对象;
数据库表结构与数据记录;
有了DTD,每个XML文件可以携带一个自身格式的描述。
有了DTD,不同组织的人可以使用一个通用DTD来交换数据。
应用程序可以使用一个标准DTD校验从外部世界接收来的XML数据是否有效。
可以使用DTD校验自己的XML数据。
如何生成DTD文档
DTD文档有三种应用形式:
1.内部DTD文档
<!DOCTYPE 根元素[定义内容]>
2.外部DTD文档
<!DOCTYPE 根元素 SYSTEM "DTD文件路径">
3.内外部DTD文档结合
<!DOCTYPE 根元素 SYSTEM "DTD文件路径" [定义内容]>
内部DTD
一个内部DTD的例子:
上半部分是DTD,下面是XML文档,文档要符合DTD。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE poem [<!ELEMENT poem (author, title, content)><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT content (#PCDATA)> ]> <!--为元素poem定义了三个子元素author title content, 这三个元素必须要出现并且必须按照这个顺序 少元素不行,多元素也不行 --> <!--指明author,title,content里面的内容是字符串类型--> <poem><author>王维</author><title>鹿柴</title><content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content> </poem>
上面的文档就是格式良好,并且有效的。详见其中的注释。
#PCDATA(Parsed Character Data) ,可解析的字符数据,即字符串。
上面部分是DTD,在下面编写XML文档时,如果不符合其DTD规范,用XMLSpy做检查的时候,是well-formed的,但是却不是valid的。
<Students> </Students>
Validate检查的时候就会报错,根元素和DTD中的poem不符。
外部DTD
上面是一个内部DTD的例子,下面用一个外部的DTD:
首先,新建一个DTD文档,文件名叫dtd_1.dtd,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!ELEMENT poem (author, title, content)> <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT content (#PCDATA)>
然后,新建一个XML文档。
如果只写XML元素内容,那么它是一个格式良好的,却不是有效的文档,因为找不到DTD。
需要加入外部DTD文件的名称(同一个路径下只给出文件名即可)。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE poem SYSTEM "dtd_1.dtd"> <poem><author>王维</author><title>鹿柴</title><content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content> </poem>
内外部DTD结合
DTD的内容也可以有些放在外部,有些放在内部,如下:
文件dtd_2.dtd
<?xml version="1.0" encoding="UTF-8"?> <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)>
XML文档:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE poem SYSTEM "dtd_2.dtd"[ <!ELEMENT poem (author, title, content)> <!ELEMENT content (#PCDATA)> ]> <poem><author>王维</author><title>鹿柴</title><content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content> </poem>
转载于:https://www.cnblogs.com/nanjingwangbo/p/5492296.html
XML(二)有效的XML: DTD(文档类型定义)介绍与三种使用方式相关推荐
- XML——文档类型定义(DTD-Document Type Definition)
[0]README 0.1)本文文字描述转自 core java volume 2 , 旨在理解 XML--文档类型定义(DTD-Document Type Definition) 的基础知识: 0. ...
- XML之文档类型定义和合法性(转)
来至:liang--liang博客:http://www.cnblogs.com/liang--liang/archive/2008/01/15/1039277.html 好牛 XML被作为一种元标记 ...
- DTD(文档类型定义)概述
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块.DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. DTD 简介 文档类型定义(DTD)可定义合法的XML文档构建模块.它 ...
- XML--- XML文档类型定义(DTD)
**定义:**DTD定义了文档的逻辑结构,规定了文档中所使用的元素.实体.元素的属性.元素与实体之间的关系.其作用主要表现在以下几个方面. (1) 使用DTD可以提供一种统一的格式.XML的可扩展性为 ...
- 文档声明Doctype和Doctype html区别 文档类型定义(DTD)
文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 文档声明的作用: 文档声明是为了告诉浏 ...
- DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义
DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义 今天看到一篇CSS应用的一个友好搜索,我按网页上的代码复制.粘贴后预览时总达不到效果,而直接拷贝他的实例却能达到效果, ...
- 文档类型定义和合法性(2)
8.5.3 子元素列表 由于SEASON元素被声明为可以接受任何元素作为子元素,因而可以接受各种各样的元素.当遇到那些多多少少有些非结构化的文本,如杂志文章时,这种情况就很有用.这时段落.副栏.项目列 ...
- 前端:HTML5/36/HTML5简介,文档类型定义,网页字符集,页面结构标记,文章相关的标记,其它标记,音频标记,视频标记,表单中新增的属性,表单input元素type属性的值
HTML5简介 HTML5是新一代的HTML: HTML5目前主要应用在手机端,在PC端最新浏览器已经开始支持了,但还不全面: HTML5是由W3C和WHATWG合作的结果: W3C是万维网联盟,主要 ...
- XML文档类型定义DTD
DTD概述 DTD用来定义XML文档的结构,它包含一系列规则说明,以确保XML文档的一致性和有效性 DTD定义了XML文档可用的词汇(元素和属性的名称)和结构: 元素名称,包括根元素 元素的属性及属性 ...
- J2EE之dtd(文档类型定义)
一:良好xml的格式 1:xml的作用 1.1 数据交互(两种方式) 第一种:{name:xxx,sex:'男',age:18},{name:xxx,sex:'男',age:18},{name:xxx ...
最新文章
- LMAX Disruptor – High Performance, Low Latency and Simple Too 转载
- springboot+springsecurity+mybatis+jwt实现单点登录(详细到爆了)
- Research Fellow、Research Assistant、predoc等的区别
- 汇编语言---键盘KeyCode值列表
- zoj2008 最短路
- 科大讯飞回应同传造假:人机耦合才是未来发展之道
- 语音识别插件_AnsweringMachine XS: 越狱理由之二,iPhone 电话语音答录机
- 「Flink」使用Managed Keyed State实现计数窗口功能
- thinkphp3.2笔记(1)目录,控制器及url模式,地址解析
- 深度学习数据集制作_一篇文章搞定人工智能之深度学习创建训练数据集的方法
- mysql水平分表实践记录_MYSQL 分表实践
- datagrid与jqgrid区别
- java基础总结06-常用api类-System类常用方法
- cad插件物料自动排版_IMEX NO.63:园林景观专业CAD图库
- java开发中的各种中间件技术
- 11开根号不用计算机,数学开根号有什么方法?不用计算器
- ArcMap制作疫情地图
- iPhone历代产品,从3GS到7Plus详尽参数
- 转:结构化风险模型与业绩归因
- mysql中varbinary什么意思_MySQL中的数据类型binary和varbinary详解
热门文章
- 压力测试 Monkey 应用程序无响应ANR Application No Response(转)
- 苹果宣布CEO乔布斯辞职 COO库克接任
- HDU-1002 A + B Problem II Java大数
- centos7 pe系统安装_U盘PE启动安装Win7系统教程(微PE版)
- nginx -- 负载均衡
- spring的前后台数据传输。
- parallel(parallelStream)并发问题
- java补码运算代码_计算机原码、补码、反码与java移位运算符(//)
- 5g组网sa方式的演进_关于5G的SA(独立组网)和NSA(非独立组网),这篇通俗易懂!
- JSP的自定义标签(四)之定义函数