XML手册

心不动则不痛 提交于 2020-01-07 01:45:22

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

XML手册

概述

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

XML 被设计用来传输和存储数据。

什么是XML

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

  • XML 是一种标记语言,很类似 HTML

  • XML 的设计宗旨是传输数据,而非显示数据

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

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

  • XML 是 W3C 的推荐标准

XML 与 HTML 的主要差异

  • XML 不是 HTML 的替代。

  • XML 和 HTML 为不同的目的而设计:

  • XML 被设计为传输和存储数据,其焦点是数据的内容。

  • HTML 被设计用来显示数据,其焦点是数据的外观。

  • HTML 旨在显示信息,而 XML 旨在传输信息。

XML 的用途

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 version="1.0" encoding="ISO-8859-1"?>
    <note>
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
</note>

第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 (ISO-8859-1 = Latin-1/西欧字符集)。

下一行描述文档的根元素(像在说:“本文档是一个便签”):

<note>

接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body):

<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>

最后一行定义根元素的结尾:

</note>

从本例可以设想,该 XML 文档包含了 John 给 George 的一张便签。

XML声明

XML声明包含了准备XML处理器解析XML文档的详细信息。它是可选的,但在使用时,它必须出现在XML文档中的第一行。

下面的句法是XML声明语法:

<?xml
   version="version_number"
   encoding="encoding_declaration"
   standalone="standalone_status"
?>

详细语法:

每个参数包含一个参数的名称,等号报价中号(=)和参数值。

参数 参数 参数说明
版本 1.0 指定XML标准所使用的版本.
编码 UTF-8, UTF-16, ISO-10646-UCS-2, ISO-10646-UCS-4, ISO-8859-1 to ISO-8859-9, ISO-2022-JP, Shift_JIS, EUC-JP 它定义了文档中使用的字符编码。 UTF-8是使用的默认编码.
单机 . 它通知文件是否依赖于信息从外部源,诸如外部的文档类型定义(DTD)的语法分析程序,其内容。默认值被设置为无。将其设置为yes告诉处理器有需要解析的文件没有外部声明。

说明

一个XML声明,应当遵守下列规定

  • 如果XML声明是存在于XML中,必须将其放置为在XML文档中的第一行。

  • 如果XML声明包含,它必须包含版本号属性。

  • 参数名称和值是区分大小写的。

  • 该名总是以小写字母。

  • 放置参数的顺序是很重要的。正确的顺序是:版本,编码和独立。

  • 可用于单个或双引号。

  • XML声明没有结束标签。

实例

XML声明不带参数:

<?xml >

XML声明与版本定义:

<?xml version="1.0">

XML声明与定义的所有参数:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

XML声明在单引号中定义的所有参数:

<?xml version='1.0' encoding='iso-8859-1' standalone='no' ?>

XML标签

XML标签组成的XML的基础。它定义了在XML中的元素的范围。它也可以被用来插入注释,声明需要解析的环境设置和插入特殊指令。

开始标签

每一个非空的XML元素的开始的标志是一个开始标签。开始标记的一个例子是:

<address>

结束标签

有一个开始标签应该结束标记结束的每一个元素。结束标签的一个例子是:

</address>

请注意,结束标记包含斜线(“/”)元素的名称前.

空标签

在开始标签和结束标签之间的文本被称为内容。这是没有内容的元素称为空。一个空元素可以用两种方法,如下表示:

(1) 起始标签紧跟一个结束标签,如下图所示:

<hr></hr>

(2) 一 个完整的空元素标签,如下图所示:

<hr />

空元素标签可以用于其中没有内容的任何元件.

XML标签规则

  • XML标签是区分大小写的。

正确语法

<address>这是正确的句法</address>

错误语法

<address>这是错误的句法</Address>
  • XML标记必须是封闭在一个合适的顺序

正确语法

<outer_element>
   <internal_element>
      This tag is closed before the outer_element
   </internal_element>
</outer_element>

XML元素

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。

XML元素语法:

<element-name attribute1 attribute2>
....content
</element-name>
  • XML元素 是元素的名称 name 开始和结束标记必须匹配

  • ATTRIBUTE1,attribute2 是由空格分隔的元素的属性。属性定义了元素的属性。它关联的名称与价值,这是字符的字符串。属性被写为:属性名后跟一个等号(=)和双引号(“”)或单引号(''),引号内的字符串值。

    name = "value"

空元素

空元素(没有内容的元素)的语法如下:

<name attribute1 attribute2.../>

XML元素规则

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

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

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

  • 名称不能以字符 “xml”(或者 XML、Xml)开始

  • 名称不能包含空格

  • 开始和结束标记必须必须相同。

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

XML属性

属性 (Attribute) 提供关于元素的额外(附加)信息。

XML属性有以下语法:

<element-name attribute1 attribute2 >
....content..
< /element-name>

这里 attribute1 和 attribute2 具有以下形式:

name = "value"

值必须在双 (" ") 或单 (' ') quotes. 在这里 attribute1 和 attribute2 是独特的属性标签.

属性是用来添加一个唯一的标签元素,将标签贴在一个类别,添加一个布尔标志,或用一些数据字符串相关联。

避免 XML 属性?

