资讯专栏INFORMATION COLUMN

XML入门

gityuan / 2843人阅读

摘要:的设计宗旨是传输数据,而不是显示数据。验证拥有正确语法的被称为形式良好的。文档不会携带有关如何显示数据的信息。命名空间命名空间提供避免元素命名冲突的方法。使用前缀来避免命名冲突在中的命名冲突可以通过使用名称前缀从而容易地避免。

1 XML简介 什么是XML?

XML 指可扩展标记语言(EXtensible Markup Language)。

XML 是一种标记语言。

XML 的设计宗旨是传输数据,而不是显示数据。

XML 标签没有被预定义。您需要自行定义标签。

XML 被设计为具有自我描述性。

XML 是 W3C 的推荐标准。

XML不会做任何事情

XML不会做任何事情,XML被设计用来结构化、存储以及传输信息。


Tove
Jani
Reminder
Don"t forget me this weekend!

上面的这条便签具有自我描述性。它包含了发送者和接受者的信息,同时拥有标题以及消息主体。
但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

上面实例中的标签没有在任何 XML 标准中定义过(比如 )。这些标签是由 XML 文档的创作者发明的。这是因为 XML 语言没有预定义的标签。

HTML 中使用的标签都是预定义的。HTML 文档只能使用在 HTML 标准中定义过的标签(如

等等)。XML 允许创作者定义自己的标签和自己的文档结构。

2 XML语法

XML文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。

一个XML文档实例

XML文档使用简单的具有自我描述性的语法:



Tove
Jani
Reminder
Don"t forget me this weekend!

第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(UTF-8)。

下一行描述文档的根元素(像在说:"本文档是一个便签"),接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body)。

语法规则 XML 文档必须有根元素

XML 必须包含根元素,它是所有其他元素的父元素

XML 声明

XML 声明文件的可选部分,如果存在需要放在文档的第一行

所有的 XML 元素都必须有一个关闭标签

在 XML 中,省略关闭标签是非法的。所有元素都必须有关闭标签。

note:
这个关闭标签的一种简写

XML 标签对大小写敏感

XML 标签对大小写敏感。标签 与标签 是不同的。必须使用相同的大小写来编写开始标签和结束标签。

XML 必须正确嵌套 XML 属性值必须加引号

与 HTML 类似,XML 元素也可拥有属性(名称/值的对)。在 XML 中,XML 的属性值必须加引号。

错误:

Tove
Jani


正确

Tove
Jani
实体引用

在 XML 中,一些字符拥有特殊的意义。如果您把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。

在 XML 中,有 5 个预定义的实体引用:

& lt; < less than
& gt; > greater than
& amp; & ampersand
& apos; " apostrophe
& quot; " quotation mark
XML 中的注释

在 XML 中编写注释的语法与 HTML 的语法很相似。

在 XML 中,空格会被保留 XML 以 LF 存储换行 3 XML元素 什么是XML元素?

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。

一个元素可以包含:

其他元素

文本

属性

或混合以上所有...

XML元素命名规则

XML 元素必须遵循以下命名规则:

名称可以包含字母、数字以及其他的字符

名称不能以数字或者标点符号开始

名称不能以字母 xml(或者 XML、Xml 等等)开始

名称不能包含空格

可使用任何名称,没有保留的字词。

XML元素是可扩展的

XML 的优势之一,就是可以在不中断应用程序的情况下进行扩展元素。

4 XML属性

XML元素具有属性,类似 HTML。

属性(Attribute)提供有关元素的额外信息,属性通常提供不属于数据组成部分的信息。

XML属性值必须加引号,单引号、双引号都可以。

属性 VS 元素

没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用元素。我的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用元素吧。


Anna
Smith



female
Anna
Smith

属性有如下限制:

属性不能包含多个值(元素可以)

属性不能包含树结构(元素可以)

属性不容易扩展(为未来的变化)

属性难以阅读和维护。请尽量使用元素来描述数据,而仅仅使用属性来提供与数据无关的信息。

针对元数据的XML属性

有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML 中 id 属性是一样的。这个实例向我们演示了这种情况:



Tove
Jani
Reminder
Don"t forget me this weekend!


Jani
Tove
Re: Reminder
I will not

上面的 id 属性仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分。

在此我们极力向您传递的理念是:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素

5 XML验证

拥有正确语法的XML被称为"形式良好"的XML。

有两种方式可以验证XML文件:XML DTD, XML Schema。

XML错误会终止您的程序

XML文档中的错误会终止您的 XML 应用程序。

W3C的XML规范声明:如果XML文档存在错误,那么程序就不应当继续处理这个文档。理由是,XML软件应当轻巧,快速,具有良好的兼容性。

XML DTD

DTD(文档类型定义)的作用是定义XML文档的合法构建模块。

通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。

通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。

而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。

您还可以使用 DTD 来验证您自身的数据。

DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

内部文档声明

假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:


带有DTD的XML文档实例:







]>

Tove
Jani
Reminder
Don"t forget me this weekend

以上 DTD 解释如下:

