专利名称:用于扩展标记的方法和浏览器的制作方法
技术领域:
本发明涉及浏览器设计领域,更特别地,涉及使用插件框架来扩展所支持的标记语言的浏览器。
背景技术:
浏览器是一种基于标记语言可听见地或者可视地呈现文档的程序。一种常用类型的浏览器是Web浏览器,其呈现基于超文本标记语言(HTML)的文档。HTML文档通常经由利用基于分组的协议的网络由Web服务器向客户端进行供应。正如这里所用的,术语“基于HTML的文档”通常用于指代任何基于由HTML衍生的标记语言的文档,例如可扩展标记语言(XML)文档、语音可扩展标记语言(VoiceXML)文档、WML文档等。
常规Web浏览器可以利用Web插件,这些插件是扩展Web浏览器的小段代码。常规的插件允许Web浏览器的用户查看除了HTML之外的媒体类型和图像。存在上百种插件可以使得Web用户使用各种媒体格式,包括音频和视频。Web插件的常用示例包括用于支持MACROMEDIA FLASH对象的flash插件、JAVA插件、以及用于允许浏览器用户在浏览器中查看并且处理基于PDF的文档的便携文档格式(PDF)插件。
常规浏览器和浏览器插件无法扩展由标记浏览器所支持的标记语言。相反地,常规标记插件基于标准HTML文档和标准标记语言约束。因此,插件设计者通常构造复杂的脚本、JAVA小程序、或者使用<对象>标记标签以试图补偿对于所需标记语言扩展的缺乏。因为每个主流浏览器都具有浏览器特定的特性,设计者必须为不同的浏览器执行彻底地脚本测试。对于插件来说通常首先要识别该插件在其中执行的浏览器,然后根据正在使用的浏览器执行不同的代码。
开发者用来扩展标记语言的另一种可选方案是要求用户使用专用的浏览器,其专门被设计为包括标记扩展。构造专用浏览器是复杂并且昂贵的任务,特别是当所需特征或者语言扩展是用于一种相对较少、但却重要的特征的时候。而且,对于专用浏览器的依赖性也极大地限制了产品的可销售性。消费者想要使用那些他们所熟悉的Web浏览器,这些浏览器已经定制了他们的偏好,并且消费者不情愿使用专用浏览器,特别是当那种浏览器仅用于访问来自单个内容源的信息的时候。
需要一种机制用于扩展标记语言,以便可以规定并且使用新的标签、语言特征等,而无需修改浏览器源代码。这种机制将允许开发者更容易地构造标记应用。例如,设计者可以使用所提出的机制扩展标记语言,而不必依靠基于语言约束脚本的“辛苦工作”。
所提出的机制还可以被用于增强用户的浏览体验。例如,使用该机制以扩展浏览器的支持标记语言将产生更严格遵守用户感知的“标准”的综合扩展。
举例说明,当在浏览器中查看PDF文档时用户常常是迷惑的,因为必须使用专用于“PDF”插件的按钮和特征而不是标准的浏览器按钮和特征。例如,浏览器的查找、复制、剪切和粘贴特征对于包含在使用标准PDF插件的浏览器之中的PDF文档不再起作用。相反地,想要执行诸如查找、复制、剪切和粘贴功能的用户必须使用/选择插件专用的按钮和功能。以禁止用户使用浏览器按钮/功能的方式实现插件会导致用户的困惑和挫败感。没有已知的方案允许开发者在运行时间中扩展浏览器的支持标记语言。
发明内容
这里公开了根据本发明安排的实施例的用于通过插件框架扩展浏览器标记的系统和方法。更具体地,支持定义的标记语言的浏览器可以加载一个或多个包含语言扩展的包。这些扩展可以代表对于现有浏览器功能或者新浏览器功能的修改。该加载的语言扩展可以被链接到浏览器,以便浏览器可以解释使用该语言扩展的标记。该语言扩展的链接可以以多种方式产生。语言扩展例如可以修改与由浏览器进行呈现的标记相关的模式、文档类型定义(DTD)、和/或文档对象模型(DOM)。无论如何实现该链接,浏览器语言扩展都可以以一种标准化的、独立于浏览器的方式实现,这允许第三方提供商来构建包括标记语言扩展的包。用户可以在他们选择的浏览器中利用那些扩展包。
本发明可以根据与这里给出的材料一致的多种方面来实现。例如,本发明的一个方面可以包括一种用于扩展由浏览器支持的标记的方法。该方法可以包括对表示以标记语言写成的信息的浏览器进行识别的步骤。可以对包括至少一个对该标记语言的扩展的扩展器进行识别,其中该浏览器通常并不支持该扩展。可以加载该扩展器,使得将该浏览器所支持的该标记语言扩展到包括该扩展。
本发明的另一方面,可以包括浏览器。浏览器可以包括用于表示以标记语言写成的信息的装置。浏览器可以是Web浏览器、语音浏览器和/或多模式浏览器。插件框架的实现可以包括在该浏览器中。用于利用符合该插件框架的插件包的装置也可以包括在该浏览器中。每个插件包可以扩展由浏览器所支持的标记语言,而无需改变浏览器的源代码。
应该注意到,本发明的各个方面可以被实现为一种用于控制计算设备以实现这里描述的功能的程序,或者一种用于使计算设备能够执行对应于这里所公开的步骤的处理的程序。该程序可以通过将该程序存储在磁盘、光盘、半导体存储器、任何其它记录介质中来提供,或者还可以作为经由载波传送的数字编码的信号来提供。所述程序可以是单个程序,或者可以被实现为多个子程序,每个子程序在单个计算设备之中进行交互,或者通过网络空间以分布的方式进行交互。
这里详述的方法还可以是至少部分地由服务代理和/或由服务代理响应于服务请求所操纵的机器来执行的方法。
附图中示出了当前优选的实施例,但是应该理解,本发明不限于所示的确定安排和手段。
图1是示出一个系统的示意图,该系统包括根据这里公开的本发明安排的实施例、被配置为具有扩展其支持的标记语言能力的浏览器。
图2是根据这里公开的本发明安排的实施例的、用于扩展浏览器标记语言的方法的流程图。
具体实施例方式
图1是示出了系统100的示意图,该系统包括根据这里公开的本发明安排的实施例、被配置为具有扩展其支持的标记语言能力的浏览器。系统100可以包括网络设备110、表示设备140以及浏览器120。
网络设备110可以是经由网络114向浏览器120传送标记文档112或者插件包130的任何设备。网络设备110可以是物理网络设备、一组分布的但功能上相关的设备、虚拟计算设备等。在一个实施例中,网络设备110可以代表响应于基于超文本传输协议(HTTP)的请求提供标记文档112的Web服务器。网络设备110还可以包括文件传输协议(FTP)服务器,其向浏览器120传送一个或多个插件包130。本发明不应被解释为限于任何特定数据传送协议,并且这里可以设想使用任何基于传输控制协议/因特网协议(TCP/IP)的协议或者另一传输协议。
可以从相同的网络设备110传送标记文档112和插件包130和/或可以通过不同的网络设备110传送标记文档112和插件包130。在一个实施例中,标记文档112可以与相关的插件包130几乎同时地进行传送。另一个实施例中,标记文档112可以在相关插件包130被传送之前或者之后进行传送。
例如,当加载或实例化(instantiate)浏览器120的时候,与标记文档112相关联的且为浏览器120呈现标记文档112所需要的插件包130可以被传送到浏览器120并且被加载到其中。在另一个示例中,可以向浏览器120传送标记文档112,浏览器120可以在呈现该标记文档112之前确定对于相关插件包130的需求,并且响应于该确定的需求可以自动地或者交互地获取插件包130。
标记文档112是指根据描述文档结构和外表的标记语言写成的电子文档。标记文档112可以是包括标记标签的文档,其中标记标签描述了指定标记文档112的内容将如何被呈现的独立于平台的样式。标记文档112可包括任何基于标准通用标记语言(SGML)的文档,包括基于SGML的派生语言、子集、超集的文档。例如,标记文档112可包括但不限于超文本标记语言(HTML)标记文档、可扩展标记语言(XML)标记文档、无线标记语言(WML)文档、语音可扩展标记语言(VoiceXML)文档,等等。
插件包130是指定义了标记语言扩展的电子消息。插件包130可以定义浏览器120通常所不支持的标记语言扩展。浏览器120可加载插件包130,提取关于该所指定扩展的必要信息,并且然后能够根据该包130规范来处理标记文档112。包130的加载可以在运行时间动态地发生。包130可以符合为扩展浏览器所定义的标准化的框架。因此,可以以独立于浏览器的方式来实现包130,假设将被使用的浏览器符合为该标准化框架所规定的标准。
插件包130可以包括一个或多个扩展器132。扩展器132是一组与标记语言相关的机器可读指令。扩展器132可以定义新的语言标签、属性、特性或者对象,它们不属于先前浏览器120支持的标记语言的部分。扩展器132还可以定义针对浏览器120现有功能的代替功能或者功能实现。
扩展器132可以包括扩展模块134、一组链接指令136和/或属性138。扩展模块134可包括用于处理所定义的标记功能的代码。链接指令136可指定浏览器120链接到扩展模块134所采用的方式。链接指令136能够指定一种或多种该扩展模块134被链接到浏览器120所采用的方式。链接可包括例如文档类型定义(DTD)链接、模式链接、文档对象模型(DOM)链接和/或其它链接。
浏览器120可包括驻留于计算设备上的软件应用,该计算设备能够基于标记文档112产生输出142。输出142可被表示于表示设备140上。浏览器120可包括用于对以标记语言写成的信息进行表示的装置,其中该表示装置可包括视觉和/或听觉信息。
例如,浏览器120可以是Web浏览器,其在表示设备140上可视地表示标记文档112。浏览器120还可以是语音浏览器,其生成在表示设备140上进行表示的语音输出142。
应该理解的是,使用浏览器120以便基于标记文档112可视地和/或可听到地表示信息的技术是本领域公知的。浏览器120所使用的表示装置包括任何以及所有已知的表示技术。
浏览器120可包括扩展加载器122、标记呈现处理器124、语法处理器126和DOM处理器128。扩展加载器122可加载插件包130。扩展加载器122可根据链接指令136和属性138将扩展模块132链接或者附加到浏览器120。
在一个实施例中,扩展加载器122可将扩展模块134放置到数据存储129中。数据存储129可位于浏览器120本地的存储空间中,或者可以位于浏览器120远程的存储空间中。当位于远程时,可以通过网络116访问数据存储129。
扩展加载器122可以在运行时间加载扩展器132。属性138能够指定扩展加载器122加载扩展器132的不同的时间。例如,扩展器132可以在加载浏览器120时进行加载,在解析标记文档112时进行加载,在呈现标记文档112时进行加载,在DOM事件发生时进行加载,等等。
标记呈现处理器124可以是呈现或者解释标记文档112的运行时间处理器。标记呈现处理器124可以使用语法处理器126和/或DOM处理器128。到扩展模块134的软件挂钩可以包括在标记呈现处理器124的合适位置。
语法处理器126可包括包含在标记文档112中的元素、属性、批注、注释和实体的列表,以及它们之间彼此的关系。在一个实施例中,语法处理器126可以是文档类型定义(DTD)处理器,其中通过DTD对于标记文档112的结构和规则进行了定义。该语法处理器126还可以是XML模式处理器,其使用包含在标记文档112中的XML代码对结构和规则进行了定义。
语法处理器126可以具有动态生成DTD或者模式的能力。例如,链接指令136可以包括在功能上与扩展器132隔离的DTD片断(snippet)。这些片断可在运行时间自动并且动态地添加到预先存在的静态DTD指令中。也就是说,该语法处理器126可以基于链接指令136产生将被用于解析标记文档112的可操作的DTD。
DOM处理器128可以处理遵照官方万维网联盟标准构建的文件,该标准用于以不特别针对某一平台和语音的方式表示所构建的文档。在一个实施例中,扩展器132可以被挂钩到标记文档112的DOMAPI。DOM处理器128可以创建DOM事件处理器,在DOM中触发这些处理器。在一个实施例中,这可以通过DOM节点方法“addEventHandler”来实现。例如,为处理由扩展器132定义的新标签的过程,可以创建用于那个标签的DOM事件,DOM事件处理器接着可以被添加到DOM节点。
表示设备140可以是任何能够表示输出142的设备。在一个实施例中,表示设备142可以是客户端设备,基于该设备浏览器120得以执行。例如表示设备142可以包括计算机、个人数字助理(PDA)、台式电脑、智能电话。表示设备120还可以是能够表示由语音浏览器生成的可听见的输出的电话设备。
网络116和网络140可以被配置为允许传送在载波中编码的数据。网络116和网络140可以包括一个或者多个局域网、广域网、城域网等。网络116和网络140还可以包括基于分组的部件、和基于电路的部件。网络116和网络140可包括基于无线以及基于有线的通信通路。
进一步地,网络116和网络140可包括计算部件,以可通信的方式将包括单个机器的设备彼此进行链接。网络116和网络140还可包括以可通信的方式将用作虚拟机的或者用作分布计算设备的设备彼此进行链接的部件。网络116和网络140还可包括通过基于网络的通信协议将两个或更多远程计算设备彼此进行链接的部件和计算设备,该基于网络的通信协议例如是传输控制协议/因特网协议(TCP/IP)网络协议。
通过以下的示例,系统100部件之间的交互可以变得清楚。应该理解,以下示例是仅用于说明目的的,而不应被解释为限于这里使用的具体安排。在该示例中,Web浏览器120可访问Web服务器(网络设备110)以获取标记文档112。标记文档112可以包括新标记语言标签,称为<data>,如下所示。
<html>
<head><title>Markup Extension Application</title></head>
<body>
<p>This is a sample application using markup extensions…<data uri=″http//myserver.domain/myservlet″namelist=″var1 var2 var3 var″/>
…</body>
</html>
代码示例1具有数据标签的样例HTML文档数据标签可以提供发送消息到远程服务器的能力,而不会引起对HTML页面的重新加载(这发生在使用“submit”标签的时候)。<data>标签可以包括“uri”和“namelist”的属性,其中“uri”指定了用于推送数据的位置而“namelist”提供了将与请求一起发送出的变量列表。
插件包130可以包括用于实现该<data>标签的扩展器132。插件包可包括如下所述的描述符。所示的描述符使用JAVA存档文件(JAR)来对DTD描述、扩展点、解析模块和处理模块进行封装。
<pre listing-type="program-listing"> <?xml version=″1.0″encoding=″UTF-8″?> <vb_plugins version=″1.0″><plugin name=″data″> <dtd definition=″jar http//www.widgets.com/widges/vxml/data.jar!/data.dtd″ extension_point=″jarhttp//www.widgets.com/widges/vxml/ pause.jar!/insertdata.dtd″><parse_module uri=″jarhttp//www.widgets.com/widges/vxml/pause.jar!/parseModue.class″/><process_module uri=″jarhttp//www.widgets.com/widges/vxml/pause.jar!/processMoule.class″/> </plugin> </vb_plugins></pre>代码示例2插件包的样例描述符插件包130和标记文档112可以通过网络114传送到浏览器120。扩展器加载器122可以在浏览器120中加载插件包130。加载插件包可以包括建立用于触发扩展模块134的链接。扩展模块134可以被加载到数据存储129。当引用扩展模块134的指针由标记呈现处理器124触发时,可以执行扩展模块134。
在一个实施例中,用于浏览器120的插件框架可能需要表示将定义的新标记的DTD。用于<data>特征的DTD片断如下所示。
<!ELEMENT html(data)*>
代码示例3用于数据扩展的DTD片断可以自动地在运行时间将用于<data>扩展的DTD片断添加到静态适应标记DTD。语法处理器126可以在运行时间向标记DTD添加该<data>扩展。也就是说,语法处理器126可以持有插件包130,并且可以动态的产生可操作的DTD以将其用于对标记文档112的解析。
在一个实施例中,用于浏览器120的插件框架可可能需要数据扩展挂钩到标记文档112的DOM API。DOM处理器128可以创建DOM事件处理器,其中使用DOM节点方法(例如,“addEventHandler”)在DOM中触发这些处理器。一个示例性的用于<data>扩展的DOM事件处理器如下所示。
<pre listing-type="program-listing"> class DataPluginProcessing implements Event throws DOMException { void process(Document dom,Node me, EcmaScriptExecutionContext context,IntpreterContext IC) { long namelist=Long.parseLong(me.getAttribute(″namelist″));URI uri=new URI(me.getAttribute(″uri″); if(uri !=null) { String namelistAsQueryString=processNameList (nameList,EcmaScriptExecutionContext); URL url=new URL(uri.toString() +″?″+ nameListAsQueryString); url.openConnection(); uri.connect(); //process stream,headers etc. else throw ProcessinException(″Illegal URI value″);}}}</pre>代码示例4用于数据扩展的DOM事件处理器应该理解,DOM事件处理是每个符合DOM规范的浏览器实现的一部分。因此,添加扩展点作为DOM事件能够使得数据扩展无缝地集成到任何符合DOM的浏览器中。
图2是根据这里公开的本发明安排的实施例的、用于扩展浏览器标记语言的方法200的流程图。在一个实施例中,方法200可以在系统100的环境中执行。但是,方法200并不限于此,而是能够在任何具有可扩展框架的浏览器的环境中执行,而该可扩展框架用于在运行时间对所支持的标记语言进行扩展。
方法200开始于步骤205,其中浏览器能够接收包括扩展器的包。扩展器可以指定对于该浏览器的标记语言扩展。在步骤210中,可以将扩展器加载到浏览器中。在步骤215中,更新由浏览器所支持的标记,以便包括在该扩展器中指定的标记语言扩展。在步骤220中,对于是否存在额外的扩展包进行确定。每个扩展包可以包括一个或者多个扩展器。如果存在扩展包,则该方法从步骤220到步骤210循环执行,其中可以依次加载每个包以及所包括的扩展器。否则,该方法可从步骤220到步骤225继续进行。
在步骤225中,可以由浏览器处理包含标记语言扩展的标记文档。在步骤230中,可以触发由扩展器提供的、用以处理该语言扩展的代码。在步骤235中,可以执行所触发的代码。在执行了扩展器所提供的代码之后,可以继续以常规方式处理标记文档。如果扩展器所提供的代码是在浏览器外部的位置上执行的,则在步骤230中控制可传递到外部代码段,在步骤235中可执行该扩展器所提供的代码,并且然后控制可以传递回浏览器。
在步骤240中,一旦已经处理了该标记文档,所得输出就可以在表示设备上进行表示。例如,当浏览器是Web浏览器并且表示设备是计算机时,可以在计算机的显示器上可视地呈现标记文档。在另一个实施例中,浏览器可以是语音浏览器并且表示设备可以是音频设备。可以通过音频设备的音频收发器播放标记的音频呈现。
本发明可以以硬件、软件或者硬件和软件的结合来实现。本发明可以以集中方式在一个计算机系统中实现;或者以分布方式实现,其中不同的网元分布于多个互联的计算机系统中。任何种类的计算机系统或其它适于执行这里所述的方法的装置都是适用的。典型的硬件和软件的结合可以是具有计算机程序的通用计算机系统,当加载和执行该计算机程序时,其控制该计算机系统以便该计算机系统执行这里所述的方法。
本发明还可以被嵌入到计算机程序产品中,该计算机程序产品包括所有支持这里所述方法的实现的特征,并且当将该计算机程序产品加载到计算机系统中时,可以执行这些方法。在当前上下文中,计算机程序意味着任何语言、代码或者符号形式的指令集合的任何表达,该指令集合旨在使得具有信息处理能力的系统直接地或者在以下两项中的任一项或两项之后,来执行特定的功能a)到另一语言、代码或者符号的转换;b)以不同的实际形式进行再现。
权利要求
1.一种用于扩展由浏览器所支持的标记的方法,包括对表示以标记语言写成的信息的浏览器进行识别;对包括至少一个对该标记语言的扩展的扩展器进行识别,其中该浏览器通常并不支持该扩展;加载该扩展器;以及将由该浏览器所支持的该标记语言扩展到包括该扩展。
2.根据权利要求1所述的方法,其中当加载所述浏览器时,自动地发生所述识别该扩展器的步骤、所述加载步骤,以及所述扩展步骤。
3.根据权利要求1所述的方法,其中在运行时间中自动地并且动态地发生所述识别该扩展器的步骤、所述加载步骤,以及所述扩展步骤。
4.根据权利要求1所述的方法,其中所述浏览器是Web浏览器,并且其中所述扩展器是以独立于Web浏览器的方式写成并且实现的。
5.根据权利要求1所述的方法,其中发生所述扩展步骤而不改变该浏览器的源代码。
6.根据权利要求1所述的方法,其中该扩展包括对于之前不属于该标记语言一部分的新标记的定义、平台对象的定义、以及平台属性的定义中的至少一个。
7.根据权利要求1所述的方法,其中该扩展将该浏览器的现有功能代替为对于该功能的不同实现。
8.根据权利要求1所述的方法,进一步包括为该浏览器定义插件框架,其中该扩展器是符合该插件框架的插件包的一部分,其中该插件包包括用于至少一个扩展的机器可读代码的代码模块,并且其中该插件包包括用于将该代码模块链接到该浏览器的程序指令。
9.根据权利要求1所述的方法,进一步包括对包括至少一个对于该标记语言的不同扩展的不同扩展器进行识别;加载该不同的扩展器;以及将该浏览器所支持的该标记语言扩展到包括该不同的扩展。
10.根据权利要求1所述的方法,其中所述方法加载多个扩展,并且然后将所述浏览器所支持的该标记语言扩展到包括该多个扩展,其中对该多个扩展的所述加载几乎同时发生,并且其中所述多个扩展包括所述至少一个扩展。
11.根据权利要求1所述的方法,进一步包括响应于加载该扩展器,将至少一个扩展点挂钩到该标记浏览器;以及加载包括用于实现所述扩展的代码的该扩展模块,其中所述扩展点指向该扩展模块的代码。
12.根据权利要求11所述的方法,其中所述挂钩步骤进一步包括将该扩展点挂钩到文档对象模型(DOM)应用程序接口(API)。
13.根据权利要求1所述的方法,进一步包括添加由所述扩展器定义的扩展点作为文档对象模型(DOM)事件,所述扩展点被用来执行用于该扩展的代码;以及所述浏览器触发该DOM事件。
14.一种浏览器,包括用于表示以标记语言写成的信息的装置;插件框架实现;以及用于利用符合所述插件框架的插件包的装置,其中所述插件包的每一个对该浏览器所支持的标记语言进行扩展,而无需改变该浏览器的源代码。
15.根据权利要求14所述的浏览器,其中所述插件框架允许对新标记的定义以及对于该新标记的属性的定义和实现。
16.根据权利要求15所述的浏览器,其中该插件框架使用文档类型定义(DTD)语言和XML模式中的至少一个来允许权利要求15中的定义。
17.根据权利要求14所述的浏览器,其中所述用于利用插件包的装置被配置为几乎在同时加载多个不同插件包,其中该不同插件包的每一个包括至少一个对于该浏览器所支持的该标记语言的扩展,该扩展对于该插件包是特定的。
18.根据权利要求14所述的浏览器,其中该插件框架提供了用于定义器的能力,以附加并且执行扩展该标记语言的代码,其中所述对代码的附加发生在从包括以下时间的组中所选择的至少一个时间处当解析标记时、当呈现标记时、当文档对象模型(DOM)事件发生时。
19.根据权利要求15所述的浏览器,其中所述浏览器实现DOM事件处理,并且其中所述用于利用插件包的装置包括添加由每个插件包定义的扩展点作为文档对象模型(DOM)事件的步骤。
全文摘要
一种用于对由浏览器支持的标记进行扩展的方法可以包括对表示以标记语言写成的信息的浏览器进行识别的步骤。可以对包括至少一个对该标记语言的扩展的扩展器进行识别,其中该浏览器通常并不支持该扩展。可以加载该扩展器,使得将该浏览器所支持的该标记语言扩展到包括该扩展。
文档编号G06F17/30GK1959675SQ200610139240
公开日2007年5月9日 申请日期2006年9月20日 优先权日2005年11月2日
发明者温迪·林恩·努斯比克尔, 布赖恩·亨利·马斯切特 申请人:国际商业机器公司