Web IDL:W3C DOM规范语言绑定有了新名称


作者
徐涵

W3C Web应用工作组(Web Applications Working Group)最近发布了《Web IDL》工作草案,即过去的《DOM规范语言绑定(Language Bindings for DOM Specifications)》。该工作草案定义了一个OMG IDL 3.0版的语法子集,供那些需要定义接口的规范使用。InfoQ采访了该规范的编辑,以进一步了解该规范、以及该规范对Web开发社区的影响。

由该工作草案定义的接口定义语言(interface definition language)叫作Web IDL,它可被用来描述要在Web浏览器里实现的接口。Web IDL是一种IDL的变体,它所具有的很多特性使之能够更容易地对Web平台里的常用脚本对象的行为进行规定。为了支持过去只能以文字描述的常用功能,该IDL在很多方面得到了扩展。另外,它还为ECMAScript第3版和Java给出了精确的语言绑定。该规范文档在介绍部分解释了为何要有这样一个规范:


过去,W3C技术报告都是用对象管理组织(OMG)的接口定义语言(IDL)[OMGIDL]来描述编程语言接口的。利用该IDL,可以以独立于语言的方
式来描述这些接口。通常,这些文档还要在附录中另外给出一个语言绑定,以详细描述用IDL描述的接口如何与给定语言的构造成分相对应。


而,这些规范在为ECMAScript这一Web上最常用的语言给出绑定时,描述的精确度很低,因而造成互操作性问题。另外,各个规范必须描述同样的基本

息,比如:用IDL描述的DOM接口相当于ECMAScript全局对象的属性,或者无符号长整数IDL类型映射为ECMAScript的数值类型,等
等。

Web
IDL的目的,就是详细定义一种语言,以便W3C规范定义接口、并为这种接口的ECMAScript与Java绑定提供精确的一致性要求
(conformance
requirements)。W3C期望该文档对已发布规范的实现者们起到指南作用,并期望以后发布的规范参照本文档,以确保合乎规范的各接口实现之间能
够互操作。“这对《HTML 5》的制定将有极大的帮助”,《HTML 5》编辑Ian Hickson说。另外,《XMLHttpRequest Level 2》的制定也将参照Web IDL规范。

这次发布的版本,除了一些内容上的改动,还有一个重大变化,即文档标题改成了“Web IDL”。Web IDL编辑Cameron McCormack说:“因为该文档定义的是一个IDL语言及其跟两种语言的映射,而之前的名称给人以‘该文档仅用于DOM规范、而不是任何需要用IDL定义接口的规范’的印象,所以现在这个名称更加准确。”

Cameron McCormack还向InfoQ讲述了Web IDL将如何对Web开发社区有间接帮助:

目前,大部分DOM相关的规范,都是在相当高的层次上,对实现特定接口的ECMAScript宿主对象的行为进行描述的。例如,DOM Level 3 Core规范在附录ECMAScript语言绑定部分为DOM Level 3 Core描述了ECMAScript绑定,但它没有说Node原型对象(prototype object)在Element对象的原型链(prototype chain)中。各种AJAX工具包均有赖于此,而这一块还没有被标准化。

另一个例子,在调用宿主对象的函数时,如何进行类型强制转换,这也是没有规定的。例如,当你执行下面这行时:

circleElement.setAttributeNS(null, ‘cx’, 2 * 50);


期望的行为是:

circleElement.setAttributeNS(null, ‘cx’, ‘100’);


因为setAttributeNS()的第三个参数是一个DOMString。这一点没有在任何地方定义,但它是一个能够广泛互操作的行为。Web IDL定义了如何像这样进行类型强制转换。

那么由于Web IDL“在对其他规范的语言绑定方面施加了更强的要求”,所以Web开发社区将看到一个更加互操作的环境:各标准之间是一致的,参照同一套标准开发的各产品之间也是一致的。

查看英文原文:Web IDL: W3C Language Bindings for DOM Specifications Gets a New Name

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: