【XML】——DTD & Schema
2015-07-10 11:25
309 查看
视频中介绍了两个新颖的词汇:DTD和Schema。看完视频,我对这两个单词的理解是:对XML的规范。下
面看看它们俩是如何对XML进行规范化的,它们又有什么异同?
XML而言,DTD文件类型声明是可以缺少的。
对于DTD而言,可以分为XML内部声明与外部声明。简单的说,内部声明就是在XML文档内部使用,向函
数定义一样,先定义一个DTD在!DOCTYPE中,然后再XML文档里声明一下。外部声明类似于定义类:先定义一
个DTD在DOCTYPE定义里,然后再XML里引用DTD的文件名就行了。
DTD元素的规则中,最基础的语法是声明只出现一次:<!ELEMENT 元素名称 (子元素名称)>,其余的
声明都是在这个基础上进行变化,所以只需要基础这个,然后记住一些基本的符号就行了。比如:* 表示零次或多
次;?表示零次或一次;|表示或;# |表示混合型……
而DTD属性关键字:ATTLIST;DTD实体关键字:ENTITY。
需要提一下的是命名空间,和C#中看到的命名空间不同的是,它解决的是DTD命名冲突的问题,所以在命
名空间中都会带上DTD文件的文件头。
1、使用XML语法:与DTD有自己独特的语法不同的是,Schema使用的是XML语法,所以在用户接触
Schema时是非常方便的。
2、支持自定义数据类型:正因为使用XML语法,所以同XML一样,可以自定义数据类型。
3、可扩展:也因为使用XML语法,所以如果用户想增加描述,是可以直接对Schema进行扩充的。
4、保护数据通信:Schema可以用一种接受方可以明白的方式对数据进行描述,比如:<date
type="date">2004-03-11</date>。因为XML数据类型date要求的格式是“YYYY-MM-DD”,所以对于日期而言不会产生
歧义。
5、可捕获到错误。
DTD更人性化的服务,更适合这个信息飞速发展的时代。所以呢,我们以后做软件,要在前人的基础上,去发掘用户
体验佳,扩展性强,灵活性好,上手容易的产品。
面看看它们俩是如何对XML进行规范化的,它们又有什么异同?
XML规范之路——DTD
DTD可以定义XML文件的结构;提供语法和规则;既可以定义在XML文件中也可以在XML文件外;对于XML而言,DTD文件类型声明是可以缺少的。
对于DTD而言,可以分为XML内部声明与外部声明。简单的说,内部声明就是在XML文档内部使用,向函
数定义一样,先定义一个DTD在!DOCTYPE中,然后再XML文档里声明一下。外部声明类似于定义类:先定义一
个DTD在DOCTYPE定义里,然后再XML里引用DTD的文件名就行了。
DTD元素的规则中,最基础的语法是声明只出现一次:<!ELEMENT 元素名称 (子元素名称)>,其余的
声明都是在这个基础上进行变化,所以只需要基础这个,然后记住一些基本的符号就行了。比如:* 表示零次或多
次;?表示零次或一次;|表示或;# |表示混合型……
而DTD属性关键字:ATTLIST;DTD实体关键字:ENTITY。
需要提一下的是命名空间,和C#中看到的命名空间不同的是,它解决的是DTD命名冲突的问题,所以在命
名空间中都会带上DTD文件的文件头。
XML规范之路——Schema
与DTD作用相同,都是规范XML文件的。但是比DTD的功能更为强大,主要体现在以下几方面:1、使用XML语法:与DTD有自己独特的语法不同的是,Schema使用的是XML语法,所以在用户接触
Schema时是非常方便的。
2、支持自定义数据类型:正因为使用XML语法,所以同XML一样,可以自定义数据类型。
3、可扩展:也因为使用XML语法,所以如果用户想增加描述,是可以直接对Schema进行扩充的。
4、保护数据通信:Schema可以用一种接受方可以明白的方式对数据进行描述,比如:<date
type="date">2004-03-11</date>。因为XML数据类型date要求的格式是“YYYY-MM-DD”,所以对于日期而言不会产生
歧义。
5、可捕获到错误。
DTD VS Schema,Schema完胜!
看到上述对Schema与DTD的简单描述,就扩展性强,支持XML语法这两条,可以发现Schema拥有比DTD更人性化的服务,更适合这个信息飞速发展的时代。所以呢,我们以后做软件,要在前人的基础上,去发掘用户
体验佳,扩展性强,灵活性好,上手容易的产品。
相关文章推荐
- 【笔记】Edittext禁用软键盘,但不影响其他功能
- 布局之五 -- GridLayout
- Swift教程之运算符
- 浅谈大型网站动态应用系统架构
- Sublime Text 3 快捷键精华版
- 【JavaWeb程序设计】完成大作业的时候的一些功能实现
- 18-org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProces
- XMPP协议实现原理介绍
- 状态模式
- 使用WakeLock使Android应用程序保持后台唤醒
- hdu 5045 - Contest(2014 ACM/ICPC Asia Regional Shanghai Online )概率dp
- 《APUE》 第一章 图1-7 程序代码中execlp()部分解析
- MQTT V3.1协议规范(明哥翻译)
- 乘法逆元+排列组合模板
- 一分钟理解APM,把流失的用户找回来
- gdb 定位 oops call trace
- Simhash vs Minhash
- Python实现比较两个文件夹中代码变化的方法
- Android ListView适配器中的getView()被复用详解
- RT-Thread开篇