因使用属性而引起的一些问题:

  • 属性无法包含多重的值(元素可以)

  • 属性无法描述树结构(元素可以)

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

  • 属性难以阅读和维护

请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

不要做这样的蠢事(这不是 XML 应该被使用的方式):

<note day="08" month="08" year="2008"
to="George" from="John" heading="Reminder" 
body="Don't forget the meeting!">
</note>

XML属性规则

以下是需要遵循的属性的规则:

  • 属性名称不能在同一起始标签或空元素标签中出现一次.

  • 一个属性必须使用属性表声明的文档类型定义(DTD)的声明.

  • 属性值不能包含直接或间接的实体引用外部实体.

  • 任何实体的替换文本称为直接或间接的属性值中不能包含任何小于号 <

XML注释

注释可以用于包括相关的链接信息和术语。注释可以出现在XML代码的任何地方.

XML注释语法:

 <!-------注释----->

注释以<! - 和结尾 - >。您可以添加文字说明作为字符之间意见。不能嵌套内另一个注释.

实例

<?xml version="1.0" encoding="UTF-8" ?>
<!---Students grades are uploaded by months---->
<class_list>
   <student>
      <name>Tanmay</name>
      <grade>A</grade>
   </student>
</class_list>

XML注释规则

需要以下规则应遵循的XML注释:

  • 注释可以XML声明之前不会出现。

  • 注释可以出现在文档中的任意位置.

  • 注释不能在属性值将出现.

  • 在另一个注释注释不能嵌套.

XML字符实体

文档实体工作为实体的根本和XML处理器的出发点.

字符实体类型

有三种类型的字符实体:

  • 预定义的字符实体

  • 编号字符实体

  • 命名字符实体

预定义的字符实体

在 XML 中,一些字符拥有特殊的意义。

如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。

这样会产生 XML 错误:

<message>if salary < 1000 then</message>

为了避免这个错误,请用实体引用来代替 "<" 字符:

<message>if salary &lt; 1000 then</message>

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

< < 小于
> > 大于
& & 和号
' ' 单引号
" " 引号

注释:在 XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。

数字字符实体

数字参考用于表示一个字符实体。参考数值可以是十进制或十六进制格式。由于有数以千计的数字参考用,这些都是有点难以记住。数字引用指的是字符由它在Unicode字符集数.

十进制数值参考一般的语法是:

&#十进制数 ;

十六进制数字参考一般语法如下:

&#x的十六进制数; ;

下表列出了它们的数值一些预定义的字符实体:

实体名称 性格 十进制参考 十六进制参考
quot " " "
amp & & &
apos ' ' '
lt < < <
gt > > >

命名的字符实体

因为它是很难记住的数字字符,字符实体的最佳类型是已命名的字符实体。在这里,每一个实体标识的名称.

XML CDATA

所有 XML 文档中的文本均会被解析器解析。只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。

CDATA的语法:

<![CDATA[
   characters with markup
]]>

上述的语法是由三个部分组成:

  • <![CDATA[开始

  • ]]> 结束

  • 之间的字符被解释为字符,而不是作为标记。这部分可以含有标记字符(<,>,和&),但它们是由XML处理器忽略.

实例

<script>
<![CDATA[
   <message> Welcome to XML !</message>
]] >
</script >

在上面的语法中,<message></message>的所有内容将被视为字符数据,而不是作为标记

CDATA规则

  • CDATA 部分不能包含字符串 ]]>

  • 也不允许嵌套的 CDATA 部分。

  • 标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。

XML空白

空白是空格,制表符和换行符的集合。它通常被用来使一个文件的可读性.

XML文档包含两种类型的空白 (a) 显著空白(b) 和无关紧要的空白.

显著空白

该显著空白是包含文本和标记一起元素中。例如:

<name>TanmayPatil</name>

<name>Tanmay Patil</name>

上述两个因素是由于 Tanmay 和 Patil 之间的空间中的不同. 任何程序在XML文件中读取此元件必须保持的区别.

无关紧要的空白

无意义的空白意味着这里只允许元素含量的空间。例如:

<address.category="residence">

<address....category="..residence">

上面的两个例子是一样的。这里,该空间是由点来表示 (.). 在上面的例子中, 地址 和 分类 之间的空间是无关紧要的.

名为一个特殊的属性 xml:space 可以连接到一个元素. 这表明,空白不应该由应用程序的元素删除. 您可以将此属性设置为 默认 或 保存 如下面的例子:

<!ATTLIST address  xml:space (default|preserve) 'preserve'>

XML 验证

拥有正确语法的 XML 被称为“形式良好”的 XML。通过 DTD 验证的 XML 是“合法”的 XML。

验证是由一个XML文档进行验证的过程。 XML文档被认为是有效的,如果它的内容相匹配的元素,属性和相关联的文档类型定义(DTD),并且如果该文件符合表示在它的约束。验证处理方式有两种XML解析器:

  • 格式良好的XML文档

  • 有效的XML文档

形式良好的 XML 文档

“形式良好”(Well Formed)的 XML 文档会遵守前几章介绍过的 XML 语法规则:

  • XML 文档必须有根元素

  • XML 文档必须有关闭标签

  • XML 标签对大小写敏感

  • XML 元素必须被正确的嵌套

  • XML 属性必须加引号

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!