!DOCTYPE note (第二行)定义此文档是 note 类型的文档。
!ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"
!ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型
!ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型
!ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型
!ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型

外部文档声明

假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:





  Tove
  Jani
  Reminder
  Don"t forget me this weekend!

这是包含 DTD 的 "note.dtd" 文件:





note: SYSTEM表示DTD文件是私有的,PUBLIC表示DTD文件是共有的。

XML Schema 6 XML显示

在所有主流的浏览器中,均能够查看原始的 XML 文件。

ML 文档将显示为代码颜色化的根以及子元素。通过点击元素左侧的加号(+)或减号( - ),可以展开或收起元素的结构。要查看原始的 XML 源(不包括 + 和 - 符号),选择"查看页面源代码"或从浏览器菜单"查看源文件"。

XML 文档不会携带有关如何显示数据的信息。

由于 XML 标签由 XML 文档的作者"发明",浏览器无法确定像

这样一个标签究竟描述一个 HTML 表格还是一个餐桌。在没有任何有关如何显示数据的信息的情况下,大多数的浏览器都会仅仅把 XML 文档显示为源代码。

7 XML命名空间

XML 命名空间提供避免元素命名冲突的方法。

使用前缀来避免命名冲突

在 XML 中的命名冲突可以通过使用名称前缀从而容易地避免。

该 XML 携带某个 HTML 表格和某件家具的信息:



Apples
Bananas




African Coffee Table
80
120

在上面的实例中,不会有冲突,因为两个

元素有不同的名称。

xmlns属性

当在 XML中使用前缀时,前缀的命名空间必须被定义。

命名空间是在元素的开始标签的 xmlns 属性中定义的。

命名空间声明的语法如下。xmlns:前缀="URI"。命名空间,可以在他们被使用的元素中或者在 XML 根元素中声明:





Apples
Bananas




African Coffee Table
80
120




当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。

命名空间,可以在他们被使用的元素中或者在 XML 根元素中声明:




Apples
Bananas




African Coffee Table
80
120


命名空间 URI 不会被解析器用于查找信息,其目的是赋予命名空间一个惟一的名称

默认的命名空间

为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。它的语法如下:

xmlns="namespaceURI"
这个 XML 携带 HTML 表格的信息:

Apples Bananas
这个XML携带有关一件家具的信息: African Coffee Table80120

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110402.html

相关文章

  • SpringMVC入门笔记

    摘要:入门笔记简介是一种基于的实现了设计模式的请求驱动类型的轻量级框架,是系开源项目中的一个,和配合使用。配置在中需要添加使用的和映射规则。入门较快,而掌握起来相对较难。 SpringMVC入门笔记 1. 简介 Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架 ,是Spring系开源项目中的一个,和IoC配合使用。通过策略接口,Spring...

    zhaochunqi 评论0 收藏0
  • Activiti工作流从入门到入土:整合spring

    摘要:文章源码托管欢迎一前言在上一节中,通过一个入门程序,把的环境准备好了,这一节,将整合,并且部署一个最简单的流程图。测试结果四总结这一节通过整合,绘制简单的文件,然后成功部署了文件。 文章源码托管:https://github.com/OUYANGSIHA...欢迎 star !!! 一、前言 在上一节中,通过一个入门程序,把activiti的环境准备好了,这一节,将整合spring,并...

    piglei 评论0 收藏0
  • 爬虫入门到精通-网页的解析(xpath)

    摘要:起初的提出的初衷是将其作为一个通用的介于与间的语法模型。的基本使用要使用我们需要下载,在爬虫入门到精通环境的搭建这一章也说明怎么装,如果还没有安装的话,那就去下载安装吧直接看代码实战吧。 本文章属于爬虫入门到精通系统教程第六讲 在爬虫入门到精通第五讲中,我们了解了如何用正则表达式去抓取我们想要的内容.这一章我们来学习如何更加简单的来获取我们想要的内容. xpath的解释 XPath即为...

    ispring 评论0 收藏0
  • RPC框架是啥之Apache CXF一款WebService RPC框架入门教程

    摘要:支持相关规范和标准,包括同上。支持多种传输协议和协议绑定数据绑定。构建端还有其服务实现,接口使用注解,标明是一个远程服务接口。然后编写一个的启动程序,并运行,我想你会成功的因为我看到了下图是一种跨平台的技术协议。 本博客 猫叔的博客,转载请申明出处 学习系列 RPC框架是啥? RPC框架是啥之Java自带RPC实现,RMI框架入门 Apache CXF一款WebService RP...

    SolomonXie 评论0 收藏0
  • Struts2开发入门指南

    摘要:作为一个开发框架,它为我们很好的提供了一个开发模板,使用可以减轻开发人员的负担并且可以增强程序的可读性,下面我们来说说如何使用做一个小例子开发所需要的工具开发环境开发的包一个文档模板开发开发分为以下四步完成导入相应的包在文档中配置的核 **Struts2**作为一个开发框架,它为我们很好的提供了一个开发模板,使用**Struts2**可以减轻开发人员的负担并且可以增强程序的可读性,下面...

    notebin 评论0 收藏0

发表评论

0条评论

gityuan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<