.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
DOM Level 1 的 Feature String 的含混之处

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

DOM Level 1 开始,就已经有了 DOMImplementation.hasFeature (feature, version) ,用来测试DOM支持的features。

但是也许是因为 DOM level 2 之后才正式的Modulization,故DOM1中显然有含糊的地方。

DOM level 2 共有14个modules,如Core, XML, HTML等。DOM Core REC中实际定义了两个module:Core、XML,分别对应于Foundamental Interfaces和Extended Interfaces(CDATA, Entity, PI, DocType等)。两者区分在于HTML。对于HTML-only的impl来说,不需要实现后者。

题外话:实际上在Core中也有些方法(如DOM2中的createDocument、createDocumentType等)是HTML- only的impl不需要实现的,或者被设计为,若是HTML Doc,就抛出 NOT_SUPPORTED_ERR 的 DOMException(如DOM1中的createCDATASection等)。module的分割点横切进入了类或接口的内部。因此或者用文字说明,或者抛出unsupported的exception来。比较学院派的做法,要么重新创建Core的一组接口,然后XML和HTML的分别继承扩展之。但这样可能过于繁琐了(DOM还不够繁琐吗?)……而且将来就没有HTML只有XHTML了,XHTML也是XML,没有html-only,故不存在可以不实现的例外了。

回到正题。对于 DOM Level 1,hasFeature方法的feature参数只能是"XML"和"HTML",但是语义却未在REC中作出说明——即并没有说明到底什么是XML Feature什么是HTML Feature。这就是含混之处。在errata中也没有澄清。

2000/9发布的2nd Edition增加了Compliance一节澄清了这个问题,即XML和HTML的意义是同DOM2一样的。但在DOM1里面是没有Core这个 Feature可供测试的,因为已经规定所有compliant的impl都要实现之。那倒也是,这是最最基本的部分了,如果不支持,还能称作DOM实现吗?剩下的问题在于,这个按照流程早就应该成为REC的2nd Ed却始终是Working Draft。因此严格来说,这个澄清仍没有列入正式标准中。或许应该给dom mailing list发信问问(或者已经有人问过了?)……




相关文章

相关软件