分享
 
 
 

标记语言巨星访谈录--与James Clark同步

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

标记语言巨星访谈录--与James Clark同步

body{font:small verdana}

code,pre{font-family:courier}

pre {background-color:#e1e1e1}

与James Clark 同步

-- 标记语言巨星访谈录

原作:Uche Ogbuji, Fourthought, Inc 首席顾问 日期:2002.7.17

翻译:onestab

James Clark在标记语言(markup languange)的领域里可能是最有成就的开发者。在他不平凡的SGML和XML生涯里,曾经参与标准的制订,就标记语言与传统代码的关系提出了非常重要的看法,更重要的是,他写了许多程序,这些程序促进了XML(以及从前的SGML)从抽象的设想世界到广为流行的转变。在本文中,Uche Ogbuji采访了James Clark,集中讨论了XML的实用开发以及现状和未来。作者同时也就这些话题发表了自己的见解。

2001年12月, James Clark被XML 2001大会委员会授予首座XML奖杯,这是为了表彰他对XML团体所做出的许多突出贡献,没有人对他的获奖资格表示质疑。如果你曾经使用标记语言作过什么事情的话,你可能已经使用过James Clark写的代码:

Jade, Clark的DSSSL处理器(相当于SGML的XSLT之类),受益于Linux Documentation Project的Linux用户使用它。

Clark的sgmls是世界上最广泛使用的SGML解析器。

expat或XT(解析器和XSLT处理器)为许多开发者采用。事实上,由于在Python, Perl和Apache项目中被普遍采用, expat是使用最广泛的XML解析器之一。

值得注意的是,所有这些都是开放源代码的,而且在开放源码开始风行之前就这么做了。

Clark的获奖也是出于他最近所做出的贡献。2001年,他创立了TREX, 一种XML schema的替代语言,与RELAX语言结合后形成了RELAX NG。尽管有来自W3C官方的schema定义语言的竞争,RELAX NG仍然极为流行。

为表达他对XML前途的关注,获奖之后Clark就XML面临的5个技术上的挑战发表了演讲。在他的演讲里,突出谈到了困扰着许多开发者的技术问题,对可能会在发展之路上造成障碍的某些做法提出了警告。

这里就是Clark提出的XML面临的5个挑战:

要进步,还要保持XML的简洁(Make progress yet keep XML simple) XML的强大在于其简洁性所带来的多样性。这种强大特性定建立过程中有个危险的误区,就是在核心内加入许多的特殊功能,而不是放在分开的、高级的层面上。

不要忽视XML的基础(Don't neglect the foundations of XML 如今XML变得如此重要,人们应回到基本的出发点,巩固XML的基础。最好清理一下会导致不必要的复杂性的历史遗留问题(例如某些很少用到的SGML特性)。另外,重要的说明比如Infoset(XML文档内信息节点的正规模型)应当建立在基础层面上。

控制处理管道(Control the processing pipeline) XML的标准化中所忽视的一个重要方面,就是应有一个定义完好(well-defined)的机制,对操作XML文档的处理管道(pipeline of processing)做出描述。由于现有的处理工具和方法多种多样,这一点显得尤为重要。

改进XML的处理模式(Improve XML processing models) 目前,开发人员通常都受困于DOM的效率低下和SAX的陌生感觉。需要有能够综合两者之长处的API。

避免不成熟的标准化(Avoid premature standardization) XML的成功使人们急于试图把所有与之相关的技术标准固定下来。为了不对以后的进步造成伤害,在标准确立之前,其中许多技术要经过更多的斟酌和实践。

本文基于我就这些技术挑战对James Clark的访谈。其中有问有答,有时还有我本人的解释和分析,读者一定对XML相当熟悉,对XML的各种处理技术应该也不会感到陌生。

基础问题:XML的核心

问:就像你在讲话中所建议的,你认为在“从背后给他一刀”之前,我们应从SGML学到哪些东西?

答:最重要的东西就是底层应当只关心句法,在语义上保持中立。

XML经常给开发人员留下这样的错误印象:它能自动为其结构化的信息提供意义,这就经常诱使人们把这种智能建在XML的底层。Clark提倡最底层应当只与句法打交道:一个处理器应当如何像其它处理器一样,对一个XML文档做出相同的理解,而更加智能化的特性应放在这层的上面层次内。

问:你对开发当中的XML1.1工作草案中提到的某些东西是怎么看的?

答:我认为字符实体(character entity)是个不大却倍受瞩目的问题,如果愿意的话是可以解决的。W3C XML Schema 的那些人(我和他们的看法经常有分歧)也想看到这个问题得到解决。

XML对字符的表达和处理很复杂,这令开发人员感到有些意外和无奈,并在XML团体中引起了无休止的争论。针对这个问题的专用工具,比如Simon St. Laurent的 Gorille,突出了它的重要性。关于在XML的1.1版中应增加或修正哪些内容,一直有许多议论,因为实际上在最新的XML Blueberry 草案中才刚开始对这点做出说明。

问:Tim Bray 已经把 XML-SW(XML Skunkworks)作为非官方草案予以公布。这似乎与你对XML1.1的建议不谋而合。你对这个计划有什么评论或想法?

答:我认为这是概念的一个很好验证。我认为它表明了XML1.0/XML Namespaces/XML Infoset/XML Base可以进行整合,而无需花费过多的工作量,这种整合的结果在某些方面比我们今天所拥有的更为一致和协调。但愿W3C所追求的也是如此。

问:你认为XSLT要具备哪些类型安全?

答:我认为不可能将静态的类型安全(static type-safety)嫁接到XSLT(或其它)上面,这只是事后诸葛亮。如果你想要一种具备静态类型检查的语言,就必须从一开始就对此进行设计:它对语言设计的影响非常大。我认为像XSLT这类的语言和其他更为“强类型”的XML处理语言都有其生存空间。我预测XQuery将会是后者的一个重要例子。

作为XSLT1.0标准的编辑,Clark在讲话中提到XSLT需要类型安全。与类型有关的问题在XSLT开发人员中相当普遍,最普通和明显的就是这种用法

<xsl:value-of select="spam"/>

而开发人员真正想要的是这样

<xsl:value-of select="'spam'"/>

这种情况下,我们本意是想用字符串,而实际却是节点集,要对结果进行除错往往非常困难。W3C规划中的XML XQuery语言是W3C标准系列(还包括XML Schema, XPath 2.0, XSLT 2.0)当中的一员,在这里类型特性正在被添加到XML。有趣的是,Clark在他的讲话中对过早的标准化提出过警告,而类型正是其中的一个方面。

问:你论述了需要有设计良好的XML API。你认为在基于开放源代码的API中有适合于效仿的吗?

答:有个以Java写的开放源代码的XML Pull Parser。 我认为有可能做得比这个和微软的.NET中的XML API

更好。有几个开放源代码的Java数据绑定平台。不过,我认为这些东西才真正应当作为Java平台标准的一部分,就像Java API for XML Processing(JAXP)一样。现在已经有了一个关于 pull XML parser的Java Specification Request。

DOM为每个XML节点建立一个数据对象,它的内存开销很大,但对多数开发人员来说容易使用:你可以用许多主流编程语言中普遍采用的方式来访问对象的属性。SAX根据XML的构建过程返回一个自由的事件流,除了正在处理的当前节点外,它并不要求数据放在内存中。这样做效率较高,但是要求开发者掌握许多复杂的状态管理技术。一个pull API有个与DOM相似的接口(出于简单性),而又足够聪明,只将当前处理过程中所需的节点装入内存,保留了一部分SAX的效率。

问:在你看来,是否有什么工作组、项目甚至产品能够为处理管道(processing pipeline)提供些有益的参照?你是否正在做这类尝试工作?

答:Sun的"XML Pipeline Definition Languange"(已提交为W3C的Note)看起来有意思,我认为它目前还不很理想。特别是那个非常基本的processdef元素,从安全性和可移植性(interoperability)的角度来看还很成问题。ISO的DSDL也为处理管道问题提供了思路。

模糊地带:普通问题

问:你提到XML是非常多样性的,而且它的优势之一就是可以表示多种信息。你是SGML界的老手了,有没有一些XML的应用特别出乎你的意外(或关注)的?

答:我对XML在RPC中使用得如此之多(像SOAP一样)感到非常惊奇。

问:在你工作过的所有软件项目中,你认为哪个是最重要的?你以什么标准挑选都行,但有一条:哪个项目对于一个重要标准的帮助理解、影响或者普通的实现最为重要?

答:问题有点难。我想我会选择sgmls。这是我做过的一个主要项目,它不是从头开始的,而是基于Charles Goldfarb的ARCSGML。sgmls把ARCSGML变成了一个可靠的、高质量开放源代码的SGML解析器。我认为它对扩大SGML的队伍非常重要,而且如果没有SGML队伍,就不会有XML的出现。

XML的未来

在一个成熟的团队的推动下,XML无疑正接近于从原始洪荒到成熟技术的转变。在这个转变中,它将会利用这个团队的所有经验和智慧,能够确保这项技术的长久生命力,并对开发人员真正有用。James Clark的经验和洞察力会有助于引导这个进程。请留意这里所探讨的许多进展,在不远的将来它们一定会改变你使用XML的方式。

相关链接

关于他的其他观点,请访问Clark的主页, 以及他的生平,其中有他许多重要项目的清单。

阅读XML.com对Clark的在XML 2001大会上简短致词的相关报道 Clark Challenges the XML Community.

Clark现在的实业Thai Open Source Software Center Ltd.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有