XML小结
什么是XML?
什么是XML呢?专业说法是可扩展性标记语言(EXtensible Markup Language).然而什么又是可扩展性标记语言呢? 首先它是标记语言,所谓标记语言就是一套标记标签.其次就是可扩展性,所谓的可扩展性是指的,XML的标签没有被预定义,需要自行定义标签,它具有自我描述性.
XML知识体系如下:
XML元素
有关XML元素有一点需要注意,那就是命名规范,因为XML的可扩展性决定的,很多东西需要自己定义,所以命名规范显的尤为重要.
XML元素必须遵循以下命名规则:
名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
其实这些规范对程序员来说不陌生,重要的是养成一个良好的习惯.还有几个需要注意的字符如下
避免"-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为你需要提取第一个单词。
避免"." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name"是对象 "first" 的属性。
避免":" 字符。冒号会被转换为命名空间来使用
XML和HTML的对比
XML和HTML很相似,但是两者却有很多的不同,XML并不是HTML的替代,因为它们的设计目的不同,XML被设计为传输和存储数据,其焦点是数据内容.而HTML被设计用来显示数据,其焦点是数据外观.HTML关注信息显示,XML关注信息的传输.
XMLSchema 与 XML DTD的对比
首先什么是XML Schema 与 XML DTD?
XML模式是指用来描述XML结构、约束等因素的语言,而XMLSchema、XML DTD则是XML的模式。XML格式则是XML文档本身所具有的格式。从模式的描述语言来说,XML Schema和XMLDTD都属于语法模式。与概念模式不同,语法模式在对同一事物描述时,可以采用不同的语法,例如在对关系模式描述时,无论是使用XML Schema还是XMLDTD,都既可以用元素也可以用属性来描述关系模式的列。
模式必须以某种格式来表示,XML Schema的格式与XML DTD的格式有着非常明显的区别,XMLSchema事实上也是XML的一种应用,也就是说XML Schema的格式与XML的格式是完全相同的,而作为SGML DTD的一个子集,XMLDTD具有着与XML格式完全不同的格式。这种区别会给XML Schema的使用带来许多好处:
※XML用户在使用XML Schema的时候,不需要为了理解XML Schema而重新学习,节省了时间;由于XML Schema本身也是一种XML,所以许多的XML编辑工具、API 开发包、XML语法分析器可以直接的应用到XMLSchema,而不需要修改。
※作为XML的一个应用,XML Schema理所当然的继承了XML的自描述性和可扩展性,这使得XML Schema 更具有可读性和灵活性。
※由于格式完全与XML一样,XMLSchema除了可以像XML一样处理外,也可以同它所描述的XML文档以同样的方式存储在一起,方便管理。
※XML Schema与XML格式的一致性,使得以XML为数据交换的应用系统之间,也可以方便的进行模式交换。
※XML有非常高的合法性要求,XML DTD对XML的描述,往往也被用作验证XML合法性的一个基础,但是XMLDTD本身的合法性却缺少较好的验证机制,必需独立处理。XML Schema则不同,它与XML有着同样的合法性验证机制。
数据类型
XML Schema与XML DTD相比的一个最显著的特征,就是其对数据类型的支持了。这完全是因为XMLDTD提供的数据类型只有CDATA 、Enumerated、NMTOKEN、NMTOKENS等十种内置(built-in)数据类型。这样少的数据类型通常无法满足文档的可理解性和数据交换的需要。
XMLSchema则不同,它内置了三十七种数据类型,如long,int,short,double等常用的数据类型,并通过将数据类型表示为由valuespace、lexical space和facet三部分组成的三元组而获得更大的灵活性。但是, XMLSchema数据类型的真正灵活性来自于其对用户自定义类型的支持。XML Schema提供两种方式来实现数据类型的定义。
※简单类型定义(simpleType),即在XML Schema内置的数据类型基础上或其它由XMLSchema内置的数据类型继承或定义所得到的简单的数据类型(simpleType)基础上,通过restriction,list 或者union方式定义新的数据类型。
※复合类型定义(complexType),该方法提供了一种功能强大的复杂数据类型定义机制,可以实现包括结构描述在内的复杂的数据类型。
元素顺序的支持
XML DTD与XML Schema 都支持对子元素节点顺序的描述,但XMLDTD没有提供对于无序情况的描述,也就是如果以XMLDTD来描述元素的无顺序出现情况,它必须采用穷举元素各种可能出现的排列顺序的方式来实现,这种方法不仅繁琐,有时甚至是不现实的。
通过比较,可以看出,XML Schema比XML DTD具有更强的表现力,能够更好的满足不同领域应用的需求。所以,作为一种强有力的标准,XMLSchema作为XML模式的主流已经成为一种趋势;但作为一种最简单的XML模式,XML DTD也还将会在一段时间内发挥它应有的作用。