可放缩的浏览器的制作方法

文档序号:6430797阅读:145来源:国知局
专利名称:可放缩的浏览器的制作方法
技术领域
本发明涉及可放缩的浏览器程序。
浏览器程序广为人知,作为一种应用程序被用来提供一种用户界面,用于阅览在诸如本地盘、局域网、因特网等等媒体上发布的信息或与这些信息互相作用。信息和浏览器的相互接合趋于更紧密,以允许用户通过单一的应用-浏览器-来与各种类型的信息互相作用。
特别地,为在因特网上使用,按照一个表示语言来安排信息。这种表示语言例如是超文本标记语言(HTML)、动态HTML(DHTML)、可扩展标记语言(XML)。XML表示语言由符合一个例如文档类型定义(DTD)或XML概要(XML Schema)的概要的、预定义的XML元素(或标签)组成。
模块化是将语言中的这种元素集分解成若干子集或模块的行为。XHTML和SMIL是这种模块化的已经定义的例子。也有可能定义一个元素集,其表示语义和元素能被与其它元素组合(或嵌置)在一起,而本身又不是一个完整的语言。MathML、Ruby和XForms是该范畴中的例子。
一旦模块可用,它们能被组合成简档(profiles)。简档是一种语言,它提供一个元素集,该元素集提供用户所需的一个连贯而完整的语义集。明显的简档是由其衍生出模块的语言,诸如XHTML和SMIL语言。简档能由一个应用实现。
模块化和简档建立的机制是以XML的可扩展性特性为基础的。XML规定如何能将元素组合在一个文档中。
简档建立也能是跨原始语言域的。例子是为了动画制作SVG的XHTML+SMIL简档和SMIL动画。
因此,向浏览器提供表示信息的机会很大。就数据通信而言,所要表示的信息以及描述该表示的信息是通过例如广泛使用的TCP/IP协议传送的。
为了按照上述方式表示信息,浏览器程序必须支持某个表示语言。这包括语法分析信息,以及按照该语言的再现规则来再现信息中的内容。语言正变得越来越高级,涉及在浏览器中再现规则的复杂实现。这要求工作存储器、存储容量和处理能力的广泛应用。特别是有更多的表示语言要由浏览器支持时,需要广泛的系统资源。现今在诸如移动电话、便携式数字助理(PDA)等小型/便携式设备中具有对于浏览器的需求,以更清楚地阅览向这些设备提供的越来越增加的大量信息。由于这些设备存在系统资源相对小的缺陷,也有必要降低系统资源要求。
EP-A2-1003101公开了一种与用户界面组件和数据组件组合使用的应用内核。该内核驻留在客户机端,能够按需从服务器下载组件。这是一个在内核控制下与服务器通信地执行的动态过程。
然而,上述现有技术的方法的问题是,它涉及下载处理数据所需的组件,否则(即在下载之前)就不能被处理数据。该现有技术可被视为对本发明的补充。
以上和其它问题由一个当在计算机上执行时构成一个浏览器程序的计算机程序解决,其中,该程序被安排在一个由程序组件组成的浏览器结构中;浏览器程序被用来处理被安排在一个由模块组成的数据结构中的内容;并且其中该浏览器结构中的每个程序组件与该数据结构中的一个相应的模块匹配。
由此,该计算机程序及其配置的功能随着表示数据被按比例放缩。另一个优点是来自不同源的相似类型的模块(例如由XML构造定义的)能在不同的简档或应用中被再使用。
因此就使受资源约束的设备能以可共同操作和兼容的方式访问例如来自因特网的信息。资源约束涉及存储容量和处理能力,但是也涉及显示器大小等方面。诸如移动电话的手持式设备构成这个领域的主要类型。
因此可以把要在受资源约束的设备上运行的浏览器程序安排得符合一个定制表示语言的简档。
本发明的目的是设计一种用于执行XML文档再现的软件结构,其方式使得由XML模块所代表的功能也以模块化的形式在该结构中出现。在XML文档级的某种功能的采用或去除,对应于在该体系结构中一段软件的增加或去除。这能通过组件技术实现。
在组件技术中,人们设计具有良好定义的互相依赖性的软件段。组件技术的例子是COM、Darwin和Koala。组件(程序组件)的特征在于它们是能通过接口与它们的环境通信的封装的软件段。接口执行用于输入或用于输出的方法。输入对应于组件为正确执行其功能的需要,而输出则对应于该功能的结果。
可以通过连接输出和输入接口把各组件组合在一个结构中。该连接可以在编译时或在运行时实现。可以将一群组件标识为一个单独的组件,或者反之,一个组件可能被分解成子组件。
优选地,程序组件的每一个被安排得接收来自相应模块的内容,并被提供对来自相应模块的内容进行操作的功能。
在一个有利的实施例中,计算机程序有一个语法分析程序,用于从各个模块提取内容并把一个相应模块的内容提供到一个与该相应模块匹配的程序组件。
如果将程序组件的大小和功能随着系统运行计算机程序的可用资源的大小按比例放缩时,该可放缩性涉及单个组件。这允许将浏览器程序改编得适合仅具有非常有限的资源的设备。
当数据结构是一种具有由XML元素定义的模块的XML数据结构时,能非常简单地进行匹配。
计算机程序可被安排得下载程序组件并将它们集成为浏览器的一部分。由此,程序就能适合于或被改编得适合于随时间推移的变化-以便例如利用更改了的和/或附加的程序组件。
当数据结构被按模块分解并被转送到多个设备上分布的浏览器时,浏览器可被改编得适合特定设备。当各设备能够互相通信时,这是特别有利的。
通过向结构中装载一个与一个选定的简档对应的组件集,程序可被安排得能处置简档形式的不同功能。由此,浏览器按一个选定的简档的要求而按比例放缩。程序的结构化体系允许分级适应一个选定的简档。这又允许非常有效地使用存储器。
下面将结合优选实施例参照以下附图更全面地解释本发明。


