把专业文档带上万维网

可扩展标记语言(Extensible Markup Language,XML)产生于万维网内容日益复杂的时期。超文本标记语言(Hypertext Markup Language,HTML)适合描述网页常用结构,却无法为每个行业预先规定专门标签。出版机构和软件开发者需要交换具有自身结构的资料,并让不同厂商的程序读取。

XML的设计者从标准通用标记语言(Standard Generalized Markup Language,SGML)出发,保留可扩展结构、验证和人类可读等特点,同时缩减实现负担。1996年工作草案就把便于网络传递、便于编写处理程序,以及尽量减少可选特性列为目标。追求的是一套容易共同实现的规则,而非不断增加某家浏览器专用的标签。

参考:[2] [1]

跨机构协作与正式发布

万维网联盟(World Wide Web Consortium,W3C)于1996年组织相关工作,由太阳微系统公司的乔恩·博萨克主持,参与者包括结构化文档专家和多家软件企业。1996年11月14日的草案由蒂姆·布雷与芝加哥伊利诺伊大学的C. M. 斯珀伯格-麦奎因编辑;1998年定稿编辑还包括微软的让·保利。

XML 1.0于1998年2月10日成为W3C推荐标准。草案、建议推荐和正式推荐有不同的稳定程度:草案允许继续修改,正式推荐则意味着经过审议并得到推广采用的认可。故1998年应指向1.0规范定稿发布,不能把此前的SGML传统、工作组成立和早期草案都移到同一年。

参考:[1] [2]

标签说明结构,程序解释用途

以一个自拟的小例子说明,资料可以写成“<book><title>桥梁史</title></book>”。book表示外层元素,title表示其内部的标题,文字“桥梁史”则是内容。XML本身没有规定book必须怎样显示,也没有规定它就是某家书店的商品;这些用途要由交换双方的应用约定。可扩展性体现为能够定义适合资料的词汇。

为避免读取时出现歧义,XML要求元素正确嵌套、开始与结束名称匹配,并区分名称大小写。与SGML允许的一些简写方式相比,XML不接受省去标记边界、任意省略属性名等做法,属性值也须使用引号。写法显得重复,却使读取程序不必依靠复杂上下文猜测文档原意。

参考:[1] [3]

格式正确不等于内容合格

XML 1.0区分“良构”与“有效”。前者指符合基本语法,例如只有一个根元素、嵌套关系正确;后者还需满足文档类型定义(Document Type Definition,DTD)所规定的约束。一个标题元素即使在语法上没有问题,也可能不符合某类图书记录要求的子元素顺序。

这种区分使通用读取器与特定应用各有职责。处理器先报告字符和结构,应用再决定如何储存、显示或使用。规范还要求处理器接受UTF-8和UTF-16编码,为不同文字的交换提供共同基础。然而,通过DTD检查并不能证明书名、价格或日期在现实中真实,语法验证与事实核查仍是两回事。

参考:[1] [3]

早期工具怎样落实规范

1998年4月5日,詹姆斯·克拉克在XML开发者邮件列表宣布,其C语言解析器由xmltok改名为Expat,并发布新版本。公告说明该解析器正用于给Netscape Navigator 5和Perl加入XML支持。这是一项具体实现的发布记录,不意味着所有浏览器当时已经提供相同功能。

W3C自己的技术出版也成为应用场所。ArborText编制的XMLspec版本2.0设计报告,为规范正文、段落、交叉引用和文档元数据建立DTD;同一份源文件可服务于HTML、RTF和PostScript等输出。这里能看到XML的实际分工:统一保存结构,再由处理工具生成不同用途的文档。

参考:[4] [5]

开放格式的作用与边界

XML发布时面向行业标记、供应商中立的数据交换、协同写作和多种媒介的出版需求。它把文档结构从单一软件的私有表示中抽离出来,让接收方能够借助公开规则处理数据。但如果两方对同一标签含义理解不同,文件能成功读取,也不等于业务信息已经准确互通。

XML 1.0并不包办屏幕排版、数据库检索或行业词汇设计。名称空间、转换和其他配套技术的发展还须分别考察,不能倒写成首版已经完成的全部功能。其早期意义在于提供共同的文档语法和处理边界,并由解析器、出版流程及标准协作使这种共同格式成为可用的基础。

参考:[1] [5]