XML入门经典教程.docx
《XML入门经典教程.docx》由会员分享,可在线阅读,更多相关《XML入门经典教程.docx(19页珍藏版)》请在冰豆网上搜索。
![XML入门经典教程.docx](https://file1.bdocx.com/fileroot1/2023-1/28/b7d163ff-d1e0-4022-84ec-875c48abe3d9/b7d163ff-d1e0-4022-84ec-875c48abe3d91.gif)
XML入门经典教程
XML入门经典教程
XML基础
什么是XML,以及它与HTML的区别。
不同的XML使用方式。
XML文档如何形成一种有逻辑的树结构。
有逻辑且非常简单的XML语法规则。
XML元素、内容和命名规则、父与子元素之间的关系。
如何使用XML属性提供关于元素的额外信息。
形式良好的文档与合法文档之间的差异,以及如何规定XML文档的结构。
简单的XML在线语法检查工具。
大部分常用的浏览器对XML的支持
如何通过您的浏览器来查看XML文件。
如何使用CSS来显示一个XML文件。
如何使用XSL来显示一个XML文件。
XMLJavaScript
如何使用浏览器来读取、更新、创建并操作XML文档。
关于XML文档对象模型(DOM)。
如何在HTML文档中显示XML数据。
如何在不重新加载页面的情况下,使用来自服务器的数据对页面进行更新。
如何使用XML数据和JavaScript来创建复杂的HTML应用程序。
XML高级
如何使用XML命名空间避免元素命名冲突。
如何告知XML解析器不去解析文本。
如何在您的XML文档使用不同的字符集。
如何从服务器端输出XML。
更多关于XML文档对象模型的知识。
本节讲解在在使用XML时尽量避免使用的技术。
通常地,我们在数据库中存储数据。
不过,假如我们希望数据更加易用,那么可以将数据存储于XML文件之中。
与XML相关的最常用的技术。
在现实世界中XML如何被使用的例子。
当编辑XML文档时,为什么要使用XML编辑器。
本文包括在本教程所学内容的一个总结,以及我们向你推荐的下一步应该学习的内容。
XML实例/测验
非常多的XML实例!
在W3School测试你的XML技能!
01、XML简介
∙
∙
XML被设计用来传输和存储数据。
HTML被设计用来显示数据。
应该掌握的基础知识:
在您继续学习之前,需要对以下知识有基本的了解:
∙HTML/XHTML
∙JavaScript
如果您希望首先学习这些项目,请在我们的访问这些教程。
什么是XML?
∙XML指可扩展标记语言(EXtensibleMarkupLanguage)
∙XML是一种标记语言,很类似HTML
∙XML的设计宗旨是传输数据,而非显示数据
∙XML标签没有被预定义。
您需要自行定义标签。
∙XML被设计为具有自我描述性。
∙XML是W3C的推荐标准
XML与HTML的主要差异
XML不是HTML的替代。
XML和HTML为不同的目的而设计:
XML被设计为传输和存储数据,其焦点是数据的内容。
HTML被设计用来显示数据,其焦点是数据的外观。
HTML旨在显示信息,而XML旨在传输信息。
XML是不作为的(没有任何行为的XML)
也许这有点难以理解,但是XML不会做任何事情。
XML被设计用来结构化、存储以及传输信息。
下面是John写给George的便签,存储为XML:
George
John
Reminder
Don'tforgetthemeeting!
这个标签有标题以及留言。
它也包含了发送者和接受者的信息。
但是,这个XML文档仍然没有做任何事情。
它仅仅是包装在XML标签中的纯粹的信息。
我们需要编写软件或者程序,才能传送、接收和显示出这个文档。
XML仅仅是纯文本
XML没什么特别的。
它仅仅是纯文本而已。
有能力处理纯文本的软件都可以处理XML。
不过,能够读懂XML的应用程序可以有针对性地处理XML的标签。
标签的功能性意义依赖于应用程序的特性。
通过XML您可以发明自己的标签
上例中的标签没有在任何XML标准中定义过(比如和)。
这些标签是由文档的创作者发明的。
这是因为XML没有预定义的标签。
在HTML中使用的标签(以及HTML的结构)是预定义的。
HTML文档只使用在HTML标准中定义过的标签(比如
、
等等)。
XML允许创作者定义自己的标签和自己的文档结构。
XML不是对HTML的替代
XML是对HTML的补充。
XML不是对HTML的替代,理解这一点很重要。
在大多数web应用程序中,XML用于传输数据,而HTML用于格式化并显示数据。
对XML的最好的描述是:
XML是独立于软件和硬件的信息传输工具。
XML是W3C的推荐标准
可扩展标记语言(XML)于1998年2月10日成为W3C的推荐标准。
XML无所不在
当我们看到XML标准突飞猛进的开发进度,以及大批的软件开发商采用这个标准的日新月异的速度时,真的是不禁感叹这真是令人叹为观止。
目前,XML在Web中起到的作用不会亚于一直作为Web基石的HTML。
XML无所不在。
XML是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。
02、XML的用途
∙
∙
XML应用于web开发的许多方面,常用于简化数据的存储和共享。
XML把数据从HTML分离
如果你需要在HTML文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑HTML。
通过XML,数据能够存储在独立的XML文件中。
这样你就可以专注于使用HTML进行布局和显示,并确保修改底层数据不再需要对HTML进行任何的改变。
通过使用几行JavaScript,你就可以读取一个外部XML文件,然后更新HTML中的数据内容。
您将在稍后的章节学习更多这方面的内容。
XML简化数据共享
在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据。
XML数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。
这让创建不同应用程序可以共享的数据变得更加容易。
XML简化数据传输
通过XML,可以在不兼容的系统之间轻松地交换数据。
对开发人员来说,其中一项最费时的挑战一直是在因特网上的不兼容系统之间交换数据。
由于可以通过各种不兼容的应用程序来读取数据,以XML交换数据降低了这种复杂性。
XML简化平台的变更
升级到新的系统(硬件或软件平台),总是非常费时的。
必须转换大量的数据,不兼容的数据经常会丢失。
XML数据以文本格式存储。
这使得XML在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新的浏览器。
XML使您的数据更有用
由于XML独立于硬件、软件以及应用程序,XML使您的数据更可用,也更有用。
不同的应用程序都能够访问您的数据,不仅仅在HTML页中,也可以从XML数据源中进行访问。
通过XML,您的数据可供各种阅读设备使用(手持的计算机、语音设备、新闻阅读器等),还可以供盲人或其他残障人士使用。
XML用于创建新的Internet语言
很多新的Internet语言是通过XML创建的:
其中的例子包括:
∙XHTML-最新的HTML版本
∙WSDL-用于描述可用的webservice
∙WAP和WML-用于手持设备的标记语言
∙RSS-用于RSSfeed的语言
∙RDF和OWL-用于描述资源和本体
∙SMIL-用于描述针针对web的多媒体
03、XML树结构
∙
∙
XML文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。
一个XML文档实例
XML使用了简单的具有自我描述性的语法:
xmlversion="1.0"encoding="ISO-8859-1"?
>
George
John
Reminder
Don'tforgetthemeeting!
第一行是XML声明。
它定义XML的版本(1.0)和所使用的编码(ISO-8859-1=Latin-1/西欧字符集)。
下一行描述文档的根元素(像在说:
“本文档是一个便签”):
接下来4行描述根的4个子元素(to,from,heading以及body):
George
John
Reminder
Don'tforgetthemeeting!
最后一行定义根元素的结尾:
从本例可以设想,该XML文档包含了John给George的一张便签。
XML具有出色的自我描述性,你同意吗?
XML文档形成一种树结构
XML文档必须包含根元素。
该元素是所有其他元素的父元素
XML文档中的元素形成了一棵文档树。
这棵树从根部开始,并扩展到树的最底端。
所有元素均可拥有子元素:
.....
父、子以及同胞等术语用于描述元素之间的关系。
父元素拥有子元素。
相同层级上的子元素成为同胞(兄弟或姐妹)。
所有元素均可拥有文本内容和属性(类似HTML中)。
实例
上图表示下面的XML中的一本书:
EverydayItalian
GiadaDeLaurentiis
2005
30.00
HarryPotter
JK.Rowling
2005
29.99
LearningXML
ErikT.Ray
2003
39.95
例子中的根元素是。
文档中的所有元素都被包含在中。
元素有4个子元素:
、、、。
04、XML语法规则
∙
∙
XML的语法规则很简单,且很有逻辑。
这些规则很容易学习,也很容易使用。
所有XML元素都须有关闭标签
在HTML,经常会看到没有关闭标签的元素:
Thisisaparagraph
Thisisanotherparagraph
在XML中,省略关闭标签是非法的。
所有元素都必须有关闭标签:
Thisisaparagraph
Thisisanotherparagraph
注释:
您也许已经注意到XML声明没有关闭标签。
这不是错误。
声明不属于XML本身的组成部分。
它不是XML元素,也不需要关闭标签。
XML标签对大小写敏感
XML元素使用XML标签进行定义。
XML标签对大小写敏感。
在XML中,标签与标签是不同的。
必须使用相同的大小写来编写打开标签和关闭标签:
这是错误的。
这是正确的。
注释:
打开标签和关闭标签通常被称为开始标签和结束标签。
不论您喜欢哪种术语,它们的概念都是相同的。
XML必须正确地嵌套
在HTML中,常会看到没有正确嵌套的元素:
Thistextisboldanditalic
在XML中,所有元素都必须彼此正确地嵌套:
Thistextisboldanditalic
在上例中,正确嵌套的意思是:
由于元素是在元素内打开的,那么它必须在元素内关闭。
XML文档必须有根元素
XML文档必须有一个元素是所有其他元素的父元素。
该元素称为根元素。
.....
XML的属性值须加引号
与HTML类似,XML也可拥有属性(名称/值的对)。
在XML中,XML的属性值须加引号。
请研究下面的两个XML文档。
第一个是错误的,第二个是正确的:
George
John
George
John
在第一个文档中的错误是,note元素中的date属性没有加引号。
实体引用(<>’”&)
在XML中,一些字符拥有特殊的意义。
如果你把字符"<"放在XML元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
这样会产生XML错误:
ifsalary<1000then
为了避免这个错误,请用一个实体引用来代替"<"字符:
ifsalary<1000then
在XML中,有5个预定义的实体引用:
<
<
小于
>
>
大于
&
&
和号
'
'
单引号
"
"
引号
注释:
在XML中,只有字符"<"和"&"确实是非法的。
大于号是合法的,但是用实体引用来代替它是一个好习惯。
XML中的注释
在XML中编写注释的语法与HTML的语法很相似:
--Thisisacomment-->
XML中的空格会被保留
HTML会把多个连续的空格字符裁减为一个:
HTML:
HellomynameisDavid.
输出:
HellomynameisDavid.
在XML中,文档中的空格不会被删节。
XML以LF存储换行
在Windows应用程序中,换行通常以一对字符来存储:
回车符(CR)和换行符(LF)。
这对字符与打字机设置新行的动作有相似之处。
在Unix应用程序中,新行以LF字符存储。
而Macintosh应用程序使用CR来存储新行。
05、XML元素
∙
∙
XML文档包含XML元素。
什么是XML元素?
XML元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含其他元素、文本或者两者的混合物。
元素也可以拥有属性。
HarryPotterJK.Rowling
2005
29.99
LearningXMLErikT.Ray
2003
39.95
在上例中,和都拥有元素内容,因为它们包含了其他元素。
只有文本内容,因为它仅包含文本。
在上例中,只有元素拥有属性(category="CHILDREN")。
XML命名规则
XML元素必须遵循以下命名规则:
∙名称可以含字母、数字以及其他的字符
∙名称不能以数字或者标点符号开始
∙名称不能以字符“xml”(或者XML、Xml)开始
∙名称不能包含空格
可使用任何名称,没有保留的字词。
最佳命名习惯
使名称具有描述性。
使用下划线的名称也很不错。
名称应当比较简短,比如:
,而不是:
。
避免"-"字符。
如果您按照这样的方式进行命名:
"first-name",一些软件会认为你需要提取第一个单词。
避免"."字符。
如果您按照这样的方式进行命名:
"first.name",一些软件会认为"name"是对象"first"的属性。
避免":
"字符。
冒号会被转换为命名空间来使用(稍后介绍)。
XML文档经常有一个对应的数据库,其中的字段会对应XML文档中的元素。
有一个实用的经验,即使用数据库的名称规则来命名XML文档中的元素。
非英语的字母比如éòá也是合法的XML元素名,不过需要留意当软件开发商不支持这些字符时可能出现的问题。
XML元素是可扩展的(增加新元素)
XML元素是可扩展,以携带更多的信息。
请看下面这个XML例子:
George
John
Don'tforgetthemeeting!让我们设想一下,我们创建了一个应用程序,可将、以及元素提取出来,并产生以下的输出:
MESSAGE
To:
George
From:
John
Don'tforgetthemeeting!
想象一下,之后这个XML文档作者又向这个文档添加了一些额外的信息:
2008-08-08
George
John
Reminder
Don'tforgetthemeeting!那么这个应用程序会中断或崩溃吗?
不会。
这个应用程序仍然可以找到XML文档中的、以及元素,并产生同样的输出。
XML的优势之一,就是可以经常在不中断应用程序的情况进行扩展。
06、XML属性
∙
∙
XML元素可以在开始标签中包含属性,类似HTML。
XML属性(Attribute)提供关于元素的额外信息
XML属性
从HTML,你会回忆起这个:
。
"src"属性提供有关
元素的额外信息。
在HTML中(以及在XML中),属性提供有关元素的额外信息:
属性通常提供不属于数据组成部分的信息。
在下面的例子中,文件类型与数据无关,但是对需要处理这个元素的软件来说却很重要:
<"gif">computer.gif
XML属性必须加引号(单/双引号,如果属性值本身包含双引号,那么使用实体引用,或者可以使用单引号包围它)
属性值必须被引号包围,不过单引号和双引号均可使用。
比如一个人的性别,person标签可以这样写:
或者这样也可以:
注释:
如果属性值本身包含双引号,那么有必要使用单引号包围它,就像这个例子:
或者可以使用实体引用:
XML元素vs.属性
请看这些例子:
Anna
Smith
female
Anna
Smith
在第一个例子中,sex是一个属性。
在第二个例子中,sex则是一个子元素。
两个例子均可提供相同的信息。
没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。
我的经验是在HTML中,属性用起来很便利,但是在XML中,您应该尽量避免使用属性。
如果信息感觉起来很像数据,那么请使用子元素吧。
我最喜欢的方式
下面的三个XML文档包含完全相同的信息:
第一个例子中使用了date属性:
George
John
Reminder
Don'tforgetthemeeting!第二个例子中使用了date元素:
08/08/2008
George
John
Reminder
Don'tforgetthemeeting!第三个例子中使用了扩展的date元素(这是我的最爱):
08
08
2008
George
John