图1表示一个系统中的浏览器;图2表示浏览器的第一种结构;和图3表示浏览器的第二种结构。
图1表示一个系统中的浏览器。系统101可以是移动电话、个人数字助理(PDA)或通用计算机等等。一般来说,本文中所用的术语计算机包含所有类型的消费电子设备,诸如电视机、收音机、机顶盒等等。
系统包含的计算机单元102能运行操作系统程序(OS)105、应用程序(Apps)104和浏览器程序(BrwsrPrg)103。术语应用程序(Apps)包括为不同目的被计算机系统102运行的程序。这种应用程序可以是电子邮件应用、日历应用等等。
系统包含接口装置,诸如麦克风109、扩音器108、显示器107和键盘106。此外,接口装置可以包含计算机鼠标(未予示出))。
图2表示浏览器程序的第一种结构。浏览器程序200由对一个输入文件或数据流中的单独内容部分操作的程序组件组成。浏览器程序200被安排得处理一个由模块组成的数据结构中的内容。该数据结构最好符合可扩展标记语言(XML),其中,一个模块被定义为XML结构的树形表示中的一个节点和(如果有的话)若干子节点。一个节点或子节点包含一个或多个含有内容的元素,并被开始-标签和结尾-标签封闭。在图中,输入文件212(XML)被浏览器程序200的语法分析程序组件(Prs)201接收。语法分析程序组件(Prs)201被用来从各个模块提取内容并把一个相应模块的内容(即内容部分)提供到一个与该相应模块匹配的程序组件。
记为streamedText(strmTxt)(流式文本)的第一个组件202包含一个记为Loader(Ldr)(装入器)的子组件203和一个记为“TextRendition and Layout”(txtR/L)(文本再现和布局)的子组件204。第一个组件的输入由语法分析程序201以及记为Synchronisation(Sync)(同步)的第二个组件205提供。该组件的输出通过一个驱动器(未予示出)被提供到显示装置213。
第二个组件205包含一个记为Filter(flt)(过滤器)的子组件206、一个标记Clock(clk)(时钟)的子组件207、和一个记为Comparator(Comp)(比较器)的子组件208。对这个组件的输入由语法分析程序201提供。
记为playAudio(plAud)(播放音频)的第三个组件209包含一个记为DRM的子组件210和一个记为“Render and Decode“(R/D)(再现和解码)的子组件211。这个第三组件的输出通过一个驱动器(未予示出))被提供到扬声器装置213。
如将要在以下的例I中显示的那样,浏览器结构中的这些程序组件,与数据结构中的对应的模块相匹配。
就简档而言解释例I。回想一下,简档是一种设置的服务,它提供一个服从系统性能、同时顺从用户需求的连贯而完整的功能集。一般而言,应当指出假设以下术语是所述技术领域的熟练人员熟知的。然而,关于本例中所用的语义和术语的更多信息可在www.w3.org/AudioVidio找到,那里解释了SMIL(同步多媒体集成语言)。
例I同步在本例中例示四个简档简档1A流式文本的表示。
简档1B音频的表示。
简档1C二者在一起的表示。
简档1D同步的表示。
简档1A-流式文本的表示有一个XML模块,称作“StreamedText”(大写S)(流式文本)
模块StreamedText“StreamedText”模块由两个元素<textstream>(文本流)和<page>(页)组成。元素<textstream>包装模块“StreamedText”,而元素<page>界定将被一个接一个地表示的每个文本串。元素<text>(文本)有一个记为“time”(时间)的属性,该属性指示何时要用一个新的<page>替换前一个<page>。应当注意的是,可以想得出用其它元素和属性来例如确定显示位置、显示的延续时间等等。
见图1,程序组件是按照它们的输入和输出被说明的,输入和输出本身又构成组件的接口
表1streamedText组件Loader和Text Rendition and Layout组件可以被组合在单一组件streamedText(小写s)中。
简档1B-音频的表示有一个XML模块,称作“PlayAudio”(大写P)(播放音频)
模块PlayAudio“PlayAudio”模块由一个元素<audio>(音频)组成。它引用由其属性”src”所指示的、因特网上的一个音频文件。该文件是”mp3”类型的,按照属性”drm”是供免费重放的。
程序组件在下面的表2中说明
表2playAudio组件DRM和‘Render and Decode’组件可以被组合在单一组件playAudio(小写p)中。
简档1C-二者在一起的表示该简档把前面两个XML模块StreamedText和PlayAudio合并在一起
模块合并模块(merged module)实际上该简档由三个模块组成,因为它也包括元素<par>来指示其两个孩子<textstream>(文本流)和<audio>(音频)要被同时表示。该元素被语法分析,但是在这个简档中不被进一步处理。音频在歌曲中的各行在屏幕上显示的同时被重放。这两个模块的进行不同步。
程序组件在下面的表3中说明
表3组件简档1D-二者在一起的同步化的表示该简档用同步功能扩展前一个简档,或者反之亦然,前面的简档是这个简档的子集。
模块完成模块这个简档由与例1C中的相同的模块组成,不过被用第4个模块扩展,该模块被称作MediaMarkerTiming(媒体标记定时)(同SMIL20规范中的具有相同名称的模块相似),它包括媒体标记器和同步功能。音频在歌曲中的各行在屏幕上显示的同时被重放。现在,这两个模块的进行同步。
程序组件在下面的表4中说明
表4组件例I中的XML模块和程序组件之间的关系如下表所示
表5过滤器组件由StreamedText和MediaMarkerTiming这两个定时类型的存在所暗示。
注意组件与模块之间的关联可能与简档的层次体系有关。Clock与StreamedText相关联;当两种形式的定时都进入简档时,过滤器和封装器同步被引入。这些定时模块的关联与定时的层次体系有关。例如,可以想象得到一个不支持时钟时间值的简档。这就意味着Clock组件被一个空组件替换(Filter能被清空)。Clock组件不以硬方式与StreamdText模块相关联。
图3表示浏览器的第二个结构。在图中,输入文件307(XML)被浏览器程序300的语法分析程序组件301(Prs)接收。语法分析程序组件301被安排得从相应的模块提取内容以及将一个对应模块的内容(例如一个内容部分)提供到一个与该相应模块匹配的程序组件。
记为“ImageRender”(imgR)(图像再现)的组件302接收来自语法分析程序301的输入并把输出提供到一个记为“Layout Manager”(布局管理器)303(LoMan)的组件,后者又通过一个驱动器(未予示出)向一个显示器308提供一个输出。‘布局管理器’303从语法分析程序301和一个记为’List Manager’(列表管理器)(ListMan)的组件304接收另外的输入。
‘ListManager’组件负责接收由一个操作用户界面的用户唤起的事件。事件可以是所谓的‘点击’事件、‘鼠标移动’事件、‘双点击’事件等等。除了向‘布局管理器’提供一个输出,还向‘EventListener’(事件接收者)组件305(EvList)提供一个输出。
组件‘Excl Manager’(Excl管理器)306(Exlman)接收来自语法分析程序和‘事件接收者’的输入,并向‘事件接收者’提供一个输出。
如将要在接下来的例II中所示的那样,在浏览器结构中这些程序组件与数据结构中相应的模块匹配。
例II布局在本例中例示三个简档-简档2A无布局的图像画廊的表示。
-简档2B带布局的UI列表的增加。
-简档2C为小屏幕UI列表的增加(无布局)。
简档2A-无布局的图像画廊的表示。有几个XML模块ExclTimeContainers、EventTiming和MultiArcTiming类似于SMIL20中的那些模块,Image类似于XHTML中的Image
模块ExclTimeContainers模块中的<excl>元素含有来自Image模块的<img>元素。<excl>元素具有这样的语义,即每只表示它的孩子之一。如果某元素被激活的,则当前的一个元素被去激活。EventTiming模块中的begin属性规定对应的<img>元素何时必须被显示。
第一个<img>的begin属性有两个被MultiArcTiming模块允许的值。它实现<excl>的初始化。
新的<img>在从其前一个<img>接收到一个”点击”事件后被显示。该”点击”事件被某个用户动作启动,并以独立于平台的方式被引入系统。
图像结果的循环表示。
程序组件
表6用于无布局的图像画廊表示的组件简档2B-带布局的UI列表的增加简档用一个List(列表)模块和一个Layout(布局)模块扩展前面的简档,这两个模块中的后者与SMIL’Basic Layout’模块相当
模块Layout模块增加top(顶)、left(左)、width(宽)和height(高)属性(它与SMIL20 BasicLayout(基本布局)模块在增加这些属性的方式上不同);List模块增加<list>(列表)和<item>(项)元素,它们分别说明一个UI列表接口工具(widget)及其域(fields)。该列表要被显示在屏幕的左半,图像要被显示在屏幕的右半。<list>的UI再现可以以某种方式滚动。<item>元素含有一个要在列表的域中显示的文本串。当单击一个域时,一个与对应<item>元素相关联的事件被唤起。(为了XML格式良好的目的需要<gallery>元素,但这与这个讨论无关。)程序组件
表7带布局的UI列表的组件简档2C-小屏幕UI列表的增加(无布局)该简档与前面的简档相同,不过不支持Layout(布局)模块;Layout语义能被语法分析和验证,但是所说明的行为不被执行
模块或者列表,或者一个被选择的图像被显示。图像是通过单击列表被选择的。单击一个图像则总是导致显示列表。(可以想得出更复杂的方案,例如通过采用双点击或右点击使得列表不是总是被显示在图像之间,或者如下面例3B中所示的那样,等等。这与这个讨论无关。)程序组件
表8小屏幕UI列表的组件(无布局)“LayoutManager”被大量地缩减。它执行以其上一次接收的输入替换屏幕图像的任务。每一次将有一个再现即一个元素可见。
我们再次想起,本例旨在简单地展示本发明。如果进行更复杂的域语法分析,则会得出设计各组件的其它方式。例如,可以将这里所示的组件分解成子组件,根据简档以不同方式将它们分组。然而,不变的是XML模块与这些子组件相关联。更准确地说,在例2C这个例子中,用户单击的分离不是由ListManager执行;相反,它涉及一个管理和分派事件的额外组件。如上所述,这在本例中不细述。关于当<img>被去激活时布局空间的清除,有类似的评述。
XML模块和SW组件之间的关系如下面的表9所示
表9例III多重设备在本例中例示两个简档
-简档3A用于文本的设备和用于音频的设备。
-简档3B用于图像表示的设备和用于管理列表的设备。
这个例子讨论可放缩性特性应用的另一种形式。在头两个例子中,可放缩性涉及扩展客户机设备的性能。本例中,我们采纳前面的两种情况,但是组合这两个互补功能的设备。这两个设备装有相同的XML文档。它们可能是互连的,以致它们能同步它们的操作。第一个设备能表示该文档一部分,第二个设备能表示另一部分。
由于设备装有相同的XML文档,假设该文档允许部分表示——如果客户机只能这样做的话。否则,就需要一个将文档分离成两部分的预处理器(代理(proxy),可能位于设备之一上)。
文档提取和向这两个设备的装载也要求它们之间有某种通信。在文档的表示期间这两个设备之间同步的场合,也需要具有该功能。
SMIL20基本规范是一个如何将相同的文档装入不同功能的客户机中的例子。它用一个被称作systemRequired(系统要求)的属性来说明对某一个模块的支持的需要。该属性是被称作BasicContentControl(基本内容控制)的模块的一个部分。它具有的语义是,对根部位于其被调用的元素上的子树的再现,只有在其关联的功能被支持时才被执行。否则,该子树必须被跳过,与此同时客户机可以继续再现文档的其余部分。在下面的例子中,我们复制这个模块。注意这意味着一个执行功能检查的对应程序组件。
简档3A-用于文本的设备和用于音频的设备有两个设备,一个能按照简档1A表示流式文本,另一个能按照简档1B表示音频。这两个设备都装有来自简档1C的XML文档,不过是已经用systemRequired属性更改过的
模块第一个设备将表示流式文本,第二个设备将再现音频。如果两个设备能被同步,则必须安置图2中所示且在简档1D中描述的Synchronisation模块,以控制这两个设备之间的同步。这可以在代理中,或者在这两个设备的其中之一中。如果XML文档的作者想要求同步,则在<par>元素需要一个对MediaMarkerTiming的systemRequired调用。
简档3B-用于图像表示的设备和用于管理列表的设备有两个设备,一个能按照简档2A显示图像,另一个能表示图像的列表,使用户能在列表中导航。该列表符合简档2B和2C中的一个。这两个设备互相连接,使得“列表”设备能向“图像”显示器发送选择信号。这两个设备都装载有来自简档2C的XML文档,不过是已经用systemRequired属性更改过的,并带有额外的按照简档2A的<img>上的事件说明
模块第一个设备将表示图像;用户能通过“单击”图像而从头到尾滚动图像(单击的形式可以是点击显示设备上的一个旋钮)。它支持在简档2A中描述的组件。第二个设备将表示图像的列表。它支持简档2C加简档2A的组件,特别是ListManager。第二个设备与第一个设备通信,以通知事件。
也可以想象得出第一个设备如简档2C中的那样执行,即它包括ListManager。第二个设备然后提供第一设备的遥控。人们可以想到如果列表代表EPG(电子节目指南),则在电视节目中导航,而不是在图像列表中导航。电视屏保持表示电视节目,与此同时可以在遥控器上检查节目指南。另一种情形是电视节目由多个(照相机)视图组成。不是在同一个屏幕上将导航域与被选择的视图一起显示,而是由一个外围设备接管那部分的显示。程序制作者设计描述包括在各视图中导航的完整程序的XML文档。电视能显示其全部-类似于简档2C,而用一个用于UI组件的专用遥控器扩展电视并在电视中装载来自程序制作者的相同XML文档,则使得能够分离UI和节目显示(除了远程使用的好处外)。这假设XML文档含有像systemRequired属性那样的信息。注意到按照情形2A的方式,也可以在根本不支持导航的电视上采用该程序。
强调“组件”和“结构”在软件设计阶段使用的概念是有用的。它们提供在指令它们功能的实际的程序代码的一级上位抽象。假设一个编译程序创建该实际的代码,并按诸如代码长度的性能标准优化该实际的代码。
各组件也能被其他组件替代,只要它们完全满足相同的输入/输出关系。例如,可以将某个功能从结构中去除,方法是将对应的组件替换为一个满足输入/输出关系的空组件。该空组件接收来自与其输入相连的其它组件的输出,然后或者丢弃该输出或者将其一路传送到其自己的输出。在输出变得可用的信息也可由组件生成,例如是个固定常数。也有可能将接收的输入稍微变更后再提供到输出。这都取决于组件的确切功能及其在整个结构中的作用。替换“空”组件的一种设想是一个位于执行已经保持的功能的组件之间的(简单组件形式的)粘接层。
将语言级的表示功能的XML模块(或XML模块集)与执行该功能的程序或软件级的组件(或组件集)关联。语言级的简档设置对应于结构中的组件的(重)设置/实例化。有一个统一化的结构,然而在设备上的实现只实现它的各部分,以便按要求的功能简档放缩。被实现的各部分含有与构成XML表示语言级的简档的XML模块对应的组件的子集。
XML功能模块的例子包括-同步的定时
-交互作用和其它事件的定时-动画的定时-UI;接口工具(按钮,滑标)-UI;用户输入(XForm)-UI;语音(输入和/或输出)-文本(HTML)的布局-文本样式布局(CSS)-媒体(音频/视频再现)布局-图像布局-流式文本(闭路字幕)布局-数字权限和钥管理(加密)布局-数学公式(MathML)布局本文件中的所有设计,诸如所使用的XML标记,都是举例。不必与具有相同语义和语法的现有XML有一对一的(语义)映射关系。也没有暗示提供良好的标记设计。同样,程序组件是举例命名的,但是不暗示在诸如存储耗费或功能操作的性能尺度上的最优设计。
为了保持低数量的组件,在不影响例子时将组件组合成较大的组件。与各例无关的不重要的组件被忽略。
权利要求
1.一种当在计算机(101)上被执行时形成一个浏览器程序(103;200;300)的计算机程序产品,其中-在包含程序组件(201,...211;301,...306)的浏览器结构(200;300)中编排该程序;-浏览器程序被安排用于处理在包含模块的数据结构中编排的内容;和-浏览器结构中的每个程序组件与该数据结构中的一个相应模块匹配。
2.按照权利要求1的计算机程序产品,其中,程序组件的每一个被安排用于接收来自相应模块的内容,并被提供了用于对来自所述对应模块的内容进行操作的功能。
3.按照权利要求1或2的计算机程序产品,其中,计算机程序包含语法分析程序(210;310),用于从相应的模块中提取内容,并将一个相应模块的内容提供给一个与该相应模块匹配的程序组件(202,...,211;302,...,306)。
4.按照权利要求1至3的任何权利要求的计算机程序产品,其中,根据系统中可用于运行该计算机程序的资源的大小对程序组件的大小和功能进行放缩。
5.按照权利要求1至4中任一权利要求的计算机程序产品,其中,数据结构是具有由XML元素定义的模块的XML数据结构。
6.按照权利要求1至5中任一权利要求的计算机程序产品,其中,计算机程序被安排用于下载程序组件并将它们集成为浏览器的一部分。
7.按照权利要求1至6中任一权利要求的计算机程序产品,其中,数据结构被模块分解并被转发到分布在多个设备(101)上的浏览器。
8.按照权利要求1至7中任一权利要求的计算机程序产品,被安排用于通过向结构中装载一个与选定简档相对应的组件集而处理简档形式的不同功能。
9.带有如权利要求1至7中任一权利要求所述的计算机程序的机顶盒。
10.带有如权利要求1至7中任一权利要求所述的计算机程序的移动电话。
11.带有如权利要求1至7中任一权利要求所述的计算机程序的通用计算机。
12.一种形成浏览器程序(103;200;300)的方法,其中该程序是在包含程序组件(201,...,211;301,...,306)的浏览器结构(200;300)中编排的;处理在包含模块的数据结构中编排的内容;和匹配浏览器结构中的每个程序组件与数据结构中的相应模块。
全文摘要
一种当在计算机(101)上被执行时构成一个浏览器程序(200)的计算机程序产品,其中程序是在包含程序组件(301,…306)组成的浏览器结构(300)中编排的;浏览器程序被安排成处理在由XML标签包装的模块组成的数据结构—例如可扩展标记语言(XML)—中编排的内容。浏览器结构中的每个程序组件与数据结构中的一个对应的模块匹配。XML文档级的某种功能的加入或去除相当于体系结构中一段软件的增加或去除。因此使得受资源约束的设备能够以可互操作和兼容的方式访问例如来自因特网的信息。资源约束涉及存储容量和处理能力,也涉及显示器大小等等。
文档编号G06F9/44GK1578957SQ02821794
公开日2005年2月9日 申请日期2002年10月25日 优先权日2001年11月1日
发明者W·R·T·坦卡特, R·A·W·克劳特, R·M·P·多博斯 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1