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 ...
最新文章
- 认识flask框架-2
- Linux串口读取与解析
- 3ds max 把模型放置到坐标系中心(原点)
- Luogu P1073 最优贸易【最短路/建反图】 By cellur925
- Laravel提交POST请求报错
- 用数组实现从文件搜索帐户和验证密码
- layer绑定回车事件(转)
- 身份证明检索失败,如何解决?
- SQLi LABS Less-5 报错注入+布尔盲注
- 程序员如何一键“Get”高清壁纸?
- 探秘小程序(3):登录
- 光伏蓄电池单相并网模型。光伏+MPPT+boost升压电路+桥式逆变 带参考文件,模型说明文件
- Error Based Injection和sql注入函数
- import clip时Cannot re-initialize CUDA in forked subprocess
- 数字化转型对企业的意义
- Python爬虫-字体反爬-猫眼国内票房榜
- Keysight的扫描电子元件软件EP-Scan 2023版本下载与安装配置教程
- python+selenium自动化脚本例子
- JAVASE知识点整理(超万字)
- 如何解决App inventor和AI伴侣无法连接的问题
热门文章
- spring web.xml配置服务启动后执行文件
- NGINX(二)内存池
- Python脚本控制的WebDriver 常用操作 十八 获取测试对象的css属性
- 在linux命令行利用SecureCRT上传下载文件
- [转载]返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API
- VGA接口(四)字符
- 通达OA办公系统的短信服务器(CDMA)
- access怎么查询工龄_电子商务专业怎么样?学什么?前景好吗?
- python函数名的作用_Python:函数名称空间与作用域:
- UGUI教程基本介绍