CN101283348A - 具有对动态地聚集的文档的和谐合成的多形设计 - Google Patents
具有对动态地聚集的文档的和谐合成的多形设计 Download PDFInfo
- Publication number
- CN101283348A CN101283348A CNA2006800371414A CN200680037141A CN101283348A CN 101283348 A CN101283348 A CN 101283348A CN A2006800371414 A CNA2006800371414 A CN A2006800371414A CN 200680037141 A CN200680037141 A CN 200680037141A CN 101283348 A CN101283348 A CN 101283348A
- Authority
- CN
- China
- Prior art keywords
- content
- template
- layout
- document
- engine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
一种用于创建高质量文档的体系结构,该高质量文档是给定要在文档中显示的内容的类型以及所显示的文档的尺寸/维度而看上去良好的文档。该体系结构可利用宽泛地定义的布局约束的高级模板以将内容自适应到具有各种各样格式的各种各样内容的多个尺寸和维度。另外,高质量文档的高级描述可被转换成用于AGDBL系统的低级约束,从而显著地减少了系统所需的模板数,同时增加了模板的功能以及创建和维护模板的简易性。
Description
背景
诸如报纸和杂志等商业印刷出版物大量地使用基于网格的页面布局和设计。在1920年代和1940年代,设计者Mondrian和Le Corbusier创建了用于印刷各种类型的文档内容的有序的基于网格的设计系统。这些基于网格的设计系统在第二次世界大战之后在瑞士得到了进一步的改进,并且在1950年代和1960年代,作为用于商业出版物的标准而在全世界迅速普及。当今,基于网格的设计系统保持普遍在各种出版系统中实现。
存在支持基于网格的页面设计的几种成功的软件系统。诸如由华盛顿州雷蒙德市的微软公司提供的MICROSOFT PUBLISHER、由科罗拉多州丹佛市的Quark有限公司提供的QUARKXPRESS、以及由加利福尼亚州圣何塞市的Adobe Systems股份有限公司提供的ADOBE PAGEMAKER等产品已经成为用于商业出版和桌面出版的行业标准。尽管这些软件系统对于其预期目的是足够的,但诸如文本、图像和边栏(sidebar)等页面元素到文档布局内的网格位置的实际映射仍是一个手动过程。通常,基于网格的文档布局是对一种特定页面尺寸,诸如英寸的纸张而定制的。然而,没有显而易见的方法使这些定制的布局以适度的方式适合各种页面尺寸和其它查看条件(即,此处也称为“文档回流(document reflow)”。
由于基于网格的文档布局考虑了静态固定尺寸和手动过程,因此基于网格的设计系统一般不支持“文档回流”。诸如Microsoft Word和超文本标记语言(HTML)等支持文档内容的回流的系统通常将文档内容认为是从一页曲折前进到下一页的单个、一维的流。由此,这些类型的系统可能会丢失原始的基于网格的文档布局。对于利用具有不同形状因子的多个方向的系统也存在这一困难。
推广基于网格的设计的困难解释了屏幕上布局与类似的打印布局相比的一般内在本质。当显示设备的屏幕分辨率开始匹配打印页面的分辨率质量时,引发了对方便且自动地将基于网格的文档涉及适应到任意尺寸的电子显示器的需求。可使用“和谐合成(harmonic composition)”来定义应用于诸如(但不限于)基于网格的系统内的文本和图像等对象的布置的一组规则和约束,以便为动态聚集的文档的最优查看和易读性保持各元素的关系和比例。这可以是有效的高质量自适应布局的开发和设计中的唯一因素。这一困难辩证地是创建与纸张上的墨水的体验匹敌的在线阅读体验的最大的剩余障碍之一。屏幕上阅读体验最终可超越阅读纸张的体验,因为计算机提供了多种用于定制和样式的机会,以及诸如动画和交互性等能力。
自适应的基于网格的文档布局需要灵活的分页用于将文档内容映射到一组离散的页面。这些离散的页面可以服从诸如文本流中单词的顺序排序、页面的有限容量、以及文档内的内容之间的依赖性(例如,对图或表的文本引用)等各种约束。找到合乎需要的分页在涉及诸如图或表等一个或多个附加类型的内容时通常是困难的。
为了获得最优分页,必须为每一组适当的离散页面定义一成功测度。分页具有“最优子问题”属性,并且因此可通过动态编程来解决。任何n个页面的最优解决方案将固有地包含n-1个页面的最优解决方案。通常,动态编程分页器以一空解决方案组开始,并且递增地添加并解决一子问题(例如,离散页面的一个子集)来找到适当的一组离散页面。另外,该动态编程分页器保持每一子问题的得分(例如,基于预定度量的成功测度)和指回最优解决方案中的前导子问题的指针的表。通过扫描该表找到可能适当地领先于新的子问题的具有最佳得分的前导子问题来评估该新的子问题。因此,该动态编程分页器评估每一新的子问题的每一可能的前导者。不幸的是,每一新的子问题可能有大量的前导者要评估,并且大部分前导者甚至还不具备该新的子问题的有效前导者的资格。因此,该动态编程分页器低效地进行对不可使用的前导子问题的评估,并且因此降低了分页速度。
此外,在当今的计算机环境中,设备和显示器的形状和宽高比都迅速增长。内容和信息大量涌入微小的腕式显示器、便携式手持设备、数字光纤、工作站和甚至更大的墙面安装显示器中。作为该趋势的一部分,个人计算机已作为一种重要的阅读介质而显现。实际上,屏幕上阅读在当今社会中已成为一种收集信息的主要形式。
然而,当前设计用于web的文档的许多方法或具有显著不同的显示器尺寸和形状的这些设备未能高效地利用由许多各种各样显示器提供的新的动态可操作区域。大多数web格式不能在多个显示器上良好执行。这部分是由于基于静态打印的设计媒体对于屏幕上可读性的影响。大量信息是以打印形式获得的,并且良好的文档设计的优点和重要性在打印领域中公知是有助于通信、可读性和可销售性的,因为它吸引并保留了读者的注意力。尽管质量好的、基于网格的设计在打印中是常见的,但是在在线文档中并不是流行的。因此,需要探索新的多级设计概念来考虑屏幕尺寸、比率和方向的显示特性。
因特网使得能够非常容易地从来自许多离散源的信息中组装文档,并将其一起显示在单个屏幕上。搜索引擎和新闻聚集器完成这一工作,并将其结果显示为HTML网页。然而较佳的是替代地将这些结果以能与打印中常见的质量设计匹敌的良好设计的、有吸引力的方式来显示这些结果。较早的工作使得可以显示自适应到不同查看条件的基于网格的设计,但是这些设计并不始终能很好地迁移到不同的内容并且是非常难以生产的。
由此,先前的工作允许用户设计自适应到不同窗口尺寸的基于网格的文档布局,但是文档布局是以难以创建和维护的低级语言来指定的,例如,“样式”可被设计为基于约束的模板的集合,每一模板可在一指定范围的屏幕尺寸下显示特定的内容集合。当调整文档窗口的大小时,该模板的约束系统调整每一显示元素的大小,直到越过一阈值,此时使用另一模板。然而,先前的系统的目标是使文档样式可对多个文档重复使用。尽管这就某种程度而言的确如此,但是实际上,发现许多布局在图片尺寸与原始设计中使用的那些尺寸显著不同的情况下看上去并不好。设计一种可处理可视元素的任意组合的健壮的样式需要设计大量模板,每一模板用于元素和元素变体的每一可能的组合。
因此,先前的自适应文档系统允许设计者构建自适应到不同屏幕尺寸和格式的文档,但是遭受两个关键问题。首先,非常难以用实际文档布局来工作,这既涉及创建新设计又涉及修改现有设计。其次,文档布局在出版之前没有设计者或编辑的修改的情况下不能非常好地自适应到完全不同的内容选择。
印刷媒体中的布局具有通过同时更改布局和内容来定制最终产品的设计者和编辑的好处。单个、静态的设计模板不可能对其中标题或标题行具有不同长度并且图形是不同尺寸的不同类型的文档内容都看上去是非常好的,即使页面上的大多数设计元素可能是相同的。这一特性的多级设计的一个主要挑战是维护质量布局,因为没有编辑器来确保布局中的每样东西看上去都很好并且在必要时定制这些东西,该设计应当能够适应显示内容的多种方式,并且在任一时刻区分哪一方法是最佳的。
概述
以下提出了所要求保护的主题的简化概述以提供对所要求保护的主题的某些方面的基本理解。本概述并非本发明的广泛综述。它并不旨在确定本发明的关键/决定性要素,也不旨在勾画本发明的范围。其唯一的目的是以简化的形式提出所要求保护的主题的某些概念,作为对稍后提出的更详细描述的序言。
此处所公开并要求保护的所要求保护的主题的一方面包括一种可帮助容易地设计和显示自适应到许多不同查看条件和内容选择的丰富的、基于网格的设计和/或高质量布局的体系结构。为实现上述目的,可采用以高级别来描述布局约束的模板。这些模板可以更容易产生和维护,同时做增加了布局的灵活性,从而允许其更好地自适应到完全不同的内容。并且,该体系结构的适用性可以通过放宽可被显示的内容的类型,尤其集中于从因特网上的各种源将聚集的内容,而在先前的系统(例如,Jacobs等人2003年的“Adaptive Grid-BasedDocument Layout”(自适应基于网格的文档布局)(AGBDL))上得到增强。
根据所要求保护的主题的一方面,可用容易理解和使用的高级构造来定义模板。因此,设计和/或维护模板的任务对于可能没有大量技术背景的图形设计者而言是实际可行的。另外,所得的设计可被其它设计者容易地理解和维护,即使是没有帮助创建该模板的那些设计者。所创建的模板可同时用于静态文档和从各种基于web的源获得的动态文档。模板也可用于例如可产生具有多个内容层的文档的多层设计布局。
根据另一方面,所得的文档布局可具有高质量布局(例如,“看上去良好的”布局),并且在采用完全不同类型的内容的同时保留其在不同屏幕尺寸下的视觉吸引力。高质量布局可被设计成使得其不会损坏语义流、品牌识别、图像和文本相关、广告主题等。
根据所要求保护的主题的另一方面,该模板可以足够灵活以处理可在聚集文档中找到的各种各样的内容,而无需设计并维护大量模板。相反,单个模板可定义元素和/或内容的多个可能的配置,这极大地减少了提供灵活设计所需的模板的数量。此外,以高级别描述的模板可被转换成由其它系统采用的低级约束。该体系结构可自动提供约束系统以实现自适应文档中的公共行为,而不需要每一设计者手动对其进行编码。
此外,该体系结构可允许图形设计者容易地设计出自适应到不同屏幕尺寸的高质量文档布局,即使要显示的精确内容未知。另外,文档的概念可被扩展以包括对可能不使用统一格式的外部源的引用。因此,该体系结构可使得能够容易地产生以高质量的、基于网格的自适应设计为基础的多级设计体系结构,其具有足够的灵活性来处理从多个源聚集的内容,并且在设计时可以是未知的。
为实现上述和相关目的,此处结合以下描述和附图描述了所要求保护的主题的某些说明性方面。然而,这些方面仅指示了可以采用本发明的原理的各种方式中的几种,并且所要求保护的主题旨在包括所有这些方面及其等效方面。当结合附图考虑本发明的以下详细描述时,本发明的其它优点和新颖特征将是显而易见的。
附图简述
图1示出了帮助自适应可在不同尺寸和维度下显示的具有各种各样内容的文档布局的系统。
图2示出了方便模板的创建、修改和/或存储的系统的框图。
图3示出了至少部分地基于语义流、品牌识别、图像和文本相关、和/或广告主题来生成高质量布局的布局引擎。
图4示出了方便自适应可基于输出设备的尺寸来显示的文档布局的系统。
图5示出了可基于用高级构造指定的模板来创建高质量布局,并将该布局转换成低级引擎可用于创建该高质量布局的低级约束的系统。
图6示出了选择模板和/或排列布局上的内容以产生高质量布局的系统。
图7示出了采用可扩展样式表语言变换(XSLT)来从源格式进行转换的布局引擎。
图8示出了方便排列内容以创建高质量布局的过程的示例性流程图。
图9显示了自适应的基于网格的文档布局环境的框图表示。
图10显示了本发明可利用的计算环境及其计算机系统的框图表示。
图11显示了包括自适应布局样式和模板的文档布局的框图表示。
图12显示了自适应模板的框图表示。
图13显示了包括内容流的文档内容的框图表示。
图14显示了包括内容项目的内容流的框图表示。
图15A-15B显示了向模板应用文档内容的方法的流程图表示。
图16A-16C显示了使内容流入文档布局内的元素的方法的流程图表示。
图17A-17C显示了在文档布局内对元素进行自我大小调整的方法的流程图表示。
图18显示了基于文档内容对模板的适合的良好程度来对模板评分的方法的流程图表示。
图19A-19D显示了将文档内容最优地分页成自适应的基于网格的文档布局的方法的流程图表示。
图20示出了示例性计算环境的示意性框图。
发明描述
现在参考附图描述所要求保护的主题,在全部附图中,使用相同的参考标号来指代相同的元素。在以下描述中,出于解释的目的,阐明了众多具体细节以提供对本发明的全面理解。然而,很明显,所要求保护的主题可以在没有这些具体细节的情况下实施。在其它情况中,以框图形式示出了公知的结构和设备以便于描述所要求保护的主题。
如本申请中所使用的,术语“组件”和“系统”指的是计算机相关的实体,无论是硬件、硬件和软件的组合、软件还是执行中的软件。例如,组件可以是,但不限于,运行在处理器上的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,运行在服务器上的应用程序和服务器都可以是组件。一个或多个组件可驻留在进程和/或执行的线程中,并且组件可位于一个计算机上和/或在两个或多个计算机之间分布。
如本申请中所使用的,术语“设计”或“布局”一般指的是如何在文档内排列内容。如此处所使用的设计和布局基本可以互换。例如,文档设计和文档布局都可以指如何在文档中排列内容。
如本申请中所使用的,短语“高级”一般指与低级语言或构造相比更为用户友好、并且在某种程度上可能是平台无关的编程语言或编程构造。高级构造可提供对低级操作的抽象,以避免否则是实现操作所必需的复杂性。一般而言,汇编语言以及纯超文本标记语言(HTML)和其它“松散”编码格式被认为是低级的,而在应用了可扩展样式表语言变换(XSLT)之后的输出格式被认为是高级的。
如此处所使用的,术语“高质量”指给定当前显示器尺寸和当前内容的情况下所得的输出被确定为看上去良好。高质量可以涉及一布局或设计,或布局内可插入特定内容的特定位置。例如,高质量布局是在具有当前内容的当前显示器尺寸下被确定为看上去良好的布局,而高质量位置是可引入特定内容同时维持总体布局或设计的高质量特性的位置。可以理解,布局或位置的高质量特性也可能需要满足附加条件,诸如不损坏语义流、品牌识别、图像和文本相关、广告主题等。还可以理解,这些附加条件可以基于以下所描述的考虑事项,诸如非矩形模板和元素、列平衡、不可中断段落和原子子文档、以及交互性。
此处所描述的实施例涉及用于自适应地显示基于web的、积聚的数据的系统,以及对自适应的、基于网格的文档布局系统的模板改进。提供了一种用于聚集因特网内容并使用自适应的、基于网格的文档布局(AGBDL)系统来显示它的系统,它允许数据以可自动自适应到不同显示器大小的各种各样的高质量可视格式来显示。该系统可使用多个内容源中的任一个,包括但不限于RSS新闻源、因特网搜索引擎结果、诸如MSN Nesbot等因特网新闻聚集器后端、以及直接从诸如报纸和杂志等内容网站直接“刮取(scrape)”的内容。这可通过如同样在以下详细描述的原始AGBDL工作中所描述的那样扩展文档的观念来完成。
本主题的体系结构可以支持由多个单独的文档构成且可被安排成父文档和嵌入的子文档的多级分层结构的文档。每一组成文档可包括本机源和可在加载时被转换成该系统的本机文档格式的外部源,该转换或者可通过可对每一单独的源指定的XSLT转换,或者可通过可能是web刮取器或某一其它数据收集或处理代理的助手程序来完成。外部源可在文档中的多个级别处指定。外部源可作为整个文档(顶层或子文档)、作为文档中的特定内容流、或作为特定内容流中的单个内容项目来加载。此外,外部源可被整体或部分地包括在文档中。例如,单个内容流在转换之后可选择性地从一给定源加载。
为支持这一特征,可扩展文档模式以允许AGBDL文档以上述方式引用外部源。当对一文档进行语法分析并加载时,指定任何子文档或其它外部内容都可被转换(如有必要),然后同样被递归地进行语法分析和加载。子文档被独立地定义为完整的AGBDL文档,它们引用在装入文档中用作子模板的其自己的一组显示模板。在显示时,向子文档传递其中应呈现该文档的屏幕区域。该子文档可递归地分页,然后在给定区域中如同它是给定窗口中的顶层文档那样布局其自身。该子文档可以不同于作为装入文档中的数据加载的其它外部内容,因为后者可与任何其它内容一样使用父文档的模板在父文档中显示。
关于AGBDL系统中的自适应模板(以下详细描述),提供结合以下的扩展:高级模板设计、扩展的模板自适应性(模板自适应到内容)、以及模板参数和输出。所有这三个类别都可帮助“文档样式”的创作和维护。样式可被定义为共同覆盖了其中可呈现文档的布局范围的模板的集合。
高级模板涉及可允许使用高级构造来指定基于约束的模板,这些高级构造由系统解释来生成低级细节,包括每一显示元素的尺寸和位置,以及控制该元素的显示特征、与其它显示元素的关系以及自适应行为的各个约束。
常规上,诸如在AGBDL系统中,模板需要通过编写描述在每一模板中出现的每一显示元素、约束和属性的XML代码来指定。该模板创作工具使得(辩证地)能经由GUI界面来更容易地编写和修改模板,但是仍要求作者经由该其它方法来指定全部的相同细节。
本发明可允许使用诸如自适应列网格和元素之间的相对关系等高级构造的文档规范。列网格可使用比例和绝对列宽来定义,并且可指定控制在任何给定页宽下要实例化哪些列的规则。显示元素然后可横跨这些列或这些列的部分中的一个或多个来放置,然后可通过例如“过(over)”和“欠(under)”分配来与其它元素相关。单个语句可指定或暗示在加载时自动从中生成许多低级约束的参数的集合。可指定建立诸如用于生成附加约束的页边距和填充等元素属性的其它参数。
文档或页面通常包含诸如多个文本列等相似显示元素的集合,它们共享许多参数值。所要求保护的主题的各方面可允许一元素被描述一次并被实例化多次。每一实例可具有覆盖其细节的一个子集,诸如位置信息。另外,该描述语言是经重新组织的,使得与一特定元素有关的所有约束可被包括在该元素描述中,从而使用户更容易理解和维护该模板。
扩展的模板自适应性可允许每一单独模板覆盖一更宽范围的显示器尺寸和文档内容。先前,每一模板具有一组固定的显示元素,从而需要一组特定的内容,并且元素将通过约束系统来自适应以覆盖一页面尺寸范围。诸如页面上的图的数目等每一不同的内容种类将需要一不同的模板。具有横向宽高比的图将使用与具有纵向宽高比的图不同的模板。处理一页面上可能具有不同宽高比或分辨率的多个图需要增加模板的数量来处理以各种顺序出现在内容流中的图类型的可能组合。单个模板也具有原始系统中固定数量的列,从而需要新的模板来处理一页可能拥有的每个数目的列的图类型的所有可能排列。对灵活“样式”所需的模板的总数随着模板在其中自适应的可能尺寸的增加而呈指数地增长,从而使得广泛适用的样式的创建变得繁琐且其维护变得极其困难。
本主题的模板定义具有解决这些问题的多个新特征。可任选元素可允许由单个模板来处理不同的内容选择。元素可被组合成“Or(或)”组,该组可允许一模板在每次使用该模板时仅实例化来自一组可能选择中的一个元素。Or组可使用若干算法之一来决定在给定布局中要选择哪一元素,包括最佳适合、第一适合、第一良好适合和类似的算法。
因此,该新模板现在可具有可变数量的列。以上所描述的列定义可包括用于基于特定页阈值来包括自适应列的规则,或者阈值可由该体系结构的组件基于最小列宽来计算。可指定控制在特定页面大小下实例化哪些列的列优先级。在特定页宽下未使用的列可由约束系统折叠到零宽度,使得横跨这些列的元素在该页面大小下要么在宽度上减小,要么被完全消除。该可任选元素和自适应列网格可一起显著减少模板和相关联维护的数量。
对该模板系统的另一扩展可允许在父模板和其中布置的子模板之间来回传递参数。参数和返回值可被放置在接收模板的约束高速缓存中,使得它们可如任何其它约束值一样由元素来引用。这些参数可用于例如设置子模板中的列数、标记可任选元素的包括或排除、或控制子模板中显示图的方式。传递给子模板的参数可以是直接值,或者可以是父模板系统中可在调用时求值的约束。
同样,可将一样式表作为参数传递给子模板,因此父文档可直接控制子文档中使用的许多排版细节。返回的参数可将否则被隐藏的关于子模板的布局的细节告知父模板,诸如图的顶部或底部位于何处、或标题行或标题在何处结束。父模板然后可在子模板中将其它显示元素与特征对齐,或者确保单独的子模板中的两个不相关的图不会并排放置。
如本领域的技术人员将理解的,还有其它被添加到模板能力的改进,尤其是用于显示如上所述的分层复合文档的改进。例如,“And(和)”组允许一元素集合使用单个内容原子,从而在布置和组织文档时提供了更大的灵活性。这可允许例如从单独的新闻报道中挖出特写照片并将其显示在报纸头版上除该报道其余部分之外的单独元素中。另一特征可将主存元素的图形显示界面(GUI)区域传递给在该元素中使用的子模板,而非先前的系统所传递的矩形边界框。该方面可允许子模板将其文本环绕在父模板中的重叠元素周围,或从OR组中选择一未被遮蔽的元素来显示图片。
如上所述,其它实施例可提供用于模板规范的高级构造,以促进描述列网格的所需行为(诸如对每一列的特定范围的所需尺寸,包括固定大小的选择的集合)的更强大方式。另外,可例如使用自动生成的页边距来为用于解析过约束和欠约束情形指定优先级。各实施例可支持与列相似的、但是遵循不同的规则和试探的自动生成的垂直网格,以及划分各个网格列和附加的顶层网格来允许具有由不同网格控制的不同元素集合的布局的自适应子网格。各个元素可被实例化多次,并且构想了能够构建全部都可被一起实例化多次的一组元素。
在存在可任选元素(以及元素的OR组)的情况下指定一致的约束系统可迅速变得非常复杂和棘手,还构想开发构造以在给定所需结果的描述时设计出正确的系统并将其自动内建到一模板中。
另外,还构想了通过允许最终用户在查看内容时调整个别显示元素的大小或向元素添加新数据来向自适应显示布局(ADL)文档添加更多交互性,将新的数据添加到元素中,以及扩展自适应列计数行为以使用更复杂的方法来基于存在的内容选择在给定大小下要包括哪些列。这可涉及呈现每一可能的列选择,并基于布局得分选择最佳的一个。
如上简要描述的,根据一方面,所要求保护的主题可用三种一般的方式来扩展先前的AGBDL文档系统。首先,改进该模板系统,使得模板更强大并且需要少得多的模板来覆盖甚至范围宽得多的内容,同时使得模板更易于编写和维护。另外,扩展文档定义以允许文档从多个位置收集内容并使单独的文档可被组装成父和子文档的分层结构。最后,更新布局引擎(例如,AGBDL系统中的低级引擎)以提供对通常是新领域所特有的新特征的支持。现在将描述这些扩展和所要求保护的主题的其它方面。
模板
模板有三个主要方面。首先,模板可使用使得模板更易于创作、理解和维护的高级语言来指定。其次,模板可自适应到可用内容而非对单个布局中的每一可能的变体以及内容变体的组合需要单独的模板。再者,模板可具有在较大范围的屏幕尺寸上扩展的能力,从而减少了必须编写和维护的相似模板的数量。
AGBDL系统中的模板是非常难以编写和理解的,因为它们是以非常低级的语言来编写的。每一单独约束被明确指定,并且对页面上的每一元素需要许多约束。用于诸如可变数量的列等复杂自适应的约束系统极难编写,并且译解另一作者的模板太过困难。该模板设计工具提供了一种用于模板设计的GUI,但是它主要仅提供低级支持,仍需要独立地设置大多数约束。此外,其输出是非常难以理解和编辑的,从而使得难以超出该工具的能力而定制设计。
根据一个实施例,所要求保护的主题采用了利用高级构造的本机优点的模板,由此在模板语言本身中包括了更强大的构件块。该新语言中的高级原语可在该模板由系统加载时被编译成基本结构,或者它们可被经更新的布局引擎直接读取。约束系统的许多部分可从该新原语中推断并且是自动生成的。该系统还为公知的有用任务自动生成复杂的约束系统。
高级模板描述
原始的AGBDL系统和所要求保护的主题都可将模板定义为可扩展标记语言(XML)文档。在原始系统中,模板描述被组织成部分。所有元素由父<elements>(元素)节点内的<element>节点来描述,并且所有约束由父<constraints>(约束)节点内的<constraint>节点来描述。高级模板可保留两个部分,并且还可允许作者替换地在任何元素节点内定义约束。这一灵活性可允许模板将描述一特定元素的约束直接与该元素相组合,并将全局约束放置在通用部分中。
可定义多个子节点,而非要求作者单独指定每一约束,这些子节点可被放置在元素节点下以隐含地定义应用于父节点的若干单独约束。例如,可对一元素指定页边距和填充,其中单个节点包含以下示例中示出的某些属性:
<margin all=″5″sides=″5″ends=″5″left=″5″right=″5″top=″5″
bottom=″5″/>
<padding all=″page.default.padding″left=″page.width * 0.05″/>
特定分配将通常始终覆盖更一般的分配。未被一属性定义的任何值可被假定为零。作者可向直接值或引用其它约束的表达式分配属性。控制元素的大小和放置的约束可同样使用可能属性的一个子集用单个位置节点来指定。如果在对位置节点进行语法分析之后一节点是欠约束的,则通常生成错误。
如在以下示例中所示的,可采用“over(上)”和“under(下)”属性来基于其它元素的位置分配元素。例如,“over”属性将当前元素的顶部与命名元素的底部对齐,而“under”属性将该元素的底部与命名元素的顶部对齐。
<location left=″page.left″right=″page.left+column.width″
top=″header.bottom″height=″300″/>
<location center=″page.center″″width=″250″under=″header″
over=″footer″/>
常见的是将一文档划分成粗略的列网格。当文档的宽度改变时,仅有几个可能的行为是大多数列要用来自适应的。例如,列可能全部都与页面所加宽的相等地增长,或者与页面变窄相等地收缩。列还可能根据某一固定的比例来增长或收缩。作为替代或除此之外,某些列可能会保持固定的宽度而其它列调整大小,或者可能将额外的宽度吸收到列周围的装订线和页边距中。可以理解,该模板语言可包含定义使用以上列出的行为,或甚至其它可能的或所需的行为的组合来定义自适应的网格的工具。所要求保护的主题的各方面可自动生成实现对各列所定义的行为所需的约束系统。例如,模板设计者可创建定义成员列的数量和默认行为的<grid>(网格)节点,然后可在该网格节点下创建任意数目的列节点,这些列节点可定义个别列的替换行为,如以下示例中的:
<grid id=″maingrid″columns=″4″type=″proportional″margin=″10″>
<column n=″2″proportion=″3.0″/>
<column n=″4″type=″fixed″width=″200″/></grid>
以上网格节点可定义四列的列网格。前三列被定义为与页面成比例地增长,并且第二列的宽度是其它两列中的每一列的三倍。第四列始终保持固定在200像素的宽度。当对网格节点进行语法分析时,可创建定义网格线的约束,例如名为“maingrid.grid0”到“maingrid.grid4”。当页面宽度改变时定位每一网格线的约束系统可被自动生成。可通过定义相对于网格线的列来形成进一步的约束,例如名为“maingrid.column1.right”、“maingrid.column1.left”等。模板作者可在定义元素的约束中直接引用这些名称,或者可将一“column(列)”属性放置在暗示左和右约束的位置节点中,如在以下示例的后两个中所做的。
<location left=″maingrid.column2.left″
right=″maingrid.column2.right″top=″page.top″
bottom=″page.bottom″/>
<location column=″maingrid.column1″top=″page.top″
bottom=″page.bottom″/>
<location column=″column2-column3″under=″masthead″
height=″300″/>
第二个位置列示例中的短划线(“-”)此处指示该元素同时跨越了列2和3。如果仅定义了一个网格,则可以从列和网格名称中略去名称前缀,如在以上第二个示例中所做的,并且它们将被假定涉及单个网格。除了单独的列之外,还可使用列跨度。可对每一列创建可在定位元素时使用的附加约束。这些约束可包括但不限于,“column.width”和“column.center”,以及分数列线“column.1third”、“column.2third”、“column.1quater”等等。
典型的是在一页面上具有共享许多(如果不是大多数)共同的属性的相似元素,诸如多列页面上的文本列、分隔符图形和数字元素。元素定义可通过在单个<element>节点下放置多个<location>(位置)节点来重复使用。每个位置节点可以创建使用附加节点的属性定义大小和位置的付元素的新实例。元素名称可具有以1为基数的索引,该索引以位置节点出现的顺序来分配,并被追加到节点的名称使得各实例可在约束表达式中区分。
当在具有多次实例化的元素中定义约束时,每一实例通常必须对每一约束使用一唯一名称。可使得宏可用以便于这种多次实例化。出现在约束名称或表达式中的串“!THIS”可被求值为那时所处理的实例的名称。“!LAST”可被求值为前一元素,这使得能方便地链接或堆叠各元素。以句点(“.”)开始一元素一般假设当前实例的名称在该句点之前。
使用多个位置节点可能是形成重复元素的简明且有效的方式,但是它也可用于允许某些实例中的变体。例如,某些否则相同的元素可能具有不同的z层(以下描述)要求,或可从不同的内容流中消耗。鉴于此原因,元素节点中定义的任何特性可在位置节点中被覆盖。由单个值构成的特性,诸如层(layer)或样式ID(style ID)可通过设置该位置节点上的属性来覆盖。诸如先决条件(precondition)等更复杂的特性可通过将一先决条件节点放置在位置节点下来覆盖。以下示例示出了被实例化三次的元素,其中在两个实例上特性被覆盖。
<element id=″text.column″layer=″2″recomputeHeight=″true″>
<content content-src=″body″/>
<style id=″normal″/>
<padding sides=″10″ends=″5″/>
<margin all=″8″/>
<location column=″column1″under=″header″
height=″page.bottom-!THIS!.top″/>
<location column=″column2″under=″header″
height=″page.bottom-!THIS!.top″layer=″3″/>
<location column=″column3″under=″header″
height=″page.bottom-!THIS!.top″>
<padding all=″0″top=″5″/>
</location>
<constraint var=″!THIS!.area″value=″!THIS!.height
*!THIS!.width″/>
</element>
在AGBDL系统中,常见的是为单个页面上支持的列的每一计数创建一新的模板族。模板族可被一范围的页宽选中。一列的模板族可能用于窄页面,并且当页宽增加到超过给定阈值时,则系统将切换到两列的族。每一族包含覆盖了页面上的内容的不同组合和位置的多个模板。通常,这些族中的大多数可视元素都是相同的,除了列数之外。
族之间的这一相似性可通过定义不仅在页宽改变时调整列大小,而且还可改变页面上的列数的自适应网格来调节。这可通过在模板中将一<adaptive>(自适应)节点放在网格定义节点之下来实现。当存在该自适应节点时,网格节点中的列计数可用作最大列数。可在该自适应节点中放置一规则以确定在任何给定页宽下将激活多少列。可指定例如minColumnWidth(最小列宽)或maxColumnWidth(最大列宽)等规则。minColumnWidth规则可指示模板使用最大列数,这些列通常都具有至少为给定阈值的标准宽度。由于列可具有不同的成比例大小,因此在检查最小和/或最大宽度时可将每一列的实际大小可除以该列的比例值。
作者可对任何或全部列给予一优先级,该优先级控制当页面宽度不足以包括所有列时丢弃列的顺序。当没有指定优先级时可应用默认优先级。例如,默认优先级可被设为从左到右丢弃列。为分配不同的优先级,作者可在网格定义节点中包括一优先级(priority)属性,其中一逗号分隔的优先级值列表从左至右分配给各列。或者,作者可在网格定义的列定义节点中包括优先级属性。优先级通常是整数值。对于给定的页面布局,一般仅包括具有小于或等于活动列数的优先级值的列。
当从模板的实例化中丢弃自适应列时,约束系统一般将该列折叠到零宽度。在布局时具有零宽度的元素通常不会消耗内容或对模板得分作出贡献。如果一元素跨多列,则该元素很可能仅显现为跨任何给定布局中活动的列。
有时,设计者希望将一元素放置在具有自适应列的页面的最左边或最右边的列中。为使这一过程变得容易,位置节点可以识别列属性中的特殊关键字,例如“leftmost”(最左边)和“rightmost”(最右边)。
对内容的模板自适应
模板可用多种方式自适应到不同的内容配置。AGBDL模板可具有施加于其上的、指示其中可使用每一模板的环境(包括精确的内容要求)的多个先决条件。相反,所要求保护的主题的各方面可允许将先决条件除了施加于作为整体的模板之外还施加于模板中的个别元素上。这些元素先决条件可允许元素取决于可用内容、查看条件、或系统中的任何其它约束而被有条件地包括在布局中。当不使用可任选元素时对模板的目标得分进行罚分可能是有用的。名为例如“元素名.active”的特殊约束值可对每一元素被自动添加到该模板的约束系统。元素名.active的值例如在该元素被包括在布局中时可被设为1,而在该元素未被包括在布局中时可被设为0。该约束值可被测试以在确定模板的目标得分时考虑任何元素的存在。设置在元素节点上的先决条件一般应用于该元素的所有实例。先决条件节点也可被放置在位置节点内部,以添加附加先决条件或覆盖设置在元素节点上的任何先决条件。
元素先决条件可允许多个元素被单独控制,但是将元素控制绑定在一起通常是有用的,并且元素可在若干构造中被分组在一起。AND组可允许若干元素由单个一组先决条件来控制。类似地,OR组可允许定义多个布局元素,其中仅一个元素将被包括在模板的任何实例中。可支持若干选项和/或算法来决定当有多个选项可能时使用哪一实例。第一适合(First-Fit)算法可使用该组中满足所有特定先决条件的第一个元素。最佳适合(Best-Fit)算法可对每一组成员进行评估,并使用返回最佳目标布局得分的元素。第一良好适合
(First-Good-Fit)算法可使用组中返回超过给定阈值的布局得分的第一个元素。
可以理解,作者在设计具有可任选元素的模板时应使用警告,使得元素之间的约束关系保持有效,并且不管在模板的给定实例化中是否存在任何个别元素都产生期望结果。固定大小元素在未被实例化时可保留其尺寸,但是以recomputeHeight=”true”来定义的可变高度元素一般被调整大小为零高度。定义OR组的边界的约束可被自动指定为与对每一布局选择的任何成员元素的边界相同。
根据另一方面,可提供一种将模板自适应到内容的方法。该方法着眼于将如字体和大小等样式特性自适应到特定内容。在设计模板时可将文本块的样式分配给一显示元素。这通常不是问题,但是在某些应用中,诸如在报纸页面上显示标题行,则文本的可视外观对于其有效性是关键的。在印刷的报纸中,页面编辑将标题行写为填满可用空间,从而控制了断行和平衡。跨不同大小的列放置的随机标题行通常会较差地间断和/或无法填满行,从而造成较差质量的布局。
根据所要求保护的主题的另一方面,这一困难可通过允许模板中的样式在显示时自适应到可用内容来缓和。设计者可指定对给定元素使用的可能样式的列表,并且布局引擎可尝试每一样式,从而对每一样式生成一目标得分。产生最佳得分的样式最经常在实际布局中使用。然而,相同的文本和模板组合在不同的页面尺寸下可能会选择不同的样式。可采用用于评估文本布局的方法来确定最佳样式。例如,可利用按特定样式的字体大小缩放的最优断行符评分函数的结果。最优断行符测量每一行中剩余的空白区,被表达为多个字符宽度。由于字符宽度通常取决于未经缩放的字体大小,因此较大的字体往往会产生较小
(较好)的得分。
文档表示
扩展文档表示以允许以高质量方式显示取自各种各样的源的数据。文档通常与原始AGBDL系统(以下讨论)同样地结构化,但是具有增加的能力。
由于没有用于因特网上的数据的标准格式,因此通过例如XSLT来支持对数据源的进行中转换。XSLT是通过应用由一转换文件指定的一系列规则来将源文档(一般是XML文档)转换成新结果文档的系统。给定一组可由结果文档引用的适当模板,任何任意的XML数据都可被变换成然后可被显示的文档。以此方式,如果存在XSLT转换,任何XML数据、具有形式良好的XML源、或能够进行自动转换的其它类型的数据可直接从因特网加载。
用户可指定一转换文件作为对查看器的参数,并可指定文档路径或统一定位符(URL)。或者,用户可通过在诸如操作系统注册表等注册表中放置一条目将一路径或URL前缀与一转换文件相关联。只要加载了以该前缀开头的命名路径或URL,该关联就可自动帮助将应用于输入文档的XSLT变换。
常规上,XSLT转换的一个限制是它们仅对形式良好的XML操作,而许多HTML网页并非是形式良好的。因此,用户可指定一替换转换程序,诸如web刮取器,它可在对指定数据进行语法分析之前预处理该数据。在某些示例性应用中,将同时采用专门的web刮取器和对刮取器的输出操作的XSLT转换来产生最终文档。
文档的基本结构通常将内容组织成内容流的集合,这可定义有序的数据序列。内容可以是文本、图像或复合项目的流,其可包含其自己的使用子模板递归地布置的子流的集合。显示复合元素的模板一般必须提供可用于布置单独的复合元素流的模板列表。
为在文档中包括外部内容的方式提供灵活性通常是有用的。文档中几乎任何内容流都可以是可从提供的路径或URL加载的外部流。除此之外或作为替代,可对单个内容流中的个别内容项目指定外部引用。实际上所有外部引用都可具有一相关联的XLT转换或以链接指定的其它预处理代理。几乎任何引用的文档都可作为一复合项目来整体加载,或者可从文档中提取个别流。例如,在新闻聚集器中,可具有包含从单独的源加载的单独的新闻报道的流集合,然后是提取其每一标题行以构建目录的单个流。
尽管为在AGBDL系统中提供,但是所要求保护的主题的各方面可引入子文档的概念,这可以被定义为包括其自己的显示模板列表的复合元素。子文档可使用其被呈现时的自己的模板而非父模板中指定的模板。包括了子文档之后,实际上任何文档现在都可被认为是父和子文档的分层结构。
在文档树中的每一节点处,设计者可选择父或子文档是否通过提供模板来控制布局。令该选择是全部选择或没有选择并不总是合乎需要的。相反,存在用于影响子来自父模板的子文档的布局的通用方法。一种方式是使父模板覆盖子模板的样式表。在典型的报纸之后建模的聚集文档中,通常期望的是改变标题行的样式,使得它们在并排出现时可被容易地区分。父模板可通过向其中将出现报道的元素传递不同的样式表来确保这一点。
用于影响子文档的布局的另一方法是通过参数传递。传递给子模板的参数可在子模板被实例化之前进入子模板的约束系统。参数值可从父模板的约束系统中导出,或可被直接指定。这些传递的约束值可由子文档以任意数量的方式来使用。它们可被包括在对于子模板中的单独元素的先决条件中,或者可由控制元素的位置和大小的其它约束引用。在其它示例中,使用参数来禁止显示非特征化子文档中的大图形,但是在作为特征化任务中的顶层文档或子文档来显示时包括它们。还可使用参数来将子文档内的特征与父页面上或另一子文档中的特征对齐。设计者可类似地指定从子模板的返回值,该返回值可在评估了子模板之后被输入到父模板的约束系统中。
子文档和复合元素的一个特征是它们现在可被独立地分页。子文档的连续页可通过在原地对子文档翻页来访问,或者可被布置在父文档的连续页上。第一种方法可允许用户阅读父文档扉页上的整个子文档化的新闻报道,而不跳转到内部的页。它还可允许索引大于其页面上分配的空间,但是其所有数据仍是可访问的。其它使用可包括,例如,驻留在父文档的单个页面上的多页广告或边栏。
非矩形模板和元素
原始的AGBDL系统和本发明中的模板一般都被定义为具有原点、宽度和高度的矩形。然而,有许多需要非矩形元素的情形。这一功能可通过按z顺序对元素分层而在单个模板中实现,其中较高层元素的部分与它们可能重叠的较低层元素区分开来。元素可按照递减的层顺序来评估。在布置每一元素之前,可从当前元素的GDI区域中减去所有先前布置的元素的GDI区域。如果所完成的元素的区域是通过例如在完成每一元素时将其排列到单个区域中的并运算来累积的,则这可用单个操作来完成。该操作可允许较后元素中的任何文本环绕在其它重叠元素周围,然而图像通常仍被遮挡。然而,元素区域通常不是直接从子模板中的区域中减去的。相反,元素区域的累积的并集可被传递到较低层中的子模板,并且该父区域可作为那些子模板中的累积的区域的种子。以此方式,文本可环绕在较高级模板中的重叠元素周围。
对父区域的减去可通过回流文本来处理重叠子模板的部分困难,但是还期望避免遮挡子文档中的图像或子模板。由此,没有简便的方式来无阻挡地流动图像,因此改为确定一元素是否被遮挡(部分或全部),并且在该元素的目标得分中反映该判定。如果模板的作者选择在完整模板的得分中包括该元素的得分,则如果有没有被遮挡的元素的另一模板可用,则该模板可不予考虑。作为替换或除此之外,可在最佳适合OR组中的一个模板中包括被遮挡的元素的若干位置,在这一情况下,如果有未被遮挡的位置可用,则一般选择该位置。
被遮挡的元素通过将父区域从该元素的GDI区域中区分出来,然后将所得的区域与原始区域进行比较来检测。模板作者可在任何元素上包括指定如果在布置时发生重叠则要应用于该元素的目标得分的罚分的属性。
在另一方面,可采用父区域来提供文档中的进一步的灵活性。父区域可初始化操作系统的应用程序窗口系统修剪区域的顶层模板。这可允许系统将文档文本环绕在桌面上的其它应用程序的重叠窗口周围,并可能将被遮挡的图像移开而不受阻挡。最佳结果可通过轻微地膨胀任何重叠区域以提供任何回流的文本旁边的页边距来获得。
上述过程可允许子文档占据非矩形元素,但这仍无法始终足以产生高质量的布局。例如,在报纸头版上,可能希望将使一照片成为头条报道的主导特征,并且照片和文章其余部分的并集可能未形成方便的矩形。尽管总是可以在元素周围划出一边界矩形,但是通常难以设计能够将大的或不规则区域减去但仍看上去与其预期的那样的模板。这一困难可通过形成若干元素的AND组来更容易地解决,其中所有元素都消耗来自单个复合内容项目或子文档的内容。这可允许在任何任意形状的区域中有效地布置子文档。在报纸页面上的特别报道的示例中,期望一个元素从照片流中消耗,而另一元素消耗别的任何内容。对于这一常见情况,可识别并采用consumeRemainder(消耗其余部分)属性。设计者可将该属性放置在AND组中的元素上,这告诉系统使用该元素中未被该元素的组的其它成员消耗的所有内容。
领域特有的挑战
在本节中,描述了布置内容的聚集所特有的某些困难,以及为处理这些困难而开发的某些技术。
列平衡
当在多列布局中布置多个报道或文章时,可以有关于如何将各报道相对于彼此来排列的许多选项。在两个报道之间划分一页(或一页的一部分)的一种常见的方式是水平地拆分该页,将第二个报道放在第一个报道的底下。当使用这种类型的布局时,必须在对内容分配的列之间均匀地分布内容,使得每一列在相同的垂直位置处结束。
在该实现中,这可通过一简单迭代布局算法来实现,该算法在代表该页上的各列的一组元素(以及AND组)用balanceColumns(平衡列)特性来标记时被触发。以下描述该迭代算法如何用于布置单个报道并尽可能均匀地保持其底部。
首先,使用例如标准贪婪布局方法来布置页面。如果内容完全填满该页面,则平衡了各列,并且该布局可被用作最终结果。否则,测量要平衡的元素中剩下的总的未使用垂直空间。该额外空间的总量可除以列数以给出对平衡结果中每一列将被不足填充的量的初始猜测。接着,可从元素底部减去该垂直不足填充的测量,以产生期望平衡的文本的底部将处的截止位置(cutofflocation)。每一元素的新的底部然后可被设为该计算的截止位置以再次执行布局。如果所有的文本都被消耗并且文本被平衡(最后一列允许被不足填充比列数少一行,并且仍被认为是“平衡的”),则可使用该布局。然而,如果列无法被正确地平衡,则可通过再次执行布局过程来调整该截止位置-如果最后一列过于稀疏,则提高该位置,如果对所有内容没有足够的空间,则降低该位置。该过程可迭代直到收敛到一平衡布局。
最后,可将元素的新底部设为刚好在该元素中布置的任何内容之下。这可防止元素具有基于该迭代所收敛的精确截止值的不可预测的高度。
不可中断段落和原子子文档
对于某些情形,在页边界上中断一段内容可能是没有意义的。例如,当内容仅是一句话概述、跨了2或3行时,较佳的是仅仅将整段内容移至下一页。在类似报纸的扉页的特定情况下,可以有许多用作内页或报纸的其它部分的重点的小框。这些小框的内容通常是如上所述各个报道的简短概述。通常,避免将这些简短概述跨页边界拆分将看上去要好得多。由此,为实现这一点,或者可用意味着“不要跨页或元素边界拆分该段内容”的特性来标记内容组块,或者可用意味着“仅接受可被完整地显示于此的内容项目”的另一特性来标记元素。所讨论的内容可以是单独的段落,或是包含多个数据流的复合项目,它有可能代表了照片以及文字说明或边栏。
交互性
电子文档不必限于模仿纸质文档。自动适应到不同屏幕尺寸是纸质文档不能完成的某件事情,但是甚至在固定了显示器大小之后,文档也不需要采用纸质文档的所有特性。例如,内容订阅者长期以来以变得习惯于使用在线文档中的超链接,但是读者还有其它方式能与电子文档进行交互。
作为交互性的一部分,可在文档中支持超链接,并且链接的目标可以是其它文档。这包括本机文档以及可如在以上“文档表示”一节中描述的在加载时被转换的文档。超链接除了目标内容的路径或URL之外,还可包含对XSLT转换或另一助手程序的引用。超链接还可引用不可读的URL,在这一情况下,可启用一web浏览器以在激活该链接时显示内容。最后,超链接还可指向文档内部的内容,在这一情况下可显示包含该引用的页面。
当激活复合文档(例如,包含子文档的文档)中的超链接时,有若干可能的行为。如果该链接在顶层文档中,则可用所引用的文档来替换整个文档。如果该链接在子文档中,则可能期望仅用引用的文档替换该子文档。这通常是系统的默认行为,但是设计者可将任何子文档元素指定为“launcher(启动器)”元素,这可导致该元素中的激活的链接改为替换顶层文档或另一指示的子文档。该特征对于实现索引或目录的子文档可能是有用的。作者通过在任何元素或位置节点中将“launcher”属性设为真来使一元素成为启动器。启动器元素可方便链接的文档替换顶层文档,除非在该元素上还设置了“target(目标)”属性。“target”属性可被设为模板中的另一元素的名称,并且链接的文档接着可替换当前显示在该命名元素中的子文档。
激活链接的另一种方式是将该链接拖放到页面上的子文档元素中。在像例如报纸这样的包含多个子文档的集合的页面上,用户由此可将一报道从索引中拖出,并将其放到页面上的报道位置之一中。
结果
已经描述了展示本发明的范围和能力的多个文档/应用程序。应用程序包括在线杂志Slate的自适应版本,它是从纽约时报RSS源中取得报道、从其网站上刮取全部内容、并以宽幅报纸的格式显示报道的新闻阅读器;以及用于因特网新闻聚集器MSN NewsBot的前端,它通过因特网作出数据库请求以检索来自数千个web源的当前头条新闻更新,并可用作自适应扉页网关来聚集各个自适应子文档。其它实现可包括,例如以高质量的自适应显示呈现搜索结果的MSN Search前端。
Slate杂志实现演示是使用AGBDL模板系统来构建的。它需要74个模板来实现覆盖1到3列布局的页面。纽约时报演示使用了该新模板系统,并实现了1到6列的布局,但是仅需要5个模板。这5个模板中的每一个都是大约为Slate演示产生的模板的大小的四分之一。
现在参考图1,描绘了帮助自适应可在多个尺寸和维度下显示的具有各种各样的内容的文档布局的系统100。一般而言,系统100可包括接收模板104的界面102。模板104可以是对文档布局的约束的高级描述。布局引擎106可解释模板104,并基于模板104的高级约束确定要将内容108放置在文档内的何处以产生高质量的文档110。
如上所述,高质量文档是其中所显示的输出被认为在给定显示器尺寸和内容时看上去良好的文档。关于所显示的输出是否看上去良好的判定可基于总体视觉效果以及以下参考图3和6更详细讨论的其它属性。因此,布局引擎106在创建高质量布局110之前通常需要要排列的内容的类型以及排列的显示尺寸的先验知识。然而,可以理解,模板104无需具有该先验知识,并且通常在创建模板104时或在布局引擎106接收模板104时没有关于内容类型或显示尺寸的先验知识。
现在转向图2,示出了一般包括用户界面202、模板104和模板存储204的系统200。用户界面202可方便诸如模板104等模板的创建、设计和/或修改。类似地,模板存储204可储存诸如模板104等模板。可以理解,用户界面202或者可以是基于文本的,或者可以是可用来经由高级约束参数构造模板104并经由例如模板存储204提供对模板104的存储的图形用户界面(GUI)。应当理解,尽管在图2中仅描绘了单个模板104,但是界面102可用于创建、设计和/或修改任意数目的模板104。类似地,模板存储204可储存可由用户界面202检索以便被修改和/或提供给例如布局引擎106(图1)或分页器602(图6)的多个模板104。
模板104可包括多个参数,诸如布局的屏幕元素的定义(例如,描述元素以及提供这些元素可用于什么类型的内容的高级构造),以及可控制如何将元素相对于彼此来排列的约束系统(例如,如上所述的上方和下方命令)。因此,模板104提供可用于指定布局的许多不同方面的高级语言。并且,该高级语言可以是更中立的描述语言,它易于创作,同时能够用更少的语句来表达更宽泛的概念。另外,该高级语言可如以下对于图5更详细描述地被转换成低级描述。
现在参考图3,描绘了一般包括能够产生高质量布局110的布局引擎106的系统300。如上所述,布局引擎106可接收提供在创建高质量布局110时要遵循的高级约束的模版(未示出)。然而,布局引擎106必须实际排列内容108,使得排列遵循模板的覆盖约束以及使得输出是高质量布局110所必需的条件。
通常,布局引擎106在确定如何排列内容108之前将检查内容108的一个类型和/或多个类型以及用于高质量布局110的显示尺寸。在某些情况下(例如,取决于内容类型或其它因素),布局引擎106可采用诸如语义流302、品牌识别304、项目和文本相关306以及广告主题308等其它考虑事项。在某些情况下,除非考虑了语义流302、品牌识别304、项目和文本相关306和广告主题308中的至少一个,否则布局将不是高质量布局110。
语义流302一般指的是单词的实际含义,并且因此通常依赖于单词相对于其它单词的含义。因此,某些内容108元素或类型,诸如报纸标题行,具有强语义理论基础,用于将单词保持在一起以防止歧义,即使将这些单词拆分以将单词排列在不同的位置中也是如此,这可提供对布局排列的更简单解决方案。
例如,可以存在有效语义流302理论基础以避免紧接在否定前缀或单词之后放置一断行符。
布局引擎106在生成高质量布局110时还可考虑品牌识别304。例如,内容108可以是由以组织良好的模式重叠的两个相关图像构成的商标,或要求其它内容108起完全说明作用的品牌(例如,包括图形漩涡、文本“Intel Inside”和四个音频音调的公知的英特尔商标)。如果每一图像和/或其它内容未被正确排列,则该布局可能会丢失具有设计编辑器的其它媒体设计本来能实现的某些效果和/或含义。
另外,布局引擎106在创建高质量布局110时还可考虑项目和文本相关。例如,报纸一般提供了描述项目的小文字说明。同样,图像(例如,项目)可具有指示图片中的特征或由照片中的人物说出的文字的标注。在这些情况下,重要的是考虑某些文本相对于一项目的位置。
类似地,布局引擎106在产生高质量布局110时可考虑广告主题308。广告主题308可依赖于以上关于项目302-206给出的若干示例中的任一个,并且出于类似的原因可需要布局引擎106的附加分析。然而,可以理解,广告主题308可需要否则可能与其它考虑冲突的条件。还可以理解,以上示例仅是说明性的,并且决不旨在限制。可采用其它应用程序而不背离本发明的精神和范围。
简要地参考图4,示出了帮助自适应可在多个尺寸和维度下显示的具有各种各样内容的文档布局的系统400。系统400一般包括布局引擎106、内容108、高质量布局110和输出设备402。输出设备402可以实际上是能够显示数字内容的任何设备,从微型腕式显示器、便携式手持设备、数字光纤、工作站、墙面安装显示器到甚至用于路边广告牌和建筑物的非常大型的显示器。通常,布局引擎106将基于输出设备402来确定高质量布局110的尺寸和维度。
现在转向图5,描绘了一般包括模板104、布局引擎106、内容108、高质量布局110和低级引擎502的系统500。低级引擎502可基于低级约束将内容108应用于自适应基于网格的布局。然而,低级引擎502没有接受高级模板104的能力,但是如果提供了足够的细节和抽象(例如,由布局引擎106),则低级引擎可产生高质量布局110。低级引擎502在以下AGBDL系统中详细描述。如上所述,布局引擎106可基于模板104中提供的高级约束(以及基于附加条件(如果有))来确定如何排列内容108,以便于产生高质量布局110。一旦已知了将产生高质量布局110的确切布局,布局引擎106还可将该信息转换成低级约束,使得低级引擎502可产生高质量布局110。
图6示出了帮助自适应可在多个尺寸和维度下显示的具有各种各样内容的文档布局的系统600。系统600一般包括界面102、模板104、布局引擎106、内容108、高质量布局110和分页器602。分页器602在以下AGBDL一节中详细描述;然而,在这一上下文中,分页器602为布局引擎106提供一抽象级别。例如,分页器602接收内容608,并且还与界面102通信以选择将用于给定内容108的模板104。可以理解,分页器602可替换地直接从例如图2的模板存储202中检索模板104。布局引擎106接收模板104和内容108,并排列内容108以产生高质量布局110。本质上,分页器602可确定对每一文档和/或文档的每一页使用哪一模板104,并且布局引擎106可确定如何以与高质量布局110相一致的方式来排列实际内容108。
现在转向图7,示出了用于产生高质量布局110的系统700。一般而言,系统700包括接收内容108的布局引擎106。根据一个示例性实施例,内容108可以是完全不同的类型,并且是从多个源聚集的。例如,内容108可以从诸如数据存储等内容存储702;诸如来自硬件设备的流媒体704;web内容706等中检索,该web内容可以是各种各样的内容类型。因此,由于内容108可以从各种源提供,因此可想像内容108的源格式将显著变化。因此,布局引擎106可接收以源格式708格式化的内容108,并可将源格式转换成布局引擎106可用于产生高质量布局110的格式。按照例如XLST的源格式708以及转换可以如上所述地自动执行。
图8示出了根据所要求保护的主题的方法800。尽管出于解释简明的目的,该方法被示出并描述为一系列动作,但是可以理解和明白,所要求保护的主题不受动作次序的限制,因为某些动作可以按不同的次序和/或与此处示出并描述的其它动作同时发生。例如,本领域的技术人员可以理解和明白,方法可被替换地表示为诸如状态图中的一系列相互关连的状态或事件。此外,并非所有示出的动作都是实现根据所要求保护的主题的方法所必需的。另外,还应当理解,以下以及贯穿本说明书公开的方法能够被储存在一制品上以便于将该方法运输并传送到计算机。如此处所使用的术语制品旨在包含可从任何计算机可读设备、载波或媒体访问的计算机程序。
现在参考图8,示出了用于排列内容以创建高质量布局的示例性计算机实现的方法800。在802处,可选择用于文档布局的模板。通常,该模板是以高级语言来定义的,并且可由界面、分页器和布局引擎之一从模板存储中选择。在804处,可确定用于该文档的显示大小。可以理解,该判定可基于输出设备和/或其中的区域的屏幕大小来作出。在806处,可接收用于该文档的内容。如上所述,内容可以来自诸如内容存储、流媒体、因特网等各种各样的源,并且可按与高质量布局的格式相一致的各种各样格式存在,且因此需要适当的转换。
在808处,可通过采用例如由模板提供的高级约束以及用于最终的高质量布局的显示大小来确定用于特定内容的可用位置。可以理解,对特定内容可存在许多可用位置。在801处,可从在808处确定的可用位置中选择一高质量位置。如上所述,高质量位置是其中可引入特定内容同时维持总体布局的高质量特性的位置。可以理解,选择高质量位置可以依赖于众多准则。例如,高质量位置可基于诸如最佳适合、第一适合、第一良好适合等一系列算法中的至少一种来确定。这一判定也可依赖于诸如语义流、品牌识别、项目和文本相关、广告主题等其它条件。在步骤812处,可创建高质量布局。
AGBDL系统
图9显示了根据所要求保护的主题的一个示例性实施例的自适应基于网格的文档布局环境900的框图表示。该自适应基于网格的文档布局环境900包括自适应基于网格的文档系统902、样式表存储单元906、以及模板存储单元908。自适应基于网格的文档布局环境900由类似于以下参考图10更完整描述的公知的计算系统、环境和/或配置中找到的那些硬件和软件组件来支持。自适应基于网格的文档系统902包括分页器602、低级引擎502、模板创作工具910和用户界面912。
样式表存储单元906经由低级引擎502通信上连接到自适应基于网格的文档系统902。样式表存储单元906储存用于指定文档内容904内的文本的样式的样式表数据。样式表存储单元906包括能够储存和检索数据的存储器设备,包括但不限于,随机存取存储器(RAM)、闪存、磁存储器设备、光存储器设备、硬盘驱动器、可移动易失性或非易失性存储器、光存储介质、磁存储介质、或RAM存储卡。或者,样式表存储单元906可以包括可通过有线和/或无线网络系统访问的远程存储设施。另外,样式表存储单元906如上所述可包括包含主和辅存储器设备的多级系统的存储器系统。主存储器设备和辅存储器设备可作为彼此的高速缓存来操作,或者辅存储器设备可用作主存储器设备的备份。在又一安排中,样式表存储单元906可包括使用诸如SQL等查询语言被配置为简单数据库文件或可搜索的关系型数据库的存储器设备。
模板存储单元908经由分页器902和模板创作工具910通信上连接到自适应基于网格的文档系统902。模板存储单元908储存多个模板1106,其中每一模板1106可用于定义文档内容904的单个页面的布局。文档内容的布局可包括根据一个或多个模板1106布置的页面。模板存储单元908包括类似于以上参考样式表存储单元906所描述的存储器设备的存储器设备。
分页器602通信上连接到低级引擎502和模板存储单元908。分页器602用适用于执行如此处所描述的任务并提供此处所描述的能力和功能的硬件和软件(见图10)来配置。另外,分页器602可接收文档内容904,以供处理成自适应基于网格的布局。文档内容904可由标识各种内容类型的各种各样内容流1303来表示,这些内容类型诸如但不限于,正文文本、图像、内嵌图、边栏、文字说明、媒体、以及其它适当的文档内容904。一般而言,分页器602确定文档内容904到单独模板1106的映射,该映射可包括但不限于,文档内容904与模板1106的全局最优配对。
低级引擎502通信上连接到分页器602和样式表存储单元906。低级引擎502用适用于执行此处所描述的任务并提供此处所描述的能力和功能的硬件和软件(见图10)来配置。低级引擎502可从分页器602接收文档内容904和模板1106以供处理。通常,低级引擎502通过使用模板1106来自动格式化文档内容904(例如,将模板1106应用于文档内容904),并由此创建自适应基于网格的文档914。另外,低级引擎502可用于为通过向文档内容904应用模板1106而创建的自适应基于网格的文档914的每一部分(例如,每一页)确定一质量得分。
在操作中,自适应基于网格的文档系统902经由分页器602接收要处理的文档内容904和来自模板存储单元908的模板1106。分页器602将文档内容904和模板1106提供给低级引擎502用于呈现实际页面布局。在所要求保护的主题的一替换实施例中,低级引擎502通信上耦合到模板存储单元908,并且因此,低级引擎502直接从模板存储单元908接收模板1106。低级引擎502将来自样式表存储单元906的样式表和模板1106应用于文档内容904,并基于结果确定质量得分。低级引擎502向分页器602提供所有有效模板1106序列(例如,成功并完全地将文档内容904自适应到基于网格的文档布局的所有模板1106序列)及其相应的质量得分。分页器602基于由低级引擎502提供的质量得分来计算某些需要的模板1106序列或全局地最优的模板1106序列。在确定了内容与模板1106序列的配对之后,分页器602将文档内容109和最优模板1106序列提供给低级引擎502。低级引擎502根据最优模板1106序列来自动格式化文档内容904。所得的自适应基于网格的文档914然后由自适应基于网格的文档系统902提供给适当的目的地(例如,向用户显示、提供给另一程序模块、或保存到文件)。
模板创作工具910通信上连接到模板存储单元908和用户界面912。模板创作工具910应适用于执行此处所描述的任务并提供此处所描述的能力和功能的硬件和软件(见图10)来配置。用户界面912向用户提供用于创建或修改模板存储单元908内的模板1106的一组窗口、图标、命令和/或菜单。通过使用模板创作工具910和用户界面912,用户可绘制并排列布局元素、指定元素如何自适应到不同页面大小、交互地预览自适应、以及设置模板1106先决条件1109和基于约束的关系1115。
在操作中,用户界面912呈现可被交互地调整大小的模板1106的示意性表示。在模板1106内创建新布局元素1112一般要求用户在用户界面912显示上绘制一区域,然后将该区域处理成所需大小、位置和层。为维持自适应模板1106的完整性,模板1106的大多数元素1112都需要基于约束的关系1115。
当创建或编辑模板时,用户可通过定义页面网格来指定页级约束,这可通过绘制水平或垂直辅助线,然后使用抓取-拖曳界面相对于网格约束各元素来完成。水平或垂直辅助线可被设计成相对于页面按比例缩放,或维持一恒定偏移量。辅助线也可依赖于其它辅助线,从而允许用户定义一分层网格。具体地,用户界面912支持不同类型的用户操作,包括但不限于:(1)如果用户添加一新的辅助线而没有首先选择任何其它辅助线,则该新的辅助线的位置相对于整个页面来定义;(2)如果用户在创建新的辅助线之前选择了单条现有的辅助线,则该新的辅助线位置被定义为离所选辅助线的恒定偏移量;以及(3)如果用户在创建新的辅助线之前选择两条现有的辅助线,则该新辅助线的位置相对于两条选中的辅助线来定义。用户界面912还可提供允许用户在不使用辅助线的情况下直接在元素之间指定约束的用户操作。例如,但非限制,用户可约束一个元素的底部与另一元素的顶部重合。为解决元素的大小由流入该元素的内容(而非仅仅是页面的几何形状)来确定的情况,用户可利用模板创作工具910来约束元素的维度之一,然后指定其它维度从文档内容904中确定。
在创建了自定义模板1106之后,用户可基于约束系统中的任何变量的值来指定附加的先决条件。模板1106对于文档内容904的适用性取决于对先决条件和评分函数的使用。一旦用户设置了模板1106的元素1112的内容源,就可自动计算用于模板1106的内容先决条件。另外,用户可向元素1112添加影响页面模板1106对给定的文档内容904选集所接收的质量得分的属性偏好。当用户指定元素1112的多于一个属性时,用户可经由用户界面912按照重要性次序对属性排序。
模板创作工具910然后可自动构造一评分函数,低级引擎502对于可能被流入该元素的文档内容904的不同选择对该函数求值。给定用户指定的按照重要性次序的属性排序,模板创作工具910可将每一属性与得分中的一位数相关联,其中较高位数对应于较重要的属性。当低级引擎502评估了内容选集之后,可通过将“1”与所有匹配属性相关联,并将“0”与所有非匹配属性相关联来计算得分。更具体地,如果“a1”到“aN”是N个用户指定的按照重要性次序的属性偏好,则由创作系统如下构造评分函数:S=match(a1,b1)*(10^(N-1))+match(a2,b2)*(10^(N-2))…+match(aN,bN)*(10^0),其中S是所评估的特定内容选集的质量得分,b1到bN是与该内容选集相关联的实际属性值,而match(a,b)是当“a”等于“b”时返回“1”,否则返回“0”的函数。由此,该评分函数取决于内容与用户指定的属性匹配有多好来返回较佳或较差得分。该评分函数确保较重要的属性相对于较不重要的属性被给予严格的优先级。例如,但非限制,匹配特定属性“A”的内容选集得到比不匹配属性“A”但可能匹配较不重要的属性的其它内容选集更好的得分。
本领域的技术人员将认识到,该评分函数可以用各种方式来实现。例如,但非限制,元素的每一属性都可以与最终得分中的一位数相关联。属性的重要性确定了其相对应的位,其中最重要的属性与最高有效位相关联。因此,作为第k个最重要属性的属性将与最终得分中的第k个最高有效位相对应。对于一特定内容选集,该评分函数可将“1”与对应于匹配属性的位相关联,并将“0”与对应于非匹配属性的位相关联。因此,评分函数确保匹配最重要属性的一段内容具有比不匹配该最重要属性的任何其它内容选集更高(即,更好)的得分。
布局样式1103内的不同模板1106通常包括共同的特性(例如,元素、先决条件以及约束)。因此,模板创作工具910可支持模板1106继承的系统或模型,该系统或模型简化了跨若干模板1106的共同特性的修改,而无需实际单独改变每一模板1106。例如,但非限制,用户可创建继承预先存在的模板1106(例如,父模板1106)的特性的新模板1106(例如,子模板1106)。子模板1106自动包括父模板1106的所有元素、先决条件和约束。接着,用户可向子模板1106添加附加元素、先决条件和约束,以创建所需的自定义模板1106。如果用户希望改变父和子模板1106之间共同的特性之一,则用户只需修改父模板1106的该特性,因为该修改将经由继承传播到父模板1106的所有子模板1106。该继承模型简化了对大量模板1106的管理,并且有助于维持模板1106之间的一致性。
本领域的技术人员将认识到,通信上连接可包括任何适当类型的连接,包括但不限于,模拟、数字、无线和有线通信信道。这一通信信道包括但不限于,铜线、光纤、射频、红外、卫星或其它媒体。
图10显示了根据所要求保护的主题的一个示例性实施例其可利用的计算环境1000及其计算机系统1010、1080的框图表示。计算环境1000及其计算机系统1010、1080仅代表用于实施所要求保护的主题的合适的计算环境和计算机系统的一个示例,并非对本发明的使用范围或功能提出任何局限。也不应将计算机系统1010、1080解释为对示例性计算环境1000中示出的任一组件或其组合具有任何依赖或需求。
因此,应当理解,本发明可以使用众多其它通用或专用计算系统环境或配置来操作。适用于所要求保护的主题的众所周知的计算系统、环境和/或配置的示例包括但不限于,个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络个人计算机、小型机、大型计算机机、包括任一上述系统或设备的分布式计算环境等等。
所要求保护的主题的各方面也可在诸如程序模块等由计算机执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等等。本发明的各特征也可以在其中任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实践。在分布式计算环境中,程序模块可以位于包括但不限于存储器存储设备的本地和远程计算机存储介质中。
参考图10,所要求保护的主题的示例性计算环境1000包括计算机系统1010形式的通用计算设备。计算机系统1010的组件可包括但不限于,处理单元1020、系统存储器1030以及将包括系统存储器1030的各类系统组件耦合至处理单元1020以进行双向数据和/或指令通信的系统总线1021。系统总线1021可以是若干种总线结构的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的任一种的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、以及外围部件互连(PCI)总线(即,也称为“夹层(Mezzanine)总线”)。
计算机系统1010通常包括各种计算机可读介质。计算机可读介质可以是可由计算机系统1010访问、从其中读取或写入其中的任一可用介质,并且可包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据、数据结构、程序模块、程序、编程或例程等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机系统1010访问的任一其它介质。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据、数据结构、程序模块、程序、编程或例程,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。
系统存储器1030包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)1031和随机存取存储器(RAM)1032。基本输入/输出系统1033(BIOS)包括如在启动时帮助在计算机1010内的元件之间传输信息的基本例程,它通常储存在ROM 1031中。RAM 1032通常包含存储单元1020立即可访问和/或当前正在操作的数据和/或程序指令。作为示例而非局限,图10示出了操作系统1034、应用程序1035、其它程序模块1036和程序数据1037,它们有时可全部或部分地驻留在RAM 1032中。
计算机1010也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图10示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器1041,对可移动、非易失性磁盘1052进行读写的磁盘驱动器1051,以及对可移动、非易失性光盘1056,如CD ROM或其它光介质进行读写的光盘驱动器1055。可以包括在示例性计算环境1000中的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器1041通常通过不可移动存储器接口,如接口1040连接到系统总线1021,磁盘驱动器1051和光盘驱动器1055通常通过可移动存储器接口,如接口1050连接到系统总线1021。
上文描述并在图10中示出的驱动器1041、1051、1055及其关联的计算机存储介质为计算机系统1010提供了计算机可读指令、数据、数据结构、程序模块、程序、编程或例程的存储。例如,在图10中,示出硬盘驱动器1041储存操作系统1044、应用程序1045、其它程序模块1046和程序数据1047。注意,这些组件可以与操作系统1034、应用程序1035、其它程序模块1036和程序数据1037相同,也可以与它们不同。这里对操作系统1044、应用程序1045、其它程序模块1046和程序数据1047给予不同的标号来说明至少它们是操作系统1034、应用程序1035、其它程序模块1036和程序数据1037的不同副本。用户可以通过连接的输入设备,如键盘1062和定位设备1061(通常指鼠标、跟踪球或触摸垫)向计算机系统1010输入命令和信息。其它连接的输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线1021的用户输入接口1060连接至处理单元1020,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器1091或其它类型的显示设备也通过接口,如视频接口1090连接至系统总线1021。除监视器1091之外,计算机系统1010也可包括其它外围输出设备,如扬声器1097和打印机1096,它们通过输出外围接口1095连接。
计算机系统1010可以使用到一个或多个远程计算机,如远程计算机1080的双向通信连接链路在网络化环境中操作。远程计算机1080可以是个人计算机、膝上型计算机、服务器计算机、路由器、网络PC、对等设备或其它常见的网络节点,并通常包括许多或所有相对于计算机系统1010所描述的元件,尽管在图10中仅示出了远程计算机系统1080的存储器存储设备1081。图10描述的双向通信连接链路包括局域网(LAN)1071和广域网(WAN)1073,但也可包括其它网络。这类网络常见于办公室、企业范围计算机网络、内联网以及因特网。
当通信上连接到LAN 1071时,计算机系统1010通过网络接口或适配器1070连接至LAN 1071。当通信上连接到WAN 1073时,计算机系统1010通常包括调制解调器1072或用于通过WAN 1073,如因特网建立通信链路的其它装置。调制解调器1072可以是内置或外置的,它可以通过用户输入接口1060或其它适当的机制连接至系统总线1021。在网络化环境中,相对于计算机系统1010所描述的程序模块或其部分可储存在远程存储器存储设备1081中。作为示例而非局限,图10示出远程应用程序1085驻留在存储器设备1081上。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立双向通信链路的其它手段。
图11显示了根据所要求保护的主题的一个示例性实施例的、包括自适应布局样式1103和模板1106的文档布局的框图表示。文档内容904通过使用储存在模板存储单元908中的模板1106(例如,此处有时称为“自适应模板1106”)而被格式化成一特定文档布局。每一模板1106负责为跨各种页面尺寸的内容的单个页面定义布局。在所要求保护的主题的该示例性实施例中,模板1106支持一协议,由此如果替换文档内容(例如,图像或最优绘图的较宽版本)改进了文档的总体页面布局,则可自动选择该替换文档内容。并且,每一模板1106被设计成自适应到各种显示尺寸,以及诸如字体大小增加等其它类型的查看条件。
每一模板1106还可包括布局元素1112、基于约束的关系1115和先决条件1109。布局元素1112表示其中可放置内容的模板1106的页面内的一特定区域。模板1106的基于约束的关系1115帮助定义元素1112之间的关系。模板1106的先决条件1109表征了模板1106对于文档的特定内容或页面的特性的适合性。布局元素1112、基于约束的关系1115和先决条件1109将在以下参考图12来更完整描述。
在所要求保护的主题的一个实施例中,使用一组模板1106来描述文档布局。当将文档内容904应用于模板1106时,以最优格式产生自适应基于网格的文档914。例如,本系统可支持各种各样的现代的、基于网格的布局样式,诸如用于纽约时报、纽约人、华盛顿邮报、新闻周刊或时代杂志的设计。每一布局样式1103(例如,此处有时称为“自适应布局样式1103”)是由实现特定布局样式1103的特定特性的模板1106的集合来定义的。
如图11所示,自适应布局样式1103A由一组模板1106A1、1106AN来表示。自适应模板“A1”1106A1和自适应模板“AN”1106AN之间的省略号示出自适应布局样式“A”1103A中可存在多个自适应模板1106,并且因此,自适应布局样式“A”1103A不限于如图11所示的两个自适应模板1106A1、1106AN。类似地,自适应模板“Z1”1106Z1和自适应模板“ZN”1106ZN之间的省略号示出自适应布局样式“Z”1103A中可存在多个自适应模板1106,并且因此不限于图11所示的两个模板1106Z1、1106ZN。另外,一个自适应布局样式1103A可包括与另一自适应布局样式1103Z不同数目的自适应模板1106。
自适应布局样式1103被储存在模板存储单元908中。每一自适应布局1103标识与其相关联的一组模板1106。自适应布局样式“A”1103A和自适应布局样式“Z”1103Z之间的省略号示出模板存储单元908内可存在多个自适应布局样式1103,并且因此不限于图11所示的两个自适应布局样式1103A、1103Z。例如,但非限制,自适应布局样式1103和自适应模板1106在所要求保护的主题中可以用XML来表示。
图12显示了根据所要求保护的主题的一个示例性实施例的自适应模板1106的框图表示。模板存储单元908内的每一自适应模板1106可以包括布局元素1112、用于定义元素1112之间的关系的基于约束的关系1115、以及表征模板1106对于文档的特定内容的适用性的先决条件1109。
布局元素1112表示模板1106的页面内可放置内容的特定区域。通常,基于网格的文档布局内的元素1112是模板1106页面的矩形区域。每一布局元素1112包括指定源流变量1209、元素z顺序放置变量1212、以及布局模板变量1215。指定源流变量1209指定了在元素1112内可使用哪一内容。例如,但非限制,指定源流变量1209可指定在模板1106的元素1112内仅放置图像。在所要求保护的主题的一替换实施例中,多个元素1112使用来自同一内容流1303(以下参考图13描述)的内容。在这一安排中,建立一流程,并且将内容流1303的内容从一个元素1112A1分发到下一元素1112A2。
元素1112的元素z顺序放置变量1212允许每一元素1112指定其按元素1112z顺序的位置。一般而言,z顺序较高的元素1112在文档布局内位于较低元素1112之上,因此从下方的元素1112的面积区域中减去较高元素1112的面积区域。实际上,元素z顺序放置变量1212允许基于网格的页面设计具有重叠的元素1112,或显现为切除了其它元素1112的区域的区域。例如,文档布局内的文本可环绕在图周围。图的z顺序比文本的z顺序高,因此,图看上去切除了为文本保留的某些区域。将文本环绕在图或图像周围是在基于网格的文档布局内使用的技术。
布局模板变量1215允许每一元素1112指定可用于布局内容原子的布局模板1106(或布局模板1106的集合)。内容原子包括由多个内容流1303(例如,文本、图或图像)组成的内容项目1306。更具体地,内容原子包括包含一个或多个元素1112的内容或一种或多种内容类型的内容流1303的逻辑分组,所有这些都被认为是某一父内容项目1306中的单个项目。例如,但非限制,元素1112可表示包括文本、图和图像的边栏。通过布局模板变量1215,模板1106可支持完全递归布局,并且因此可支持从图/文字说明组合到内容的递归嵌入的每样东西。
模板1106的基于约束的关系1115(例如,此处有时称为“约束1115”)可用于至少部分地定义元素1112之间的关系。模板1106中的每一元素1112的大小和放置是通过评估一组相互依赖的基于约束的关系1115来确定的,当将这些关系一起考虑时,它们形成一有向无环图。基于约束的关系1115包括约束输入变量1218和约束输出变量1221,其值由依据其它约束变量1218、1221的数学表达式来确定。另外,基于约束的关系1115包括约束内部变量1224,其值可在为约束输出变量1221计算值时使用。本领域的技术人员将认识到,这一类型的配置被称为“单向约束系统”。在所要求保护的主题的示例性实施例中,每一模板1106将布局元素1112之间的二维关系编码为必须被解析以评估特定布局的约束1115。
约束输入变量1218就其中将使用模板1106的上下文来指示模板1106。例如,但非限制,约束输入变量1218可指示模板1106或模板1106内的元素1102的宽度和高度尺寸。另外,约束输入变量1218可包括关于文档内容的自定义属性(例如,由用户通过模板创作工具910定义的属性)。在所要求保护的主题的各方面,约束系统(未示出)可由可被用作约束输入变量1218和约束输出变量1221的约束池来表示。当文档内容904内存在自定义属性时,可将该自定义属性作为约束系统内的附加变量来添加。约束输出变量1221表示各种文档输出属性,包括但不限于,每一元素1112的矩形边界以及允许模板1106按照要插入在模板1106内的内容来表达其适合度的模板1106的得分(以下参考图10更详细描述)。
模板1106的先决条件1109至少部分地表征模板1106对于文档的特定内容的适用性。每一模板1106使用先决条件1109来表达当应用于文档内容时模板1106何时有效。例如,如果模板1106可被成功地应用于文档内容,则模板1106可以是有效的。本领域的技术人员将认识到,可使用不同的先决条件来确定哪些模板1106是有效的而哪些模板1106是无效的。自适应基于网格的文档布局系统902在分页(以下参考图19详细描述)期间使用先决条件1109。先决条件1109可包括一个或多个内容先决条件变量1203和/或一个或多个值先决条件变量1206。内容先决条件变量1203指示给定内容流1303中必须存在以充分地填满模板1106或模板1106内的元素1112的内容的量。值先决条件变量1206指示给定约束变量1218、1221必须落在其间的值范围。例如,但非限制,内容先决条件变量1203和值先决条件变量1206可指示如果文档内容刚好包含可用于显示的两张图并且如果文档内容的页面尺寸落在标准信件和A4页面尺寸之间的某一处,则特定模板1106是有效的。
图13显示了根据所要求保护的主题的一个示例性实施例的包括内容流1303的文档内容904的框图表示。文档内容904在本发明内被表示为一组单独的内容流1303,其每一个都包含可被顺序地布置的内容。内容流1303表示文档的不同的、逻辑上独立的部分,包括但不限于,正文文本、边栏、图、引述(pull quote)以及照片字幕(photo credit)。内容流1303包括将在以下参考图14更完整描述的内容项目1306。如由省略号所示的,文档内容904不限于图13所示的多个内容流1303A、1303B、1303Z。类似地,省略号示出内容流1303A不限于图13所示的多个内容项目1306A1、1306A2、1306AN。
图14显示了根据所要求保护的主题的一个示例性实施例的包括内容项目1306的内容流1303的框图表示。如上参考图13所述的,内容流1303包括内容项目1306。内容项目1306包括但不限于,文本、图像、音频、视频和其它适当的内容类型。每一内容项目1306与标准标记(例如,XML)相关联以指示结构。除了标准标记之外,每一内容项目1306可以用更改低级引擎502和模板1106处理内容项目1306的方式的自定义属性1409来注释。例如,但非限制,表示图像的内容项目1306可具有表示该图像在文档布局中的重要性的属性1409。因此,利用模板1106内的内容项目1306的低级引擎502可检查属性1409的值以确定使该图像在最终布局中有多大。属性“A1A”1409A1A和属性“A1Z”1409A1Z之间的省略号示出在内容项目“A1”1306A1内可存在多个属性1409,并且因此内容项目“A1”1306A1不限于图14所示的两个属性1409A1A、1409A1Z。类似地,属性“ANA”1409ANA和属性“ANZ”1409ANZ之间的省略号示出内容项目“AN”1306AN内可存在多个属性1409,并且因此内容流“AN”1306AN不限于图14所示的两个属性1409ANA、1409ANZ。
在所要求保护的主题的示例性实施例中,文本内容项目1306A1可包括指定文档内容904内的文本的样式的样式标识符1412A1A、1412A1Z。样式标识符1412通常由诸如但不限于层叠样式表(CSS)或可扩展样式语言(XSL)等样式表语言来表示。本领域的技术人员将认识到,样式表语言允许用户定义不同文本元素将如何在文档内显现(例如,字体、字体样式和字体大小)。因此,样式标识符1412可以与单独的样式表文件中的格式化规则相关联,该文件被储存在样式表存储单元906中。样式标识符“A1A”1412A1A和样式标识符“A1Z”1412A1Z之间的省略号示出内容项目“A1”1306A1内可存在多个样式标识符1412,并且因此,内容项目“A1”1306A1不限于图14所示的两个样式标识符1412A1A、1412A1Z。类似地,样式标识符“ANA”1412ANA和样式标识符“ANZ”1412ANZ之间的省略号指示内容项目“AN”1306AN内可存在多个样式标识符1412,并且因此,内容项目“AN”1306AN不限于图14所示的两个样式标识符1412ANA、1412ANZ。
内容项目1306也可被编码为包括任何内容片段的多个版本1306A2A、1306A2B、1306A2Z。不同内容项目版本1306A2A、1306A2B、1306A2Z中的每一个被包装在<multi>(多)标签1406内。在文档布局期间,自适应基于网格的文档布局系统902选择这些版本之一以在用模板1106格式化页面时使用。为帮助自适应基于网格的文档布局系统902,不同内容项目版本1306A2A、1306A2B、1306A2Z中的每一个可包括建议对每一特定内容项目版本1306A2A、1306A2B、1306A2Z的最适当使用的属性1409。例如,但非限制,内容项目“A2”的第一版本1306A2A可指示内容项目的第一版本1306A2A最佳地在“概述”部分中使用,而内容项目“A2”的第二版本1306A2B可指示内容项目的第二版本1306A2B最佳地在边栏中使用。模板1106可基于模板1106预期如何格式化文档内容来选择适当的内容项目版本1306A2A、1306A2B、1306A2Z。如果不存在任何属性1409来定义内容项目1306的不同版本,则自适应基于网格的文档布局系统902可自由选择对当前页面或文档的格式起最佳作用的版本。内容项目“A2”的第二版本1306A2B和内容项目“A2”的第n个版本1306A2Z之间的省略号示出<multi>标签1306内可存在多个内容项目1306版本,并且因此,<multi>标签1406不限于图14所示的三个内容项目版本1306A2A、1306A2B、1306A2Z。
内容流1303A3A、1303A3B、1303A3Z也可在父内容项目1306A3内使用<atom>(原子)标签来分层地嵌套,该标签将内容流1303A3A、1303A3B、1303A3Z的集合分组在一起作为父内容项目1306A3内的内容原子。内容流1303A3A、1303A3B、1303A3Z的集合然后作为单个内容项目1306A3来对待。诸如边栏等文档元素固有地由多个文档元素(例如,文本、图、文字说明以及页脚)来表示。<atom>标签允许为文档布局的目的将多个内容流1303作为一个单一的内容项目来对待。例如,但非限制,<atom>标签可对父“边栏”内容项目1306内的“标题”内容流1303、“图”内容流1303、“图文字说明”内容流1303、“描述性文本”内容流1303和“页脚”内容流1303进行分组。内容流1303A3B和内容流1303A3Z之间的省略号示出父内容项目1306A3内可存在多个内容流1303,并且因此,父内容项目1306A3不限于图14所示的三个内容流1303A3A、1303A3B、1303A3Z。
图15A-15B显示了根据所要求保护的主题的一个示例性实施例的向模板1106应用文档内容904的方法1500的流程图表示。低级引擎502将从分页器602接收到的文档内容904与来自模板存储单元908的模板1106和来自样式表存储单元906的样式表组合。结果是定义文档的布局样式的潜在页面布局的集合。
在步骤1501处开始之后,低级引擎502前进到步骤1503,在那里低级引擎502确定是否需要使用文档内容904来评估附加模板1106。最初,模板存储单元908内没有一个模板1106被评估。然而,当重复步骤1503时,低级引擎502将考虑模板存储单元502内可用的其它模板1106,直到考虑了所有模板1106。或者,低级引擎502评估由分页器602在步骤1503之前提供(未示出)的数据结构(例如,数组或向量)内的所有模板1106,而非模板存储单元908内的所有模板1106。如果在步骤1503处,低级引擎502确定没有附加模板1106需要评估,则低级引擎502前进到以下描述的步骤1527。然而,如果在步骤1503处低级引擎502确定有附加模板1106需要评估,则低级引擎502前进到步骤1506,在那里针对文档内容904评估当前考虑的模板1106(此处也称为“当前模板1106”)的先决条件1109。接着,在步骤1509处,低级引擎502确定当前模板1106对于所考虑的文档内容904是否有效。
如果在步骤1509处低级引擎502确定当前模板1106对所考虑的文档内容904不是有效的,则低级引擎502前进到如上所述的步骤1503。然而,如果在步骤1509处低级引擎502确定当前模板1106对于所考虑的文档内容904是有效的,则低级引擎502前进到步骤1512,在那里低级引擎502通过设置当前模板的输入变量1218并使用简单贪婪局部传播将这些值前向传播通过当前模板的约束图来确定模板1106的每一元素1112的大小和位置。
然后,在步骤1515处,低级引擎502计算要由模板1106生成并其中将流入文档内容904的布局页面的二维区域。另外,低级引擎502根据元素1112之间的任何重叠或基于元素z顺序放置变量1212来裁剪该区域。接着,在步骤1518处,低级引擎502将文档内容904流入每一所确定的区域中。低级引擎502然后前进到步骤1521,在那里低级引擎502基于文档内容904有多适合模板1106来为模板1106计算模板得分(以下参考图10更详细描述)。接着,在步骤1524处,低级引擎502将模板1106添加到有效模板1106集或序列。低级引擎502然后前进到如上所述的步骤1503。
如上所述,如果低级引擎502在步骤1503处确定没有附加模板1106需要评估,则低级引擎502前进到步骤1527,在那里低级引擎502确定有效模板1106集是否为空。如果在步骤1527处低级引擎502确定有效模板1106集为空,则低级引擎502前进到步骤1536,在那里低级引擎502产生对文档内容904不存在有效模板1106集的错误。低级引擎502然后在步骤1533处终止根据方法1500的操作。然而,如果在步骤1527处低级引擎502确定有效模板1106集存在,则低级引擎502前进到步骤1530,在那里低级引擎502将有效模板1106集和相应的得分发送到分页器602。低级引擎502然后在步骤1533处终止根据方法1500的操作。
图16A-16C显示了根据所要求保护的主题的一个示例性实施例的将内容流入文档布局内的元素1112的方法1600的流程图表示。低级引擎502根据内容类型控制内容到元素区域的流动。一般而言,内容类型包括但不限于,图像、文本、内嵌图以及媒体。
在步骤1601处开始之后,低级引擎502前进到步骤1603,在那里低级引擎502确定内容类型是否为图像。如果在步骤1603处低级引擎502确定内容类型为图像,则低级引擎502前进到步骤1606,在那里低级引擎502缩放该图像以适合适当元素1112的边界区域。接着,在步骤1609处,低级引擎502显示按照元素1112的内容区域修剪的图像。低级引擎502然后在步骤1618处终止根据方法1600的操作。
然而,如果在步骤1603处低级引擎502确定内容类型不是图像,则低级引擎502前进到步骤1612,在那里低级引擎502确定内容类型是否为文本。如果在步骤1612处低级引擎502确定内容类型为文本,则低级引擎502前进到步骤1615,在那里低级引擎502使用诸如但不限于Knuth和Plass的最优断行算法等断行算法允许文本流入元素1112的边界区域中。低级引擎502然后在步骤1618处终止根据方法1600的操作。
然而,如果在步骤1612处低级引擎502确定内容类型不是文本,则低级引擎502前进到步骤1621,在那里低级引擎502确定内容类型是否为内嵌图(例如,出现在文本流内的图)。如果在步骤1621处低级引擎502确定内容类型是内嵌图,则低级引擎502前进到步骤1624,在那里低级引擎502确定在元素1112的边界区域内是否存在显示该图的空间。如果在步骤1624处低级引擎502确定在元素1112的边界区域内存在显示该图的空间,则低级引擎502前进到步骤1630,在那里低级引擎502将该图放置在指定的引用位置并调整该图的大小以填满元素1112的整个列。低级引擎502然后在步骤1633处终止根据方法1600的操作。否则,如果低级引擎502在步骤1624处确定元素1112的边界区域不是显示该图的足够大小,则低级引擎502前进到步骤1627,在那里低级引擎502在该流的下一元素1112内显示该图,并调整该图的大小以填满下一元素1112的整个列。低级引擎502然后在步骤1633处终止根据方法1600的操作。
然而,如果在步骤1621处低级引擎502确定内容类型不是内嵌图,则低级引擎502前进到步骤1636,在那里低级引擎502确定内容类型是否为媒体。如果在步骤1636处低级引擎502确定内容类型为媒体,则低级引擎502前进到步骤1642,在那里低级引擎502将该媒体类型嵌入在指定的引用位置处。低级引擎502然后在步骤1645处终止根据方法1600的操作。否则,如果低级引擎502在步骤1636处确定内容类型不是媒体,则低级引擎502前进到步骤1639,在那里低级引擎502生成指示无效内容类型的错误。低级引擎502然后在步骤1645处终止根据方法1600的操作。
图17A-17C显示了根据所要求保护的主题的一个示例性实施例的对文档布局内的元素1112进行自我大小调整的方法1700的流程图表示。低级引擎502支持自动调整其高度以适合文档内容904的元素1112。元素1112的自动大小调整取决于内容类型。
在步骤1701处开始之后,低级引擎502前进到步骤1703,在那里低级引擎502确定元素1112是否为图像元素。如果在步骤1703处低级引擎502确定元素1112是图像元素,则低级引擎502前进到步骤1706,在那里低级引擎502设置与元素1112相关联的约束变量1218、1221以向元素1112提供图像的像素尺寸。接着,在步骤1709处,低级引擎502从该像素尺寸中计算该图像的宽高比以确定元素1112的适当高度和宽度。低级引擎502然后在步骤1712处终止根据方法1700的操作。
然而,如果在步骤1703处低级引擎502确定元素1112不是图像元素,则低级引擎502前进到步骤1715,在那里低级引擎502确定元素1112是否为文本元素。如果在步骤1715处低级引擎502确定元素1112是文本元素,则低级引擎502前进到步骤1718,在那里低级引擎502确定元素1112是否包括预定的标记或属性,诸如但不限于“调整大小到内容”标签。如果在步骤1718处低级引擎502确定元素1112未用“调整大小到内容”标签来标记,则低级引擎502在步骤1712处终止根据方法1700的操作,因为不需要对元素1112调整大小。
如果低级引擎502在步骤1718处确定元素1112用“调整大小到内容”标签来标记,则低级引擎502前进到步骤1721,在那里低级引擎502将元素1112的高度变量设为最大允许值。接着,在步骤1724处,低级引擎502确定元素1112是否完全用文本填满。如果在步骤1724处低级引擎502确定元素1112完全用文本填满,则低级引擎502在步骤1730处终止根据方法1700的操作,因为不需要对元素1112调整大小。然而,如果在步骤1724处低级引擎502确定元素1112未完全用文本填满,则低级引擎502前进到步骤1727,在那里低级引擎502将元素1112的高度重设为文本的实际高度。低级引擎502然后在步骤1730处终止根据方法1700的操作。
然而,如果在步骤1715处低级引擎502确定元素1112不是文本元素,则低级引擎502前进到步骤1727,在那里低级引擎502确定元素1112是否为需要模板1106来进行布局的复合元素。内容原子表示放在一起被认为是一原子单元的两个或更多内容片段。例如,但非限制,图片和相应的文字说明在概念上被分组在一起作为单个“加文字说明的图”。因此,复合元素是模板中可接受内容原子的元素。为了布置内容原子内部的单独的子内容片段,复合元素指定了可用于在布局页面上排列内容原子的单独的子部分的单独的子模板。如果在步骤1727处低级引擎502确定元素1112不是需要模板1106来进行布局的复合元素,则低级引擎502在步骤1730处终止根据方法1700的操作,因为不需要调整大小。
然而,如果在步骤1727处低级引擎502确定元素1112是需要模板1106来进行布局的复合元素,则低级引擎502前进到步骤1733,在那里低级引擎502使用所需的模板1106来布置元素1112。复合元素可包括多个内容项目1306或多个内容流1303,诸如但不限于内容原子1306A3。然后,低级引擎502前进到步骤1736,在那里低级引擎502使用特殊的输出变量1221来设置元素1112在模板1106内的最终高度。低级引擎502然后在步骤1739处终止根据方法1700的操作。
图18显示了根据所要求保护的主题的示例性实施例的基于文档内容904有多适合模板1106来对模板1106评分的方法1800的流程图表示。对于用于布置文档内容904的每一模板1106,低级引擎502基于内容有多适合模板1106来计算一得分。一旦低级引擎502为所有潜在模板1106计算了得分,则低级引擎502将该得分报告回分页器602,分页器602可使用该得分以及用于先前和后续的内容页面的模板得分来计算用于对所有文档内容904分页的最优模板1106序列。
在步骤1801处开始之后,低级引擎502前进到步骤1803,在那里低级引擎502评估包括模板1106的模板得分的约束输出变量1221。低级引擎502然后前进到步骤1806,在那里低级引擎502确定在应用模板1106之后页面布局内的窗口和孤行的数目。然后,在步骤1809处,低级引擎502计算关于内容有多适合模板1106的得分,由此该质量得分基于template.score(模板得分)变量以及页面布局内的窗口和孤行的数目。低级引擎502前进到步骤1812,在那里低级引擎502向分页器602提供所计算的模板1106的得分,分页器602使用该得分来计算最终的模板1106序列。分页器602然后在步骤1815处终止根据方法1800的操作。
分页器产生模板1106序列以及文档内容904到该序列中低级引擎502可用于显示整个文档的每一模板1106的映射。在所要求保护的主题的一个实施例中,自适应基于网格的文档系统902对不同的应用利用多种分页算法。因此,自适应基于网格的文档系统902可包括快速产生用于交互式自适应的有效分页的第一分页器602,以及产生最优分页但需要更多时间来操作的第二分页器602。第一分页器602可使用一“贪婪”算法,该算法对每一页面始终使用将接受文档中的当前位置处的内容的第一模板1106,或可能选择序列中的每一位置处的单个最佳模板1106而不评估选择的全局结果(例如,全局评分)。第二分页器602可使用的技术包括但不限于,通过在文档内容904的较小部分(例如,“窗口”)上运行一系列较小的优化过程来创建优于“贪婪”分页、但不保证是最优的近似最优的分页。
图19A-19D显示了根据所要求保护的一个示例性实施例的将文档内容904最优地分页成自适应基于网格的文档布局的方法1900的流程图表示。为了找到最优分页,分页器602必须测量每一有效模板1106序列的有效性,其中该度量通过系统或试探搜索或通过约束优化来最大化。优化分页器602产生模板1106序列,以及内容到每一模板1106的映射,这最大化了某一质量度量。例如,但非限制,一种这样的度量包括“总翻页数”度量,它对读完文本并转向由该文本应用的任何附加内容所需的总翻页数进行计数。在所要求保护的主题的示例性实施例中,用于对每一有效模板1106序列的有效性进行评分的度量包括对总翻页数值的使用以及反映页面外观质量的其它度量(例如,空白空间、审美外观、可使用性或可读性)。
由于用于评估子问题(例如,一系列中的新模板1106)的基本动态编程选依赖于对子问题序列进行评分的事后认识,因此所要求保护的主题的一方面重构该算法,使得通过计算当前子问题的所有可能端点(例如,前向查找)来仅对有效页面执行评估。所要求保护的主题的一方面确保当考虑新的子问题时,在一解决方案中可能在该新的子问题之前的所有子问题将都已被解决,并且指回最优前导者的条目在一数据表中。因此,当到达一子问题时如果数据表中不存在针对该子问题的条目,则该子问题可被忽略而不进行计算。
另外,所要求保护的主题的一个实施例可被容易地修改以通过向数据表添加额外的维度并向该算法添加附加的嵌套循环来处理附加的内容流1303。最优内容流1303也可通过具有显示来自可任选内容流1303的内容的可用模板1106而不用任何附加的编程来处理。分页器602包括来自可任选内容流1303的内容项目1306,直到它们改善最优分页。这一可任选内容流1303和使用可任选内容流1303的模板1106可显著提高分页质量。
所要求保护的主题的各方面的性能通过从数据表中剪除其质量得分比某一阈值(例如,此处有时称为“剪除阈值”)差的部分解决方案(例如,已经被验证为可接受的子问题)来进一步改进。由于存在相对较少的可接受解决方案,因此该剪除有助于将子问题序列的列表缩减到最优的。例如,但非限制,一种保守的剪除策略包括使用从“第一适合”解决方案(例如,“贪婪”解决方案)所得的质量得分作为剪除阈值。对这一保守剪除策略的使用通常提供了对分页过程的显著加速,并确保将总是能找到一解决方案。或者,一种乐观剪除策略选择一近似的、接近完美的阈值,并且在没有找到解决方案的情况下迭代地更改该阈值。当模板存储单元908中存在大量模板1106时,存在接近完美的解决方案的可能性较高,且因此该乐观剪除策略变得更有效。
数据表内的条目表示文档内的位置(例如,当前处理的页面的端点)。此外,数据表中的条目表示迄今为止发现的在文档的各个内容流1303中的给定位置处结束的最佳分页,这可由表中的条目的索引值来确定。表条目包括,但不限于,在该位置处结束的最优部分解决方案中的前导页面在表中的位置(因此是文档中的位置)、以及用于呈现最后一页(例如,先前的表条目和当前处理的表条目之间的页面)的模板1106。
所要求保护的主题的各实施例所使用的过程的最外部循环遍历该表,从而在其行进过程中对越来越多的(部分)解决方案或子问题进行评估。该循环的每一迭代调用低级引擎502来找到考虑中的当前端点之后的下一页面集(例如,一页面是模板1106和内容选集;对具有不同数量的文本、不同图像版本等的单个模板1106可存在多个结果)。所得的页面集产生用于下一页面的端点集,该端点集然后由分页器602前向传播到数据表中(例如,如果新条目具有更好的全局得分,则替换现有条目)。
例如,但非限制,图19A-19D描述的方法1900可由表1中提供的伪代码来表示。
BEGIN PAGINATE;
初始化端点表(将一条目放置在用于开始文档的位置(0,0)处);
FOR每一表位置DO:
IF位置包含有效条目THEN:
调用低级引擎来生成用于在当前表位置处开始的页面的端点列
表;
FOR返回的每一端点(新)DO:
为以新端点结束的序列计算全局得分;
IF得分比剪除阈值好THEN:
IF新端点在表中没有条目THEN:
添加用于新端点的条目,包含得分、模板
和指向位置的反向指针;
ELSE(新端点在表中没有前一条目)THEN:
将得分与表中现有条目的得分进行比
较;
IF得分比现有条目的得分好THEN:
用新得分、模板和指向位置的反
向指针替换表中的条目;
ENDIF;
ENDIF;
ENDIF;
ENDFOR;
ENDIF;
ENDFOR;
从最后一个表条目开始跟踪反向指针以获得模板序列和内容映射;
END PAGINATE;
表1
在步骤1901处开始之后,分页器602前进到步骤1903,在那里分页器602设置用于最优分页的剪除阈值。本领域的技术人员将认识到,阈值可用包括上述技术在内的各种方式来确定。
接着,在步骤1906处,分页器602用表示文档的第一页的开始的单个端点来初始化空数据表(例如,在位置(0,0)处放置表示文档开始的一个条目)。分页器602然后前进到步骤1909,在那里分页器602确定是否需要评估表内的任何位置。如果在步骤1909处分页器602确定不需要评估表内的任何位置,则分页器602前进到步骤1921,在那里分页器602从最后一个表条目开始跟踪反向指针以获得最优模板1106序列和内容映射。分页器602然后在步骤1901处终止根据方法1900的操作。
然而,如果在步骤1909处分页器602确定需要评估表内的位置,则分页器602前进到步骤1912,在那里分页器602确定当前表位置是否具有有效条目。当前条目是由分页器从对其已评估了表中在它之前的所有条目的未评估表标目集中选择的。如果在步骤1912处分页器602确定当前表条目没有有效条目,则分页器602将该条目标记为已评估并前进到如上所述的步骤1909。否则,如果分页器602在步骤1912处确定当前表条目具有有效条目(例如,表示可被成功应用于文档内容的模板的可接受条目),则分页器602前进到步骤1915,在那里分页器602调用低级引擎502来生成用于在当前表位置处开始的页面的端点列表。
一般而言,通过对程序模块的调用,低级引擎502将模板存储单元908内的每一模板1106应用于文档内容904的未处理部分以确定哪些模板1106是有效模板1106。如果模板1106中没有一个可被使用,则没有模板1106可在当前表位置之后,并且因此,当前表条目不应当被进一步考虑。当低级引擎502确定模板1106可在当前位置处应用时(例如,将适应在当前表位置处开始的内容),则低级引擎502将该模板应用于该内容以确定所得页面的端点和得分,并在返回给分页器602的端点列表中包括该端点,分页器602可确定与该新的模板1106序列相关联的适当的全局得分。
分页器602然后前进到步骤1918,在那里分页器602确定步骤1915中返回的任何端点是否需要评估(例如,对该端点是否有计算的全局得分)。如果在步骤1918处分页器602确定没有端点需要评估,则分页器602前进到如上所述的步骤1909。然而,如果分页器602在步骤1918处确定有端点需要评估,则分页器602前进到步骤1927,在那里分页器602计算以该新端点结束的序列的全局得分。分页器602然后前进到步骤1930,在那里分页器602确定所计算的全局得分是否比预定的剪除阈值好。如果在步骤1930处分页器602确定所计算的全局得分不如预定的剪除阈值好,则分页器602前进到如上所述的步骤1918。
然而,如果分页器602在步骤1930处确定所计算的全局得分比预定的剪除阈值好(例如,高于该阈值),则分页器602前进到步骤1933,在那里分页器602确定新端点是否在数据表中有条目。如果在步骤1933处分页器602确定新端点在数据表中没有条目,则分页器602前进到步骤1936,在那里分页器602将用于新端点的条目添加到表中,该条目包含所计算的全局得分、当前模板1106、以及指向当前位置的反向指针。然后,分页器602前进到如上所述的步骤1918。
否则,如果分页器602在步骤1933处确定新端点在数据表中有条目,则分页器602前进到步骤1939,在那里分页器602确定所计算的全局得分是否比储存在数据表中的得分好。如果在步骤1939处分页器602确定所计算的全局得分不如储存在数据表中的得分好,则分页器602前进到如上所述的步骤1918。
然而,如果分页器602在步骤1939处确定所计算的全局得分比储存在数据表中的得分好,则分页器602前进到步骤1942,在那里分页器602用新端点、所计算的全局得分、当前模板1106和指向当前位置的反向指针替换数据表中储存的条目。接着,分页器602前进到如上所述的步骤1918。
现在参考图20,示出了可用于执行所公开的体系结构的示例性计算机编译系统的示意性框图。系统2000包括一个或多个客户机2002。客户机2002可以是硬件和/或软件(如,线程、进程、计算设备)。客户机2002可例如通过采用所要求保护的主题的特征来容纳cookie和/或相关联的上下文信息。
系统2000还包括一个或多个服务器2004。服务器2004也可以是硬件和/或软件(如,线程、进程、计算设备)。服务器2004可例如通过采用所要求保护的主题的特征来容纳执行变换的线程。客户机2002和服务器2004之间的一个可能的通信可以是适用于在两个或多个计算机进程之间传输的数据分组的形式。数据分组可包括例如cookie和/或相关联的上下文信息。系统2000包括可用于便于在客户机2002和服务器2004之间通信的通信框架2006(例如,诸如因特网等全球通信网络)。
通信可通过有线(包括光纤)和/或无线技术来促进。客户机2002操作上连接至可用于储存对客户机2002本地的信息(例如cookie和/或相关联的上下文信息)的一个或多个客户机数据存储2008。类似地,服务器2004操作上连接至可用于储存对服务器2004本地的信息的一个或多个服务器数据存储2010。
上文所描述的包括所要求保护的主题的示例。当然,不可能为了描述所要求保护的主题而描述组件或方法的每一可想象的组合,但是本领域的普通技术人员可以认识到,所要求保护的主题的许多另外的组合和置换是可能的。因此,所要求保护的主题旨在包含落入所附权利要求书的精神和范围中的所有这样的改变、修改和变化。此外,就在说明书或权利要求书中使用术语“包括”而言,这类术语旨在以与术语“包含”用作权利要求书中的过渡词语所解释的类似的方式为包含性的。
Claims (20)
1.一种帮助自适应可在多个尺寸和维度下显示的具有各种各样内容的文档布局的系统,包括:
接收模板(104)的接口(102),所述模板是对用于文档布局的约束的高级描述;以及
解释所述模板并确定在何处放置内容(108)以自动产生高质量布局(110)的布局引擎(106)。
2.如权利要求1所述的系统,其特征在于,还包括通过高级约束参数来帮助设计和/或修改所述模板并提供对所述模板的存储的用户界面。
3.如权利要求2所述的系统,其特征在于,所述用户界面是图形用户界面(GUI)。
4.如权利要求1所述的系统,其特征在于,所述布局引擎基于语义流、品牌识别、图像和文本相关以及广告主题中的至少一个来产生所述高质量布局。
5.如权利要求1所述的系统,其特征在于,所述布局引擎基于所述模板、要在所述高质量布局中使用的内容的类型以及所述高质量布局的显示尺寸来产生所述高质量输出。
6.如权利要求5所述的系统,其特征在于,还包括显示所述高质量布局的输出设备,所述高质量布局的显示尺寸基于所述输出设备。
7.如权利要求5所述的系统,其特征在于,所述高质量布局的显示尺寸在创建所述模板时是未知的。
8.如权利要求5所述的系统,其特征在于,要在所述高质量布局中使用的内容的类型在创建所述模板时是未知的。
9.如权利要求1所述的系统,其特征在于,还包括基于低级约束将所述内容应用于自适应基于网格的布局的低级引擎,所述低级布局确定对所述高质量布局在何处定位所述内容,并生成所述低级引擎产生所述高质量布局所需的所述低级约束。
10.如权利要求1所述的系统,其特征在于,所述布局引擎基于用于所述内容的适当位置来确定何处放置内容。
11.如权利要求1所述的系统,其特征在于,所述文档布局是具有顶层和底层的多层文档布局,所述布局引擎基于放置在所述顶层中的内容的位置来确定在所述底层中何处放置内容。
12.如权利要求1所述的系统,其特征在于,在所述高质量布局中使用的内容是从多个源聚集的。
13.如权利要求1所述的系统,其特征在于,所述布局引擎采用可扩展样式表语言变换(XSLT)来将所述内容从接收所述内容的源格式转换。
14.一种用于排列内容以创建高质量布局的计算机实现的方法,包括:
选择用于文档布局的模板(802),所述模板是以高级语言来定义的;
确定用于文档的显示大小(804);
接收用于所述文档的内容(806);
采用所述模板和所述显示大小来确定用于所述内容的可用位置(808);
从所述可用位置中选择用于所述内容的高质量位置(810);以及
通过将所述内容排列到所述高质量位置中来创建用于所述文档的高质量布局(812)。
15.如权利要求14所述的方法,其特征在于,还包括以高级语言来定义用于文档的模板。
16.如权利要求15所述的方法,其特征在于,所述文档的显示大小和所述内容的类型在定义所述模板时是未知的。
17.如权利要求14所述的方法,其特征在于,确定用于所述内容的可用位置是至少部分地基于先前放置在所述文档内的其它内容的位置。
18.如权利要求14所述的方法,其特征在于,选择高质量位置是基于一算法,所述算法是最佳适合算法、第一适合算法和第一良好适合算法中的至少一个。
19.如权利要求14所述的方法,其特征在于,选择高质量位置是基于语义流、品牌识别、图像和文本相关以及广告主题中的至少一个。
20.一种排列内容以创建可在多个尺寸和维度下显示的具有各种各样内容的高质量布局的计算机实现的系统,包括:
用于以高级语言来描述用于文档布局的模板(104)的约束的装置;
用于确定文档显示尺寸(106)的装置;
用于接收用于所述文档的内容(108)的装置;
用于基于所述模板和所述显示尺寸来确定用于所述内容的可用位置(106)的装置;
用于从所述可用位置中选择用于所述内容的高质量位置(106)的装置;以及
用于通过将所述内容放置到所述高质量位置中来产生(106)用于所述文档的高质量布局(110)的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US72346705P | 2005-10-04 | 2005-10-04 | |
US60/723,467 | 2005-10-04 | ||
US11/343,351 | 2006-01-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101283348A true CN101283348A (zh) | 2008-10-08 |
Family
ID=40014926
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800371414A Pending CN101283348A (zh) | 2005-10-04 | 2006-10-04 | 具有对动态地聚集的文档的和谐合成的多形设计 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101283348A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508826A (zh) * | 2011-11-03 | 2012-06-20 | 汉王科技股份有限公司 | 一种文档中的表格显示方法及装置 |
CN102650985A (zh) * | 2011-02-25 | 2012-08-29 | 易搜比控股公司 | 一种显示画面的动态排版方法 |
CN103473388A (zh) * | 2013-07-25 | 2013-12-25 | 深圳市华傲数据技术有限公司 | 实现流程图自动布局的系统及装置 |
CN104040536A (zh) * | 2011-07-22 | 2014-09-10 | 惠普发展公司,有限责任合伙企业 | 使用集群进行自动化文档构成 |
TWI453658B (zh) * | 2011-02-25 | 2014-09-21 | Esobi Inc | 一種顯示畫面之動態排版方法 |
WO2017050164A1 (zh) * | 2015-09-23 | 2017-03-30 | 阿里巴巴集团控股有限公司 | 一种对象呈现方法与设备 |
CN110648382A (zh) * | 2019-09-30 | 2020-01-03 | 北京百度网讯科技有限公司 | 图像生成方法和装置 |
CN111125466A (zh) * | 2018-11-01 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 仪表盘布局方法及装置 |
CN112230908A (zh) * | 2019-07-15 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 一种对齐组件的方法、装置、电子设备及存储介质 |
CN116522892A (zh) * | 2023-07-03 | 2023-08-01 | 广东省特种设备检测研究院中山检测院 | 一种报告模板的自动生成方法及生成系统 |
-
2006
- 2006-10-04 CN CNA2006800371414A patent/CN101283348A/zh active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102650985A (zh) * | 2011-02-25 | 2012-08-29 | 易搜比控股公司 | 一种显示画面的动态排版方法 |
TWI453658B (zh) * | 2011-02-25 | 2014-09-21 | Esobi Inc | 一種顯示畫面之動態排版方法 |
CN102650985B (zh) * | 2011-02-25 | 2014-09-10 | 易搜比控股公司 | 一种显示画面的动态排版方法 |
CN104040536A (zh) * | 2011-07-22 | 2014-09-10 | 惠普发展公司,有限责任合伙企业 | 使用集群进行自动化文档构成 |
CN102508826B (zh) * | 2011-11-03 | 2014-04-16 | 汉王科技股份有限公司 | 一种文档中的表格显示方法及装置 |
CN102508826A (zh) * | 2011-11-03 | 2012-06-20 | 汉王科技股份有限公司 | 一种文档中的表格显示方法及装置 |
CN103473388A (zh) * | 2013-07-25 | 2013-12-25 | 深圳市华傲数据技术有限公司 | 实现流程图自动布局的系统及装置 |
WO2017050164A1 (zh) * | 2015-09-23 | 2017-03-30 | 阿里巴巴集团控股有限公司 | 一种对象呈现方法与设备 |
CN111125466A (zh) * | 2018-11-01 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 仪表盘布局方法及装置 |
CN111125466B (zh) * | 2018-11-01 | 2023-11-17 | 百度在线网络技术(北京)有限公司 | 仪表盘布局方法及装置 |
CN112230908A (zh) * | 2019-07-15 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 一种对齐组件的方法、装置、电子设备及存储介质 |
CN112230908B (zh) * | 2019-07-15 | 2023-05-23 | 腾讯科技(深圳)有限公司 | 一种对齐组件的方法、装置、电子设备及存储介质 |
CN110648382A (zh) * | 2019-09-30 | 2020-01-03 | 北京百度网讯科技有限公司 | 图像生成方法和装置 |
CN116522892A (zh) * | 2023-07-03 | 2023-08-01 | 广东省特种设备检测研究院中山检测院 | 一种报告模板的自动生成方法及生成系统 |
CN116522892B (zh) * | 2023-07-03 | 2023-12-19 | 广东省特种设备检测研究院中山检测院 | 一种报告模板的自动生成方法及生成系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7354294B2 (ja) | 階層流動コンポーネントおよび動的レイアウトを統合した応答編集および表示を提供するシステムおよび方法 | |
CN101283348A (zh) | 具有对动态地聚集的文档的和谐合成的多形设计 | |
CN102592298B (zh) | 内容整合框架中的用户界面的视觉处理 | |
US20230367841A1 (en) | System and method for implementing containers which extract and apply semantic page knowledge | |
AU2006299329B2 (en) | Multi-form design with harmonic composition for dynamically aggregated documents | |
CN100520716C (zh) | 一种基于模型组件的代码自动生成装置、系统及方法 | |
US7246311B2 (en) | System and methods for facilitating adaptive grid-based document layout | |
US6668354B1 (en) | Automatic display script and style sheet generation | |
US20150213514A1 (en) | Systems and methods for providing modular configurable creative units for delivery via intext advertising | |
US20090112724A1 (en) | Method and equipment for exposing an advertisement using application | |
CN109656552B (zh) | 一种基于盒子模型的设计图自动转换成网页的方法 | |
Schrier et al. | Adaptive layout for dynamically aggregated documents | |
EP1830275A1 (en) | Information distribution system | |
CN110738037A (zh) | 用于自动生成电子表格的方法、装置、设备及存储介质 | |
CN104090769A (zh) | 一种业务数据的图形展示方法和装置 | |
US20130305130A1 (en) | Systems and Method for Building and Publishing Complex Documents with Component Revenue Tracking | |
CN108604232A (zh) | 通过模型化滚动行为而改善信息源 | |
US9158507B2 (en) | Domain transformation languages | |
van Ossenbruggen et al. | Towards a multimedia formatting vocabulary | |
Shenoy et al. | CSS Framework Alternatives: Explore Five Lightweight Alternatives to Bootstrap and Foundation with Project Examples | |
Hassan et al. | The browser as a document composition engine | |
Webb | EAD in the department of special collections and western manuscripts at the bodleian library, United Kingdom | |
Markandeya | Pro SAP Scripts, Smartforms, and Data Migration: ABAP Programming Simplified | |
Zhang | C-RWD: A Computational Responsive Web Design Service | |
Regmi | Building a responsive website |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20081008 |