For faster navigation, this Iframe is preloading the Wikiwand page for XML.

XML

维基百科,自由的百科全书

此条目翻译品质不佳。翻译者可能不熟悉中文或原文语言,也可能使用了机器翻译,请协助翻译本条目或重新编写,并注意避免翻译腔的问题。明显拙劣的翻译请改挂((d|G13))提交删除。
可扩展标记语言
扩展名.xml
互联网媒体类型
  • application/xml
  • text/xml[1]
统一类型标识public.xml
UTI结构public.text
开发者万维网联盟
格式类型标记语言
扩展自SGML
扩展为
标准
自由格式

可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言。XML是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRLXPath等。

历史

1960年代,IBM开始发展的GMLGeneralized Markup Language)。

GML的重要概念:

  • 文件中能够明确的将标示与内容分开
  • 所有文件的标示使用方法均一致

1978年,ANSI将GML加以整理规范,发布成为SGML(The Standard Generalized Markup Language)。1986年,XML的前身起为ISO 8879,当时被广泛地运用在各种大型的文件计划中,但是SGML是一种非常严谨的文件描述法,导致过于庞大复杂,其标准手册就有500多页,这使它难以理解和学习,进而影响了推广与应用。

同时W3C也发现到HTML的问题:

  • 不能解决所有解释资料的问题 - 像是影音档或化学公式、音乐符号等其他形态的内容。
  • 性能问题 - 需要下载整份文件,才能开始搜索文件中的内容。
  • 扩展性、弹性、易读性均不佳。

为了解决以上问题,专家们使用SGML精简制作,并依照HTML的发展经验,产生出一套使用上规则严谨,但是简单的描述资料语言:XML。XML从1995年开始有其雏形,并向W3C万维网联盟)提案,而在1998年二月发布为W3C的标准(XML1.0)XML是在一个这样的背景下诞生的——为了有一个更中立的方式,让客户端自行决定要如何消化、呈现从服务端所提供的信息。

XML被广泛用来作为跨平台之间交互数据的形式,主要针对数据的内容,通过不同的格式化描述手段(XSLT,CSS等)可以完成最终的形式表达(生成对应的HTML,PDF或者其他的文件格式)。

用途

RecipeBook的例子,一种基于XML语法上的烹饪技术书刊。此标签可转换为:HTML, PDF以及Rich Text Format并使用编程语言或XSL。
RecipeBook的例子,一种基于XML语法上的烹饪技术书刊。此标签可转换为:HTML, PDF以及Rich Text Format并使用编程语言或XSL。

XML设计是用来传送和携带数据信息,不用于表现和展示数据,HTML则用来表现数据,所以XML用途的焦点是在于说明数据是什么以及携带数据信息。

  • 富文档(Rich Documents)- 自定文件描述并使其更丰富
    • 属于文件为主的XML技术应用
    • 标记是用来定义一份资料应该如何呈现
  • 元数据(Metadata)- 描述其它文件或网络资讯
    • 属于资料为主的XML技术应用
    • 标记是用来说明一份资料的意义
  • 配置文档(Configuration Files)- 描述软件设置的参数

重要术语

字符(characters)

XML 1.0规范允许的(转义后的最终解码值)合法字符: #x9(水平制表符)、#xA(回车符)、#xD(换行符)、#x20-#xD7FF、#xE000-#xFFFD、#x10000-#x10FFFF。即任何Unicode字符,不包含surrogate blocks, FFFE, FFFF。

XML规范定义了5个"预定义实体"来表示特殊字符. XML也允许在每个文档定义任意数量的其它命名实体.

下表列出了5个XML预定义实体. 通过名字引用这些实体的格式为&name;,例如, & 将绘制为&.

名字 字符 Unicode码位(十进制) 标准 描述
quot " U+0022 (34) XML 1.0 双引号
amp & U+0026 (38) XML 1.0 &
apos ' U+0027 (39) XML 1.0 撇号
lt < U+003C (60) XML 1.0 小于号
gt > U+003E (62) XML 1.0 大于号

处理器(Processor)与应用(application)

XML处理器(Processor,也称作XML parser)分析标记语言并传递结构化信息给应用(application)。

标记(Markup)与内容(content)

XML文档的字符分为标记(Markup)与内容(content)两类。标记通常以<开头,以>结尾;或者以字符& 开头,以;结尾。不是标记的字符就是内容。但是CDATA部分,分解符号<![CDATA[]]>是标记,二者之间的文本为内容。 最外界的空白符是标记。

标签(Tag)

一个tag属于标记结构,以<开头,以>结尾。Tag名字是大小写敏感,不能包括任何字符 !"#$%&'()*+,/;<=>?@[\]^`{|}~, 也不能有空格符, 不能以"-"或"."或数字开始。可分为三类:

  • start-tag,如<section>;
  • end-tag,如</section>;
  • empty-element tag,如<line-break />.

元素(Element)

元素是文档逻辑组成,或者在start-tag与匹配的end-tag之间,或者仅作为一个empty-element tag。例如:<greeting>Hello, world!</greeting>. 另一个例子是: <line-break />.

单个根(root)元素包含所有的其他元素。

属性(Attribute)

属性是一种标记结构,在start-tag或empty-element tag内部的“名字-值对”。例如:<img src="madonna.jpg" alt="Madonna" />。每个元素中,一个属性最多出现一次,一个属性只能有一个值。

如果属性有多个值,这需要采取XML协议以外的方式来表示,如采用逗号或分号间隔,对于CSS类或标识符的名字可用空格来分隔。

XML 声明(declaration)

XML文档如果以XML declaration开始,则表述了文档的一些信息。如<?xml version="1.0" encoding="UTF-8"?>.

XML定义结构、存储信息、传送信息。下例为小张发送给大元的便条,存储为XML。

<?xml version="1.0"?>
  <小纸条>
    <收件人>大元</收件人>
    <發件人>小張</發件人>
    <主題>問候</主題>
    <具體內容>早啊,飯吃了沒? </具體內容>
  </小纸条>

这XML文档仅是纯粹的信息标签,这些标签意义的展开依赖于应用它的程序。

结构

每个XML文档都由XML声明开始,在上面的代码中的第一行就是XML声明,<?xml version="1.0"?>。这一行代码会告诉解析器或浏览器,这个文件应该按照XML规则进行解析。

但是,根元素到底叫<小纸条>还是<小便条>,则是由文档类型定义(DTD)或XML纲要(XML Schema)定义的。如果DTD规定根元素必须叫<小便条>,那么若写作<小纸条>就不符合要求。这种不符合DTD或XML纲要的要求的XML文档,被称作不合法的XML,反之则是合法的XML

XML文件的第二行并不一定要包含文档元素;如果有注释或者其他内容,文档元素可以迟些出现。

最常见的PI(processing instruction,像XML序言, 却是不同类型的语法)是用来指定XML文件的样式表, 这个PI一般会直接放在XML序言之后,通常由Web浏览器使用,来将XML数据以特殊的样式显示出来。

XML的结构有一个缺陷,那就是不支持分帧(framing)。当多条XML消息在TCP上传输的时候,无法基于XML协议来确定一条XML消息是否已经结束。

参考文献

  1. ^ XML Media Types, RFC 7303. Internet Engineering Task Force. July 2014 [2016-07-06]. (原始内容存档于2022-04-18). 

延伸阅读

外部链接

参见

{{bottomLinkPreText}} {{bottomLinkText}}
XML
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.