对 XML 来说,2007 年又是发展较为平缓的一年。但是在这一年中,一些重要的规范都升级到了 1.0 版,XML 在信息发布(Web 和传统形式)方面得到持续发展。更重要的是,REST 与 Web 服务的碰撞引起了轩然大波,整个 Web 服务领域产生了重大变化。引起这一巨变的最主要技术是 POX(plain old XML),POX 文档可以通过标准 HTTP 传送,而且不会被任何模式或规范羁绊(一些人在多年前就预感到这一结果,但是正如 Roy Fielding 所说,行业最终会亲自检验)。
REST 并不是惟一隐含其强大功能的技术。XML 的全部潜力也即将充分发挥。在这一年里,Atom 发布协议(Atom Publishing Protocol,APP)和 XQuery 升级到了 1.0 版,而它们带来的影响才刚刚开始。
在过去十年中,XML 经历了无数次挑战,不管是来自功能强劲的技术,还是来自名不符实的技术(YAML、SML、S-表达式,以及其他遭竞争淘汰的技术),但是 2007 年 JSON 的流行却是对它最大的挑战。尽管 JSON 的适用性有限、存在安全问题,而且应用程序编程接口(API)设计并不完善,但是这并没能阻碍它的进一步推广,明年其使用率似乎还会继续增长。
1 月
在过去 5 年中,XQuery 总是被认为是 “下一年” 就会实现的技术,这个承诺终于在 1 月份得以兑现,XQuery 1.0 在 1 月正式发布。一些纯 XML 数据库已经实现了它,包括 Mark Logic、eXist、Sedna 和 Berkeley DB XML。一些混合数据库也提供了对 XQuery 的支持,包括 IBM® DB2® 9 和 Oracle 10g。XQuery 还被一些独立产品采用,包括 Michael Kay 的 Saxon 和 DataDirect XQuery。
但是故事并没有就此完结。XQuery 只是整个解决方案的一小部分。用 CRUD 的话来说,XQuery 是不包含创建(Create)、更新(Update)或删除(Delete)的读(Read)操作。不得不通过专用的扩展来添加这些必需的功能。这意味着不能轻易地将一个应用程序或数据库从一个实现移动到另一个实现。更严重的是,开发人员不能使用标准语法,很难雇佣到经验丰富的 Mark Logic 程序员来处理 DB2 9 应用程序(程序很少在平台之间转换,但是开发人员经常这么做)。XQuery 需要一个更新(和创建、删除)工具。World Wide Web Consortium (W3C) 在 8 月发布了 XQuery Update Facility 1.0 的 last-call 草案,而且供应商已经开始付诸实现。如果幸运的话,那么 XML 社区有望在 2008 年看到该草案通过 last call 阶段并形成最终版本。
在这一年中,XQuery 工作组也发布了第一批 XQuery 1.1 需求。一些最重要的新功能可能包括异常处理、扩展函数、函数指针和/或 lambda 表达式。幸运的话,只需五六年时间就能实现这些功能。然而,最好在 XQuery 真正流行起来之前就开始实施,而且任何规范的的更改都需要几十年的努力,就像 SQL、Fortran 和 C 的情形一样。
尽管 XQuery 是一种完整的编程语言 — 它可以完全取代 PHP、静态 HTML,以及任何其他 Web 框架 — 在不久的将来,您将需要将其与用传统语言编写的程序进行集成。因此在这一年提议将 XQuery API for Java (XQJ) 加入 Java Community Process 最终草案是一个很不错的主意。可将这看作 JDBC for XQuery。Saxon 9 和 Data Direct XQuery 3.0 已经提供了对 XQJ 的支持,而且一旦明年完整的规范发布,更多的供应商将会参与到其中。
2 月
在最短也是最冷的 2 月,每个人都呆在家里,也没发生太多事情。Saxon、TagSoup 和 WebCGM 都发行了新版本(您也许会问,什么是 WebCG?)
在这个月,发布了 XForms 1.1 的 last-call 工作草案,其中添加了一些重要功能,包括对 PUT 和 DELETE 提交的支持。但是要使 XForms 成为最后的推荐标准,这一年剩下的 10 个月也许还看不到这一结果。11 月最多实现 XForms 1.1 推荐标准。因此也许等到明年才能实现。
在这一年中,大多数主流 XForms 供应商都从不同角度发布了其产品的更新版本,包括 FormsPlayer、Chiba、Orbeon,以及 Mozilla XForms 扩展。不幸的是,何时将 XForms 支持内置到主流浏览器中仍然难下定论。
3 月
W3C 已经成立十余年了,它是 Internet Engineering Task Force (IETF) HTML 2.0 计划失败的直接产物。基于这样的历史,2006 年 W3C 果断放弃 HTML 确实有些令人震惊。直到现在,W3C 仍然如此地专注于 XML 和 Semantic Web,以至于都忘记了自己曾经支持过的一项技术。因此,在 2004 年,一些 Web 设计人员和浏览器供应商联合起来成立了 Web Hypertext Application Technology Working Group (WhatWG),专注于 W3C 已经放弃的领域,而且与 W3C 背道而驰。
这一过程花费了两年时间,但是在 3 月份,W3C 终于意识到他们即将受到威胁。他们重新成立了自己的 HTML 工作组并玩起了追赶游戏。两大组织都同意分享利益,但是 WhatWG 仍然处于主导地位,并控制着整个市场。
尽管竞争激烈,2007 年并没有产生多少实用的 HTML 5 代码。规范开发主要集中在 Web 视频、SQL API,以及解析 arcana。将会在普通 Web 浏览器中实现哪种技术仍然是一个未知问题。对我个人而言,我怀疑在原生 XML 数据库在场外做热身时花费几个月时间开发一个浏览器内置的 SQL API 是不是明智之举(我答应这是本文中最后一次用足球做比喻,或者您可以拿走裁判员的口哨)。
4 月
尽管早就有传闻 XML 将在 Web 中引入语义并使浏览器能够理解其显示的内容,但 XML 始终是关于语法,而不是语义。整个 XML 1.0 规范只包含两个和语义沾边的属性:xml:space 和 xml:lang(而且我不能肯定 xml:space 是不是语义属性)。在很大程度上,XML 规范的意义来自于处理 XML 文档的应用程序,而不是文档本身。XML 系列的后续规范也几乎是这样,包括名称空间、XML Infoset、XSLT,以及 XPath。
但是在 4 月份,W3C 通过发布 Internationalization Tag Set (ITS) 1.0 进一步扩展了 xml:lang 属性。这个推荐标准定义了标识方向性、可译性、ruby 文本的标准属性和可跨不同词汇表共享的文档本地化和国际化的其他常见内容。例如,在清单 1 显示的 DocBook 文章中,its:translate 属性指示 author 元素不应该被翻译,而 its:dir 属性表明整个文档使用从左到右的文本。