您的位置:首页 > 编程语言 > Java开发

传智播客Java web之 XML基础

2009-10-23 20:11 246 查看
XML基础视频是张孝祥老师讲解的,内容通俗易懂,知识点完全覆盖了以后JAVAWEB领域所用到的XML知识。张老师非常善于解剖和分析问题,善于使用生动形象的比喻,能将复杂的、难于理解的问题与知识简单化讲解。在这段视频中,我弄明白了很多困扰很久的问题,如名称空间的问题。视频内容包括:XML技术概述、XML的基本语法、XML的约束模式、DTD、DTD的语法细节、XML Schema、名称空间、引入XML Schema文档。
在XML概述中,首先让读者对XML有了感性的认识,举例说明XML的作用,如TOMCAT中的配置文件。接着讲解的是XML文档结构、XML与HTML的比较、XML与数据库的比较。在这一段视频中,对XML技术所处的地位有了一定的认识:
1.HTML将数据和其显示效果混在一起,它是一种表现技术;XML文档只是存储了数据和描述了数据之间的关系,没有规定该如何显示数据。
2.HTML的格式要求比较松散,而XML是非常严格的标记语言。
3.XML允许粒度更新,HTML不支持类似功能。
4.XML不是HTML的升级,也不是HTML的替代产品。
5.HTML 目前已经不再是WEB标记的标准,它已经被XHTML所取代 ,XHTML是HTML和XML 的混合物,是XML在WEB领域的一种应用。
在XML语法中,分别讲解了文档声明、元素定义、属性定义、注释、 空格和换行的处理、CDATA区、特殊字符、处理指令。其中文档声明特别举例了一个属性:encoding,该属性设置该XML文档的编码类型,同时浏览器也是按该属性值来处理XML文档,所以属性值和文档本身编码一定要保持一致,否则就会出现解析错误。元素属性命名要符合规范,XML中的标签以外的所有空格和换行,XML解析程序都要一个个如实地交给下游程序去处理,所以在编写XML文件时,使用换行和缩进等方式来让原文件中的内容清晰可读的书写习惯是要改变的。当然,如果要保持原文本格式,可以用CDATA标记,它以 “<![CDATA[”开始,以“]]>”结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动地交给下游程序去处理。XML特殊字符同HTML特殊字符类似,定义基本没差别。
遵守XML基本语法规则和规范的XML文档就可以称之为“Well-formed XML”;一个遵守XML的基本语法规则、且符合为它指定的某个XML约束模式的XML文档就可以称之为“Valid XML”文档,即有效的XML文档。一个XML文档并不一定需要是有效的,但必须是格式良好的。先后出现的XML约束模式语言有XML DTD、XDR、SOX、XML Schema等等,其中视频主要讲解的是应用最广泛和具有代表意义的XML DTD和XML Schema。其中DTD是用另外一套语法规则定义的,而Schema是符合XML规范的,其本身就是XML文件。
对于DTD的知识,视频分如下步骤讲解:对DTD的初步认识、在XML文档中引入外部DTD文件、在XML文档中直接嵌入DTD定义语句、元素定义、属性定义、实体定义。XML文档通过使用 DOCTYPE 声明语句来指明它所遵循的DTD文件,DOCTYPE声明语句紧跟在XML文档声明语句后面,有两种格式:
(1)<!DOCTYPE 文档类型名称 SYSTEM "DTD文件的URL">
(2)<!DOCTYPE 文档类型名称 PUBLIC "DTD名称" "DTD文件的URL">
DTD语法中,元素定义格式是:<!ELEMENT 元素名称 使用规则>,属性定义格式是:<!ATTLIST 元素名 属性名 属性类型 设置说明>,当同一元素出现多属性定义时,可以直接重复元素名后面的三项设置。DTD中另外一个知识点就是实体的定义。实体可分为两种类型:引用实体和参数实体。实体的根本作用是为一段文本内容创建一个别名,以后在XML文档中就可以多次引用这个别名,XML解析器程序将把XML文档中出现的别名引用转变成其所对应的文本内容。在DTD定义中,实体定义格式是:<!ENTITY …>语句。了解以上知识后,对一个完整的XML文档的组成就有大致了解,分别是XML声明、DOCTYPE声明语句、处理指令、元素、注释、CDATA区。
在XML最后的视频片段中,主要讲解了XML Schema和名称空间。与DTD一样,XMLSchema也是描述XML文件的格式与内容的文档。XML Schema与DTD的比较:
1.XML Schema符合XML语法结构。
2.DOM、SAX等XML API很容易解析出XML Schema文档中的内容。
3.XML Schema则采用与XML文档同样的合法性验证机制。
4.XML Schema对名称空间支持得非常好。
5.XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。
6.XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。
7.XML Schema基本上满足了关系模式在数据描述上的需要。
8.XML Schema不能像DTD一样定义实体,比DTD更复杂。
视频中通过一个具体例子,对XML Schema有了一定的了解。最后视频讲解了名称空间,它是为了解决在不同的约束模式文档中,出现表示不同含义的相同标记名称。名称空间的声明格式:xmlns:前缀名称=“URI”,其中为了每个约束模式文档被赋以一个唯一的名称空间,每个名称空间都用一个唯一的URI表示,通常都习惯用RUL来表示。当没有“:前缀名称”时,文档中的XML元素就属于那个默认的名称空间。对于属性的名称空间有如下需要注意:XML实例文档中通常只需要将元素限定于该模式文档的名称空间中,而不需要将该元素的属性限定于名称空间中。如果属性名称中有一个前缀部分,该属性将被限定在该前缀所指定的名称空间中。如果属性名称中没有前缀部分,那么该属性就不属于任何名称空间。属性不受默认名称空间的影响。
最后一点就是怎么引入XML Schema。在XML文档根元素中定义如下属性:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.it315.org/xmlbook/schema
http://www.it315.org/xmlbook.xsd"
schemaLocation属性的设置值中包含有两个部分,第一个部分就是名称空间的URI,第二个部分就是该名称空间所标识的XML Schema文件的位置或URL地址,这两个部分之间用空格分隔。当引入多个名称空间时,在schemaLocation属性中按原来格式重复添加URI,两个不同名称空间的URI用空格隔开就行。当然,相应的名称空间肯定要定义在根元素中的,只是schemaLocation属性名称不用重复书写。另外一个就是不使用名称空间引入XML Schema:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="xmlbook.xsd"
其中前缀xsi表示的名称空间是属性noNamespaceSchemaLocation的名称空间,所以要用这个属性就必须使用它的名称空间。上面的schemaLocation属性也一样要使用名称空间http://www.w3.org/2001/XMLSchema-instance
关于XML的基础知识就学习完了,需要在下面好好练习、熟悉。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: