XML
XML
可扩展标记语言(,简称:--
)是一种标记语言和用于存储、传输和重构松散数据的文件格式。它定义了一系列编码文档的规则以使其在人类可读的同时机器可读。万维网联盟于1998年发布的 XML 1.0 规范和其他相关开源标准共同定义了 XML。
XML 的设计目标是注重简洁、通用和因特网可用性。它是一种通过 Unicode 编码实现对多种语言有强大支持的文本数据格式。尽管 XML 的设计重心在于文档,它被广泛应用于网络服务中松散数据结构的表示。
总览.
XML 的主要目的是序列化(如存储、传输和重构松散数据)。对于两个需要传输信息的不同系统,它们也需要在文件格式上达成一致。XML 规范了这个流程,因此其类似于用于表示信息的通用语言。
作为一个标记语言,XML 标记,分类和在结构方面组织数据。XML 标签代表结构且包含元数据,标签内是照 XML 标准编码的数据。一个附加的 XML 结构(XSD)定义了用于解释和验证 XML 的必要的元数据(这也被称为结构典范)。一个符合 XML 基本语法的文档是“结构良好”的(well-formed),一个符合其附加结构的是“有效”(valid)的。
互联网工程任务组的 RFC 7303(取代了旧的 RFC 3023)提供了用于构造 XML 中媒体类型的规则。它定义了三种媒体类型:
application/xml (text/xml是一个别名)
application/xml-external-parsed-entity (text/xml-external-parsed-entity是一个别名)
application/xml-dtd
它们被用于在不暴露内容的同时传输未经处理的 XML 文件。RFC 7303 还建议基于 XML 的语言的媒体类型应以 +xml 结尾(如 SVG 的 image/svg+xml)。
对于 XML 在网络中的进一步使用指南于 RFC 3470 (也被称为 IETF BCP 70,包含设计部署基于 XML 的语言的各个方面)提出。
应用.
XML 在互联网信息交换中已经被广泛应用。数以百计使用 XML 语法的文档格式(包括 RSS、Atom、Office Open XML、OpenDocument、SVG、COLLADA 和 XHTML)被开发出来。XML 还为多种通信协议(如 SOAP 和 XMPP)提供了基础语言。它还是AJAX使用的信息交换格式之一。
许多工业数据标准,如Health Level 7、OpenTravel Alliance、FpML、MISMO和National Information Exchange Model,基于 XML 和 XML 附加结构丰富的特性。在出版领域,Darwin Information Typing Architecture 是一个 XML 行业数据标准。XML 被广泛应用与支持各种出版格式。
关键术语.
该部分内容基于 XML 规范。注意这并不是一个详尽的列出所有结构的列表,而是提供 XML 中常见组成的介绍。
字符( Character ).
XML 1.0 规范允许的(转义后的最终解码值)合法字符: #x9(水平制表符)、#xA(回车符)、#xD(换行符)、#x20-#xD7FF、#xE000-#xFFFD、#x10000-#x10FFFF。即任何Unicode字符,不包含 surrogate blocks, FFFE, FFFF。
XML 规范定义了5个"预定义实体"来表示特殊字符. XML也允许在每个文档定义任意数量的其它命名实体.
下表列出了5个XML预定义实体. 通过名字引用这些实体的格式为codice_1,例如, codice_2 将绘制为&.
处理器( Processor )与应用( Application ).
XML 处理器(Processor,也称作XML parser)分析标记语言并传递结构化信息给应用(application)。
XML 规范规定了处理器要做什么不能做什么,但是应用并不在其讨论范围内。规范称之为处理器的东西一般被通俗的称为 XML 解析器。
标记( Markup )与内容( Content ).
XML文档的字符分为标记(Markup)与内容(content)两类。可由简单的语法判断出来:标记通常以codice_3开头,以codice_4结尾;或者以字符codice_5 开头,以codice_6结尾。不是标记的字符就是内容。但是CDATA部分,分解符号codice_7与codice_8是标记,二者之间的文本为内容。 最外界的空白符是标记。
标签( Tag ).
一个"tag"属于标记结构,以codice_3开头,以codice_4结尾。Tag名字是大小写敏感,不能包括任何字符 !"#$%&'()*+,/;?@[\]^`~ ,也不能包含空格,并且不能以“-”、 “.”或数字开头
例.
XML定义结构、存储信息、传送信息。下例为小张发送给大元的便条,存储为XML。
这XML文档仅是纯粹的信息标签,这些标签意义的展开依赖于应用它的程序。
结构.
每个XML文档都由XML声明开始,在上面的代码中的第一行就是XML声明,。这一行代码会告诉解析器或浏览器,这个文件应该按照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消息是否已经结束。
延伸阅读.