一、什么是 xml?
XML指可扩展标记语言(EXtensible Markup Language)。
XML被设计用来传输和存储数据。而HTML被设计用来显示数据。
XML的设计宗旨是传输数据,而非显示数据。
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准。
二、XML 与 HTML 的主要差异?
XML 不是 HTML 的替代。
XML 和 HTML 为不同的目的而设计:
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。
XML是不作为的。XML 被设计用来结构化、存储以及传输信息。
下面是 John 写给 George 的便签,存储为 XML:
George
John
Reminder
Don’t forget the meeting!
这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。
XML仅仅是纯文本
XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML。
通过 XML 您可以发明自己的标签
在 HTML 中使用的标签(以及 HTML 的结构)是预定义的。HTML 文档只使用在 HTML 标准中定义过的标签(比如
等等)。XML 没有预定义的标签, 允许创作者定义自己的标签和自己的文档结构。
XML 不是对 HTML 的替代
XML是对HTML的补充。XML 不会替代 HTML,理解这一点很重要。在大多数 web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。对 XML 最好的描述是:
XML 是独立于软件和硬件的信息传输工具。
XML 无所不在
XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。
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 - 用于描述可用的 web service
WAP 和 WML - 用于手持设备的标记语言
RSS - 用于 RSS Feed 的语言
RDF 和 OWL - 用于描述资源和本体
SMIL - 用于描述针针对 web 的多媒体
XML树结构:XML 文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。
XML文档必须包含根元素。该元素是所有其他元素的父元素。
XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。
所有元素均可拥有子元素。
…..
父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。所有元素均可拥有文本内容和属性(类似 HTML 中)。
三、语法规则
所有 XML 元素都须有关闭标签
注:声明不属于XML本身的组成部分。它不是 XML 元素,也不需要关闭标签。
XML便签对大小写敏感
标签 与标签 是不同的。必须使用相同的大小写来编写打开标签和关闭标签。
这是错误的。
这是正确的。
注释:打开标签和关闭标签通常被称为开始标签和结束标签。不论您喜欢哪种术语,它们的概念都是相同的。
XML必须正确地嵌套
在 XML 中,所有元素都必须彼此正确地嵌套:This text is bold and italic
不正确的嵌套:This text is bold and italic
必须有根元素
属性值须加引号
//date是元素note的属性
George
John
实体引用
在 XML 中,一些字符拥有特殊的意义。如果你把字符 “<” 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
这样会产生 XML 错误:if salary < 1000 then
为了避免这个错误,请用实体引用来代替 “<” 字符:
if salary < 1000 then
在XML中,有5个预定义的实体引用:
< < 小于
> > 大于
& & 和号
' ’ 单引号
" ” 引号
注释:在 XML 中,只有字符 “<” 和 “&” 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。
XML注释
在 XML 中编写注释的语法与 HTML 的语法很相似:
XML空格会被保留
HTML 会把多个连续的空格字符裁减(合并)为一个:
HTML: Hello my name is David.
输出: Hello my name is David.
文档中的空格不会被删节。
以LF存储换行
在 Windows 应用程序中,换行通常以一对字符来存储:回车符 (CR) 和换行符 (LF)。这对字符与打字机设置新行的动作有相似之处。在 Unix 应用程序中,新行以 LF 字符存储。而 Macintosh 应用程序使用 CR 来存储新行。
XML属性
属性通常提供不属于数据组成部分的信息。文档类型与数据无关,但是对需要处理这个元素的软件来说很重要:computer.gif
XML属性必须加引号:属性值必须被引号包围,单引号和双引号都可以。注:如果属性值本身包含双引号,那么有必要使用单引号包围它,就像这个例子:
避免 XML 属性?
因使用属性而引起的一些问题:
1、属性无法包含多重的值(元素可以)
2、属性无法描述树结构(元素可以)
3、属性不易扩展(为未来的变化)
4、属性难以阅读和维护
针对元数据的 XML 属性
有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML 中 ID 属性是一样的。这个例子向我们演示了这种情况:
George
John
Reminder
Don’t forget the meeting!
John
George
Re: Reminder
I will not
上面的 ID 仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分。