CN103329122B - 使用多个表示的文档存储 - Google Patents
使用多个表示的文档存储 Download PDFInfo
- Publication number
- CN103329122B CN103329122B CN201280005666.5A CN201280005666A CN103329122B CN 103329122 B CN103329122 B CN 103329122B CN 201280005666 A CN201280005666 A CN 201280005666A CN 103329122 B CN103329122 B CN 103329122B
- Authority
- CN
- China
- Prior art keywords
- node
- document
- index
- content flow
- scope
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/117—Tagging; Marking up; Designating a block; Setting of attributes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Abstract
一些实施方式提供了一种用于存储文档的方法。该方法存储文档的内容流表示,该内容流表示包括文档的原始元素的代码表示的排序流。原始元素的每一个代码表示具有指示原始元素表示在内容流中的顺序的索引。该方法存储文档的对象表示,该对象表示包括排列在树结构中的对象节点集。每一个对象节点参考内容流中的索引范围。
Description
背景技术
由软件使用的、处理文档的电子文档文件格式和内存表示通常将是流表示或对象表示。流表示通常是由字符代码或其它原始数据元素序列构成,其中,在该序列中散布了特殊非字符值或者值序列,其以信号形式告知状态或上下文的改变(例如,文本样式、变换或绘制属性或者解析模式的开始或结束)。处理这种流中的数据的软件必须从头开始,并且轮流访问每一个元素以确定在给定的数据元素处达到的状态,这是因为该状态是发生至该点的所有改变的最终结果。
另一方面,对象表示是由表示文档的组成部分的对象的集合构成。这些对象可以包含对象属性、针对其它有关的对象的指针或参考以及文档的内容的一部分。例如,段落对象可以包括行间隔属性和段落的文本,而部分对象可以包括针对所有段落对象和包括该部分的说明对象的排序的指针集合。
通常,对象表示主要是分层的,其中对象参考的图形形成树(例如,文档包含页面和布局区,其中,页面包含可以包括其它区域的区域,布局区包含包括段落的列)。然而,即使在分层模型的情况下,可能存在与树图形不同的额外的对象参考(例如,区域可以包含针对共享图形对象的参考,该共享图形对象促成其边界和其它区域的边界,而段落可以包含针对共享文本样式对象的参考)。
应用通常为其文件格式选择与内存表示不同的表示。虽然对于某些操作,格式中的每一个是高效的,但是对于其它操作,每一个格式也是效率低的。例如,虽然对于字符串搜索和不取决于对属性的详细了解的其它处理,流表示是有用的,但是对于访问特定的对象,流表示将不是有用的。
发明内容
本发明的一些实施方式提供了一种用于存储文档的新颖方法,其存储文档的至少两个不同的表示。在一些实施方式中,该方法存储文档的流表示和一个或多个对象表示。可以将这些表示作为文档的文件或者内存表示进行存储。
在一些实施方式中,流表示仅包含以某一顺序排列的纯内容(例如,针对文档文本的字符代码序列)。将对象表示存储为表示内容的分组和与分组有关的相关联的信息(例如,文档结构、样式等)的节点树。不是在节点中存储内容,而是每一个节点包含针对流表示中的索引位置的参考。
一些实施方式包括两个对象表示—一个结构树和一个样式树。结构树存储文档结构—即,部分、页面、布局、列、段落、文本行、词等。该信息可以从在文档(例如,富文本词处理文档)中编码的信息导出或者通过不具有这种编码的信息的文档(例如,诸如PDF文件等的向量图形文档)的重构导出。树中的每一个结构参考在其处找到针对结构的内容的、流中的索引的范围。在这种树中,父节点表示包含由子节点表示的结构的结构。
一些实施方式的样式树存储与文档中的字符的格式化有关的信息。一些实施方式存储格式化特征的层级,其中,对象树中的每一个节点表示流中的格式样式和索引范围。例如,更大的黑体部分中的下划线部分将由黑体节点来表示,该黑体节点具有整个黑体部分的范围。黑体节点将具有子下划线节点,该子下划线节点具有黑体部分中的下划线部分的范围。在这种树中,父节点表示由子节点继承的样式属性。
除了结构和样式树以外,一些实施方式还可以存储针对文档的其它不同类型的对象表示。例如,不同的实施方式将存储用于绘制文档的裁剪路径的对象树、跟踪不同的作者/编辑对文档的改变的修订树、语义文档树等。
该多表示方法针对各种常见文档动作实现了高效率。可以通过导览(navigating)结构树以找到期望的结构并且然后使用索引来识别要在流中选择的内容来高效地执行对树的选择(例如,词、行、段落等)。高效地执行的动作的其它实施例包括某些导览操作(例如,在章节标题中找到搜索项)和文档在格式之间的转换(例如,以便在应用之间进行切换)。
前面的概述旨在用作本发明的一些实施方式的简要介绍。这并不意味着是本文中公开的所有发明主题的介绍或概述。下面的具体实施方式和在具体实施方式中提及的附图将进一步描述发明内容中描述的实施方式以及其它实施方式。因此,为了理解本文描述的所有实施方式,需要对发明内容、具体实施方式和附图的全面审查。此外,要求保护的主题并不受发明内容、具体实施方式和附图中的说明性细节的限制,而是由所附权利要求来限定的,这是因为可以在不偏离本主题的精神的情况下,以其它具体的形式来体现要求保护的主题。
附图说明
在所附的权利要求中阐述了本发明的新颖特征。然而,为了解释的目的,在附图中阐述了本发明的多个实施方式。
图1示出了根据一些实施方式的为其创建和存储多个不同的表示的文档。
图2示出了文档的页面的实施例。
图3示出了图2的页面的一些实施方式的流表示。
图4示出了图2的页面的对象表示。
图5概念性地示出了一些实施方式的列对象。
图6示出了单页面的文档。
图7概念性地示出了图6的文档的两个单独的对象模型。
图8示出了在其中每一级层级存储与特定的样式属性有关的信息的样式对象树的实施例。
图9示出了一些实施方式的词选择过程。
图10示出了图2的、具有加亮的词的页面。
图11概念性地示出了用于识别表示用户希望导览至的文档中的结构的文档结构树中的期望对象的一些实施方式的过程。
图12示出了搜索电子书中的特定的章节标题。
图13概念性地示出了用于使用双表示数据模型来将文档的一部分的选择转换为另一种格式的过程。
图14示出了示例性的文档页面中的选择。
图15示出了图14的文档页面的示例性的对象树以及由转换过程使用对象树产生的具有新的格式的示例性的输出流。
图16a-16b概念性地示出了可以作为图13的过程的一部分来执行的示例性的递归过程。
图17概念性地示出了实现本发明的一些实施方式所使用的电子***。
具体实施方式
在下面的描述中,阐述了大量细节以便于进行解释。然而,本领域普通技术人员将认识到,可以在不使用这些具体细节的情况下实践本发明。在其它实例中,以框图的形式示出了公知的结构和设备,以不会用不必要的细节模糊本发明的描述。
本发明的一些实施方式提供了一种用于存储文档的新颖方法,其存储文档的至少两个不同的表示。在一些实施方式中,该方法存储文档的流表示以及一个或多个对象表示。将这些表示作为文档的文件或内存表示进行存储。
图1示出了根据一些实施方式的为其创建和存储多个不同的表示的文档100。如图所示,在该实施例中,为文档存储了三个不同的表示。第一表示是流表示105。在一些实施方式中,流表示仅包含按顺序排列的纯内容(例如,文档文本的字符代码序列)。流表示105被示出为串在一起的字符序列,但是在一些实施方式中,该流实际上被存储为表示十六进制字符代码的字节序列(即,0和1)。
文档100的第二表示和第三表示是对象表示110和115。在一些实施方式中,对象表示被存储为具有节点的树,这些节点表示内容分组和与分组有关的相关联的信息(例如,文档结构、样式等)。不是在节点中存储内容,而是每一个节点包含针对流表示中的索引位置的参考。
如图1所示,一些实施方式包括两个(或更多个)对象表示(例如,结构树和样式树)。一些实施方式的结构树存储文档结构,即,部分、页面、布局、列、段落、文本行、词等。该信息可以从在文档(例如,富文本词处理文档)中编码的信息导出或者通过重构不具有这种编码信息的文档(例如,诸如PDF文件等的向量图形文档)来导出。树中的每一个结构节点参考流中的在其处找到结构的内容的索引的范围。在这种树中,父节点表示包含由子节点表示的结构的结构。
一些实施方式的样式树存储与文档中的字符的格式化有关的信息。一些实施方式存储格式化特征的层级结构,其中,对象树中的每一个节点表示格式样式和流中的索引的范围。例如,较大的黑体部分中的下划线部分将由黑体节点来表示,该黑体节点具有整个黑体部分的范围。黑体节点将具有子下划线节点,该子下划线节点具有黑体部分中的下划线部分的范围。在这种树中,父节点表示由子节点继承的样式属性。
除了结构树和样式树以外,一些实施方式还可以存储针对文档的其它不同类型的对象表示。例如,不同的实施方式将存储用于绘制文档的裁剪路径的对象树、跟踪不同的作者/编辑对文档的改变的修订树、语义文档树等。
该多表示方法针对各种常见文档动作实现了高效率。可以通过导览结构树以找到期望结构并且然后使用索引来识别要在流中选择的内容来高效地执行对树(例如,词、行、段落等)的选择。高效地执行的动作的其它实施例包括某些导览操作(例如,在章节标题中寻找搜索项)和文档在格式之间的转换(例如,以便在应用之间进行切换)。
使用结构对象树最高效地执行某些操作(例如,通过页面上的起始点坐标和终止点坐标来识别用户选择)。使用样式树来更高效地执行其它操作(例如,确定可应用于给定的字符的最终样式属性),同时使用流表示或者使用针对文档存储的不同对象树来最高效地执行其它操作(例如,给文档编索引以进行全文搜索)。
下面描述本发明的多个更详细的实施方式。部分I描述了文档的包括内容流和文档结构树的数据模型。然后,部分II描述了向文档的数据模型添加样式属性树以及其它对象树。部分III描述了数据模型的各种使用。最后,部分V描述了执行本发明的一些实施方式所使用的电子***。
I、文档的多个表示
如上所述,一些实施方式存储文档的多个表示。
在一些实施方式中,应用存储(i)流表示以及(ii)一个或多个对象表示。多个表示是互补的,这是因为它们可以被同时访问并且提供可以一起使用以进行更高效的文档处理的不同类型的信息。在一些实施方式中,对象表示包括存储与文档结构(例如,页面、布局、列、段落、文本行、词等)有关的信息的结构对象树。在一些实施方式中,该结构树是以类似于题为“Identification of Layout and Content Flowof an Unstructured Document”的第2010/0174985号美国专利公开中所述的方式导出的。
图2示出了页面200的实施例。页面200可以是单页面文档或来自多页面文档的页面。如图所示,页面200包括具有三个段落205-215的单个列。第一段落205包括五个文本行,第二段落210包括六个文本行,第三段落215包括五个文本行。每一个文本行包括多个不同数量的词。
图3示出了页面200的一些实施方式的流表示300。如图所示,流表示300是表示页面200的内容的十六进制字符代码的字符串。文档中的每一个字符被转换为用于表示字符的十六进制代码(例如,针对“B”的十六进制42)。在该实施例中,在流中还包含空格和换行符,但是在一些实施方式中,并不严格需要这些空白字符,并且可以从页面的对象表示(例如,结构树)中导出这些空白字符。
所示出的流针对字符使用ASCII(2位十六进制数字)表示,同时一些实施方式使用万国码(4位十六进制数字)表示。虽然未包含在示例性的页面200中,但是一些实施方式表示具有占位符字符(例如,具有十六进制代码FFFC的万国码“对象替换字符”)的非字符原始内容(例如,图像、形状等)。虽然字符被示出为十六进制代码,但是一些实施方式将字符串存储为表示十六进制代码的一系列比特(例如,0和1)或者针对页面中的字符使用不同的代码。
图4示出了页面200的一些实施方式的示例性的对象表示400。具体地说,对象表示400是存储文档中的每一个结构的对象的结构树的一部分。图4示出了页面200的文档结构树的部分。在一些实施方式中,文档的单个父节点将包括文档中的每一个页面的一个这种部分。
文档结构树400中的每一个节点被示出为一系列的数。这些数表示对内容流表示300中的索引的参考。如图所示,文档对象树400的所示部分包括页面节点405、单个列节点410、三个段落节点415-425和十六个文本行节点431-446。虽然在该图中仅示出了两个词节点450和455,但是本领域普通技术人员将认识到,在对象树中存储了很多词节点(多于示意图中所示出的词节点)。此外,在词节点下面可以存在原始字符节点(例如,字形),其中每一个原始字符节点参考流中的单个字符。
在一些实施方式中,当(例如,在诸如Apple 或Microsoft创建的富文本词处理文档中)包含该结构信息时,从在文档中编码的信息提取出这种结构信息。当文档不包括这种编码的结构信息(例如,典型的PDF文档)时,一些实施方式使用文档重构过程,该文档重构过程基于文档中的原始元素(例如,字形)来导出结构信息。一些实施方式的文档重构过程识别文本行、列、段落、贯穿文档元素的读取顺序等。
在结构树400中,针对特定结构的范围指示结构树对应的内容流的范围。因此,例如,第一段落415对应于十六进制代码字符1-338。在一些实施方式中,该信息被存储为一对数。一些实施方式存储起始索引和范围内的后续连续索引的计数,而其它实施方式存储起始索引和终止索引。为了简化,图4示出了使用起始索引和终止索引的范围。
在一些实施方式中,如上所述,即使可以通过对象树(例如,词之间的空格、段落之间的回车)导出分隔符字符(例如,空格、回车等),内容流也包括这些分隔符字符。一些实施方式在结构树中的对象的索引范围内包括这些分隔符字符。例如,段落415的范围包括针对第一段落的末尾的回车的十六进制代码。
除了图中所示的范围以外,在一些实施方式中,每一个结构节点(即,结构对象)还包括与结构有关的额外信息。图5概念性地示出了一些实施方式的列对象500。该对象存储与对象定义的列有关的信息。在一些实施方式中,列对象500是列类别中的对象,并且所示的各个数据是对象的变量。如图所示,列对象500包括用于标识列的唯一列ID、存储指向包含列的文档的内容流的索引的范围的索引范围以及一组列属性505。此外,一些实施方式包括针对对象的子对象(在该情况下,多个段落)的参考以及针对对象的父对象(在该情况下,页面)的参考。一些实施方式仅存储在一个方向上针对结构树中的所有对象的参考(即,针对对象的父对象或其子对象的参考)。
列属性505将与列有关的各种信息存储为以下结构:页面中的列的边界、列的旋转角(即,列在页面上是水平定位的还是垂直定位的还是定位在水平与垂直之间的某一方向上)、通读文档时对前一列和下一列的参考以及列的其它属性。在一些实施方式中,不同的结构对象包括不同的属性。例如,段落对象可以包括与列对象500类似的属性(边界、旋转角、下一个段落和前一个段落),但是还可以包括行间隔信息、对齐信息等。
在一些实施方式中,对流和对象树施加五个条件,以确保不同的表示之间的适当协调。首先,以自然的顺序来排列流,以实现高效的流处理。在有关的流处理包括文本搜索和选择的电子文档的情况下,自然顺序是读取顺序。可以通过在文档中编码的信息(例如,通过词处理应用)导出读取顺序,或者可以通过分析文档(如在第2010/0174985号美国专利公开中所描述的,其在上文中通过引用的方式并入本文)来得到读取顺序。
第二,每一个节点参考的索引位置位于单个连续的范围R={i,i+1,...,i+n-1}内。也即是说,每一个对象参考在内容流中不具有间隙的索引范围。因此,可以将该范围存储为一对整数(i,n),其中,i是起始索引,n是范围中的连续索引的计数。如图4所示,也可以使用起始索引和结束索引将该范围存储为(i,i+n-1)。
第三,父节点的范围是其节点的范围的联合。这防止了一级文档模型中的间隙。例如,页面上的布局必须包括页面的所有原始元素。布局中的列必须包括布局的所有原始元素,列中的段落必须包括列的所有原始元素等等。然而,在一些实施方式中,父节点的范围仅包括其子节点的联合。也即是说,子节点不能包括不在其父节点中的任何内容,但是父节点可以包括不在其子节点中的任意一个中的内容。在这些实施方式中,可能在子节点之间存在间隙(例如,针对空格等)。需要完整联合的处理可以在其操作时高效地推断针对缺失间隙的节点。因此,在这些实施方式中,不需要存储不向数据模型添加任何信息的节点,这释放了存储空间。
第四,任意两个同级节点的范围是不相交的。这意味着在两个同级节点之间不存在重叠。因此,字符不能存在于两个不同的词、行、段落等中。最后,如果第一节点是第二节点的前一同级,则第一节点的起始索引小于或等于第二节点的起始索引。这要求按顺序放置同级节点。因此,如图所示,针对第一文本行的节点431是段落节点415下方的第一节点。显而易见,文档结构树400和流300满足这五个属性。针对文档结构树400的结果是每一级层级包括页面200上的所有内容。
II、额外的对象表示
文档结构树是可以由一些实施方式结合内容流一起使用以表示文档的一种类型的对象表示。除了(或者替代)文档结构树,一些实施方式还包括文档的额外的对象表示。一种这样的对象表示参考与文档结构树相同的内容流来实现内容样式。为了绘制文档,软件应用可以递归下降遍历样式树的节点以解析(resolve)用于绘制内容的继承样式。不是设置每一个字符的样式属性,而是使用样式对象树允许树中的每一个节点由其子节点中的每一个重新使用。
诸如可扩展样式语言(XSL)等的某些专业的样式模型包括以与读取文本的顺序不同的顺序来对文本进行布局的能力。例如,基于读取顺序规则,在读取顺序中表格标题可以被视为在表格之前,但是被绘制在表格下方。在XSL中,这被视为将结构树变换为“格式化对象”树,其中,格式化对象包括布局和样式信息。为了在多个表示上下文中实现这种树,一些实施方式要求移除前面的部分中所描述的第五条件,并且允许同级次序颠倒。
即使在格式化节点次序颠倒的情况下,格式化节点和结构节点(例如,结构树400中的结构节点)保持公共内容流中的范围。因此,应用可以快速地确定哪一些结构对象产生每一个格式化对象。如果格式化对象具有i到j的范围,则其范围与该范围相交的任何结构对象受到该格式化对象的影响。
图6示出了单页面文档600。文档600包括三个段落,每一个段落具有多个词。此外,将各个格式化特征应用于第一段落的各个部分。用斜体字表示第一行的一部分,而第二行的各个部分具有斜体、黑体和下划线的文本。第三行和第四行也包括应用的样式改变。因为文档600的文本与页面200的文本相同,因此内容流300准确地表示文档600。
图7概念性地示出了文档600的两个单独的对象模块。第一对象模块705是与文档结构树400类似的文档结构树。在该图和后续的图中,为了简化,使用字符范围(即,文档中的字符的计数)而不是内容流的十六进制代码的索引。本领域普通技术人员将认识到,这些范围可以容易地转换为内容流索引。此外,为了简化,文档结构模型仅示出了页面节点、段落节点和词节点。本领域普通技术人员将认识到,不同的实施方式将使用不同级别的分层结构对象来表示文档结构—文本行可以包含在段落和词之间,如图4的结构树400所示,列可以包含在段落和页面之间,等等。
第二对象模型710是样式属性树。不是组织内容对象,而是样式属性树组织内容的格式化属性,不论内容所属的结构如何。以上在部分I中所讨论的应用于文档结构树的相同数据模型属性也应用于样式属性树710。也即是说,(i)由每一个节点参考的索引位置是连续的范围,(ii)父节点的范围是其子节点的范围的联合,(iii)任何两个同级节点的范围是不相交的,以及(iv)同级节点的起始索引是有序的。
所有字符具有相同的字型(例如,海维提卡、新罗马字体等)以及大小(例如,12磅),因此根节点715包括这些属性,并且其范围是所有674个字符。一些实施方式将包括诸如图7所示的树结构等的多个树结构,其中,这些数结构针对页面具有更高级根节点。此外,如果整个文档具有特定的字体但是不同的部分具有不同的大小,则字型和大小可以被定义为不同级别的对象。根节点715的子节点(和孙节点等)将各种格式化属性应用于参考的字符集。例如,文档的斜体开始是由节点720指示的,节点720指示用斜体表示文档的前28个字符。因为没有向这些字符应用额外的格式化,因此节点不具有任何子节点。
另一方面,斜体节点725具有用于将下划线部分与不具有下划线的部分进行区分的额外的子节点。如图所示,在用斜体表示的字符42-61中,未用下划线表示这三个字符42-44,而是用下划线表示剩余的字符45-61。此外,在下划线字符中,用黑体加粗字符45-54,而字符55-61具有常规的重量(即,没有用黑体加粗)。因此,为了绘制字符53,应用将遍历树710并且确定它具有应用于整个文档的字型和大小,用斜体表示(节点725)、加下划线(节点730)并且用黑体加粗(节点735)。通过这种方式,每一个节点继承其父节点的格式化属性。
为了维持对象模型的连续属性,一些实施方式包括无改变节点,例如,节点740或节点745。节点740指示没有向除了根节点的字符以外的字符29-41应用格式化。该节点用于填充斜体节点720与斜体节点725之间的间隙。节点745指示未用黑体加粗字符55-61。但是,这些字符维持从节点730继承的下划线属性和从节点725继承的斜体属性以及来自节点715的字型和大小。
不是具有含有应用的属性(例如,黑体、斜体和下划线,其均可能处于树中的相同级别上)的样式格式化树,一些实施方式包括针对特定属性的特定级别。例如,树可能具有指示字型的第一级别、指示大小的第二级别、指示重量的第三级别(例如,用黑体加粗的或未用黑体加粗的以及分级)、指示倾斜的第四级别(例如,倾斜或直的,以及分级)、指示下划线属性的第五级别(例如,无下划线、单个下划线、双下划线等)以及针对其它字符格式属性的级别。
图8示出了这种样式对象树800的实施例,其中,每一级层级存储与特定的样式属性有关的信息。对象树800包括针对字型、字体大小、倾斜、字体重量和下划线的分层级别。样式对象涉及相同的文档600,因此传递与样式树710相同的信息。在对象树800的情况下,每一级层级涉及内容流中的索引的整个范围,并且对象满足上文在部分I中描述的数据模型属性。
如最上面的两级中的对象(字型对象805和字体大小对象810)所传递的,在整个文档中,字型(赫维提卡体)和字体大小(13磅)是相同的。下一级层级是斜体,在该情况下,其指示没有斜体或用斜体表示。在斜体对象下方是字体重量对象,并且然后是下划线对象。在不同的实施方式中,可以在层级中以不同的顺序来排列不同的属性,这是因为对于字体样式属性,不会像针对结构存在自然层级这种顺序一样存在自然的层级。一些实施方式使用基于什么使得树更加简单而确定的动态顺序(例如,如果存在间歇地用斜体表示的较大黑体部分,则具有斜体对象作为字体重量对象的子对象)。
使格式化对象树与内容树保持分离的一个原因是就应用样式而言,使得格式化的文本(例如,在列与列之间延伸的斜体部分)的连续延伸不需要在多个对象之间进行划分。在该情况下,在不违反树结构规则的情况下,单个斜体样式对象不会是两个列的子对象,因此单独的样式树是有用的。在图6所示的情况下,从第一行的末端延伸到第二行的中间的斜体将需要由两个单独的对象来表示,以保持层级结构。
因为结构树节点和格式化对象树节点二者保持公共内容流中的范围,因此应用可以容易地确定哪些结构对象产生每一个格式化对象(其范围与格式化对象的范围重叠的结构树对象)。因此,对于实现基于约束的样式(其中,将约束施加于经允许的格式化)而言,使用单独的样式对象树可能特别有用。这些约束的实施例包括必须存在于页面上的最小量的文本、内容的集合适合固定大小的框的要求或者示意图在参考示意图的文章的最小距离内的要求。在格式化完成之前,应用不能识别是否违反了这样的约束(例如,如果用黑体加粗,则文本更大,因此可能不能完全适合固定大小的框)。如果应用知道哪一些结构对象产生引起违反的格式化对象,则应用可以自动地调节这些结构的样式,直到满足约束为止。例如,在使用样式属性树应用格式化以后,在需要的情况下,可以压缩有关的文本或者减小图像的大小,直到由此产生的对象适合为止。
在XSL的实施例中,当在两个树之间进行变换时,不保持与第二树中的新创建的对象如何与第一树中的旧对象有关的信息—相反,仅存在将旧对象与新对象匹配的过程。当使用本文所描述的数据结构执行变换时,一些实施方式在另一个名字空间中定义了额外的属性以跟踪对象的索引范围。然后,格式化器可以了解对象的索引,并且使用相同的名字空间输出XSL格式化对象中的索引(或者仅在存储器中存储所有信息)。在一些实施方式中,使用XSL变换语言(XSLT)来完成变换。
虽然上面的部分描述了两种特定类型的对象树(文档结构树和样式属性树),但是本领域普通技术人员将认识到,这些模型仅是可以使用指向内容流的节点进行存储的很多不同类型的对象树的两个实施例。这种对象树的一个实施例是存储用于绘制文档的一组剪辑路径的剪辑路径树。剪辑路径是被定义为使得在忽略(即,删去)路径外的内容的同时绘制路径内的内容的路径。例如,页面将具有剪辑路径(从而防止绘制偏离页面的内容)。在该页面中,文本框可以具有剪辑路径和文本框中的框架中的图像等。这些剪辑路径(其可以动态地改变)可以被排列到参考绘制在剪辑路径中的内容的树结构中。
与定义布局(例如,给出对象的边界)的对象结构树相比,另一个实施例是与布局无关的高级语义文档树。这种文档树可以包括诸如文章对象(其可以跨越多个页面)、章节标题节点、书目收录节点(其可以包含题目节点、作者节点等)等的节点。在这种语义树中,段落对象可以跨越多个列或页面(并且可能不存在列对象或页面对象,这是因为它们是布局构造而不是语义构造)。然后,可以基于用户、设备或应用设置用多个不同的布局来对内容进行布局(例如,均布局在一个页面上、跨越多个页面、使用多个不同数量的列、使用不同的字体和其它样式等)。资料收集库是具有类似结构的XML格式的实施例。语义文档树的节点可以指向内容流,如同内容结构树的节点那样。
也可能存在额外的这种对象树。例如,跟踪不同的作者对文档的修订的修订树、用类似的方式设计注释的注释树、跟踪文档的不同部分的作者和作者组的作者树以及跟踪嵌套的搜索结果的搜索结果树(即,树的根作为原始搜索,子节点作为挖掘搜索)均是使用本文所描述的多个表示数据模型的可能的不同类型的对象树的实施例。
III、多个表示的示例性使用
上面的部分描述了由一些实施方式使用的文档的多个表示的实施例。如部分I和II中所述,一些实施方式存储内容流和一个或多个对象树(例如,作为文件或内存表示)来表示文档。这些对象树可以包括如部分I中所述的文档结构树和如部分II中所述的样式属性树或者其它对象树。可以用补充方式来使用这些不同的表示。下面的小节将描述不同表示的三个不同的使用:选择内容对象、导览文档并且转换文档的格式。
A、选择
选择内容对象(例如,词、文本行、段落等)是可以通过使用文档结构树和内容流的组合来非常高效地执行的过程。实际上,当文档的用户提供用于选择内容对象(例如,词、段落等)的输入时,显示文档的应用可以将用户输入与特定页面的特定x-y坐标进行关联,然后可以识别文档结构树中的与页面和坐标相对应的适合级别的节点。该节点指示内容所在的内容流中的范围。
图9示出了一些实施方式的这种词选择过程。该图示出了页面200,因此针对该文档生成的文档结构树400以及内容流300,如上文在部分I中所描述的。如在图9的左侧所示,光标905当前位于文档200中的词“pilowestan”之上。为了选择该词,用户执行词选择操作(例如,双击光标控制器、在触摸屏双点击词的显示或者不同的词选择输入操作)。
当用户输入该选择输入时,应用将该输入解析为特定的x-y坐标并且确定用户希望选择的内容结构的类型。如所述的,在所示的情况下,用户提供了用于选择词的输入。在一些情况下,用户将选择文本行或段落(例如,使用三击或三次点击、公共输入以进行段落选择)。用户可以按压和拖动光标(或者沿着触摸屏按压和拖动手指),在该情况下,将需要将选择的起始点解析为特定的字符。
如图所示,在图9的中心,该选择使应用导览对象树400以识别所选择的坐标处的词。从页面级到列级对对象树进行遍历(每一级将仅包括一个节点),然后按顺序搜索段落节点,直到找到边界包括所识别的坐标的段落为止。在所识别的段落节点内,对文本行节点进行搜索,直到找到边界包括所识别的坐标的文本行为止。在词级,通过搜索所识别的文本行的所有子节点(文本行中的词)以找到被选择的词的边界,来重复该过程。
如图所示,在该情况下,词节点910被识别为所选择的节点。该词对象存储参考内容流300的索引范围780-800。在图9中通过从节点910指向内容流300的箭头对这一点进行了指示。然后,在流中识别这些索引处的十六进制代码字符。因为索引是已知的,因此不需要从流的开头进行读取,因此可以快速地识别字符。
然后,显示文档的应用可以加亮所选择的词中的字符以指示该选择。图10示出了具有加亮的词1005的页面200。一些实施方式通过将图像滤波器应用于字符的显示或者通过修改字符的样式属性,来执行该加亮。
从这个节点来看,用户可以通过拖动***光标(例如,光标、触摸屏上的手指等)或者使用按键(例如,上档键(shift)+箭头)来扩展该选择。因为对流表示进行了排序,因此当选择范围包括额外的字符时,可以减小范围的起始索引(或者增大终止索引)以包括这些额外的字符并且适当地修改字符的显示。
如果用户对所选择的文本执行额外的操作,则应用可以切换回使用对象表示中的一个或两个。例如,如果用户将所选择的文本复制到虚拟剪贴板,则应用可以使用对象表示来转换所选择的部分的格式,如下面在小节III.C中详细描述的。如果用户将样式属性应用于文本(例如,用下划线表示文本),则将修改样式属性对象树。
不论应用访问哪一个树(即,与层级有关的对象集),应用可以容易地找到必要的对象,这是因为已经知道了对象(内容对象或样式对象)的索引范围,并且对对象树的约束确保了相邻字符出现在相邻的叶节点中(在树的深度优先排序中相邻)。例如,如果将起始索引减小2,则选择将被增加为包括“tageneutian”中的字符,其是“pilowestan”词节点的父节点的前一同级的后代。也即是说,应用将确定不存在词节点910的前一同级(这是因为它是文本行中的第一词),并且因此将上移到文本行节点439的前一同级。这是文本行节点438(流索引679-778),然后应用将找到该节点的最后的后代。
B、导览
在某些情况下,当用户导览文档时,文档的文档流表示和对象树表示的组合可以用于更高效的处理。当用户选择导览到文档的特定部分然后移动到相邻部分时,这两个表示的组合证明特别有用。这些过程可以特别可应用于用户可能不太希望通过滚动文档来进行导览的小屏幕设备(例如,智能电话)上,但是可以等同地应用于在任何电子设备上操作的应用。
图11概念性地示出了用于识别文档结构树中的表示用户希望导览到的文档中的结构的期望对象的一些实施方式的过程1100。将通过参考图12来部分地描述过程1100,图12示出了这种过程的特定的实施例。在图12中,用户搜索电子书1200中的特定章节标题,并且应用针对电子书使用文档结构树1205来识别针对电子书的内容流1210的索引范围。在一些实施方式中,由用于显示文档(例如,电子书)的应用(例如,PDF导览器、词处理应用、电子书阅读器等)执行过程1100。
如图所示,图12示出了针对电子书1200所存储的两个表示。第一表示是包括针对包括章节标题的书中的所有字符的表示(例如,用十六进制代码)的内容流表示1210。第二表示是文档结构树1205(即,分层安排的对象集)。该文档结构树中的对象将书划分为章节,章节的第一子对象将始终是标题对象。在标题之后是特定章节的段落。在一些实施方式中,标题对象是特定类型的段落对象(例如,具有指示其是标题的变量的段落对象)。
这些节点中的很多节点将具有子节点(文本行、原始字符等)。本领域普通技术人员将认识到,对于这种文档,其它文档结构模型是可能的。例如,章节节点的子节点将是页面节点,并且标题然后可以是每一个章节的第一页面节点的第一子节点。然而,因为可以设计电子书以以不同的分辨率在各种设备中的任意一种设备上进行显示,因此,页面针对其表示可能不是有用的构造。取而代之的是,应用将(使用针对章节及其子对象的流索引)识别章节中的内容,并且然后根据显示的约束来显示内容。
在图11中,如图所示,过程1100通过(在1105处)接收这级目标节点的规范开始。在图12的情况下,该目标是标题节点。该应用可以在用户(例如,通过选择针对搜索框的标题选项)选择在应用中呈现的用以搜索标题的选项时接收目标的规范。更具体地说,可以由用户通过直接指示或者通过语境线索来识别这级目标。如通过举例说明所指示的,被搜索的对象的规范在结构层级中可以不仅包括这级对象,还可以包括其在排序中的位置(例如,在该情况下,其级别处的第一同级)。该过程还(在1110处)接收目标节点的描述。在一些实施方式中,该描述可以是用户希望找到的文本(例如,“章节2的标题”)。例如,用户可以将特定文本输入到搜索框中,然后按压“搜索”用户界面项。
过程1100然后(在1115处)从满足规范的对象树的节点取回索引范围。在一些实施方式中,过程遍历树以找到第一这种节点。如所描述的,这些规范可以包括受欢迎对象以及额外的描述符(例如,对象是特定级别处的第一同级)的层级。例如,在图12的情况下,所取回的第一节点将是节点1215,即,针对第一章节标题的节点,这是因为这是作为第一同级的段落级别处的第一节点。然后,该过程(在1120处)使用所取回的索引范围来从流中取回内容。也即是说,该过程在由所识别的节点指定的索引处从流取回内容。在该情况下,所取回的内容是章节1的标题。
该过程(在1125处)确定从流取回的内容是否满足在1110处接收的目标描述。一些实施方式将所取回的内容的字符值与期望的内容的字符值进行比较,以确定这二者是否匹配。在图12的实施例中,第一章节标题将不与搜索的内容相匹配(当然,除非第一章节和第二章节具有相同的标题)。
当两个字符值不匹配时,过程(在1130处)从满足规范的对象树的另一个节点取回另一个索引范围,然后返回1120。因此,该过程使用对象树来按顺序快速地搜索仅匹配用户指示的规范的对象的内容。在该示例性的情况下,该过程将移动到第二章节对象的第一子对象(节点1220),并且取回针对第二章节标题的索引范围。在该情况下,该过程将发现搜索的标题项与针对章节2的章节标题之间的匹配。
当发现匹配时,该过程(在1135处)报告目标节点的位置。然后,该应用可以使用所识别的目标对象来执行不论所需的哪一种动作。在搜索章节标题的实施例中,应用通常将希望进行更多的操作,而不仅是显示标题。应用可以使用整个章节2的索引范围来访问流,并且考虑到用户选择的字体大小和样式,显示与适合电子书的显示区域一样多的所取回的内容。其它实施方式(例如,针对其它使用)将在所识别的目标节点的任意一侧上显示内容(例如,将目标节点的内容集中在显示器中央),并且可能在显示器中加亮目标自身。此外,一些实施方式可以执行非显示功能,例如,将目标对象的内容复制到虚拟剪贴板,存储参考目标对象的标记,等等。
C、格式转换
当文档处理应用将选择复制到剪贴簿(通常称作剪贴板)或者以其它方式将文档的一部分传递到另一个应用时,通常需要将文档转换为两个应用都理解的通用格式。例如,关于PDF文档的语义重构将产生针对任务所设计的对象树(例如,如US2010/0174985中所描述的,其在上文中通过引用的方式并入本文),但是当将选择复制到剪贴簿时,将该选择转换为HTML、RTF和/或纯文本以确保各种其它应用可以使用该信息。将文档输出为用户选择的格式仅是该转换过程的特殊情况,在这种情况下,要转换的选择是整个文档。
在多表示数据模型的一些实施方式中,将选择表示为内容流的非重叠的索引范围序列,其是以起始索引来排序的。该选择可以是文本搜索或其它查询的结果,或者可以由于用户指示屏幕上的区域的结果(例如,如在上文中在部分I.A中所描述的)。为了将选择转换为另一种格式,必须识别参与选择的节点,以适合的顺序来对它们进行遍历,并且针对每一个节点附加适合的输出。节点的转换通常取决于其类型,并且可以包括初始输出,然后转换包含在选择中的其子节点,并且然后进行最后的输出。
图13概念性地示出了用于使用双表示数据模型来将文档的一部分的选择转换为另一种格式的过程1300。将通过参照图14-15中所示的实施例来描述图13。图14示出了示例性的文档页面1400中的选择。图15示出了文档页面1400的示例性的对象树1510。对象树1510包括页面级根节点1520、段落级子节点1530-1532以及词级孙节点1541-1548。如上所述,不同的实施方式使用文档结构对象树中的不同级别的节点(例如,列节点、文本行节点等)。
图15还示出了由变换过程使用对象树1510产生的具有新的格式的示例性的输出流1550。输出流1550包括与对象树1510中的节点相对应的部分1551-1563。选择范围1405覆盖内容流中的索引185到468,其是通过对象树1510中的加亮节点(节点1520、1530、1532、1534和1543-1547)来参考的。覆盖选择范围的节点中的每一个使得数据的一个或多个部分附加到输出流1550(例如,节点1532使得选择1555和1558附加到输出流中)。
如图所示,图13的过程1300(在1310处)在其接收到文档的一部分的选择和关于需要转换选择的指示(例如,用户输入的复制操作、输出文档的指令等)时开始。如图14的实施例所示,用户已经选择了文档页面1400的从第一段落的最后一个词“comptory”到第三段落的第二词“strule”的选择1405(加亮部分),并且(例如,使用键盘上的“Ctrl-C”或“Cmd-C”、菜单选择等)对该选择进行复制。如果用户选择输出文档,则选择还可以是整个文档。此外,各个其它操作可以导致文档的一部分或整个文档的转换。
在一些实施方式中,这种选择被表示为非重叠的选择范围序列R1,R2...,RK,其中,在内容流中,任何Ri的范围在Ri+1的范围之前。当选择不相交时,选择可以包括多个非重叠的选择范围(例如,当选择是针对包括特定的短语的段落的一组搜索结果时)。该选择范围用于与存储在包含该选择的文档的对象树的节点中的索引的范围进行比较。在当前的选择范围Ri与当前的节点N之间执行每一个比较。在过程1300的整个操作中,一些实施方式保持并且更新针对当前的选择范围Ri的指针以及针对对象树中的当前节点N的指针。
过程1300接下来(在1302处)使对象树的根节点成为当前的节点N。在图15中所示的实施例中,对象树1510中的节点1515是根节点。该节点保持覆盖整个文档页面1400的索引范围。过程1300(在1304处)使该选择范围序列中的第一选择范围R1成为当前的选择范围。
在使根节点成为当前节点并且使第一选择范围成为当前选择范围以后,该过程(在1306处)将该选择范围序列转换为新的格式。在一些实施方式中,从作为当前节点的根节点和作为当前选择范围的第一选择范围开始,该操作递归地遍历数据模型的对象树的节点。在完成转换以后,该过程1300结束。图16a-16b概念性地示出了一些实施方式的执行这种递归转换操作的示例性的过程1600。在一些实施方式中,可以在过程1300的操作1306处执行过程1600。还将参照图14-15中所示的实施例来描述图16a-16b。
过程1600是递归地遍历对象树的节点以转换选择范围序列的递归过程。该过程1600是递归的,这是因为它包括执行过程1600自身的操作。过程1600继承(例如,通过诸如操作1300等的操作或者通过递归地调用过程1600的当前实例的过程1600的先前实例)先前已经设置的当前节点和当前选择范围。过程1600还继承从过程的前一实例保存的值或指针,例如,用于指示转换过程完成的保存的节点或标签。
过程1600通过(在1610处)将当前的选择范围与当前节点的范围进行比较而开始。如果当前选择的节点中的索引范围与当前的选择范围重叠(也即是说,当前选择的节点参考的内容是当前的选择范围中的所选择的内容的一部分),则过程1600前进至1612以以新的格式将数据附加到输出。如果当前的选择节点N中的索引范围未与当前的选择范围Ri重叠,则过程1600前进至1620。
在1620处,该过程确定当前的选择范围Ri是否在当前的节点N中存储的索引范围之前。因为以升序排列选择范围序列R1...RN,因此该过程去往该序列中的下一个选择范围Ri+1以寻找选择范围与当前节点之间的重叠。然而,如果当前的选择范围在当前节点的索引范围之后,则该过程必须等待对象树中的下一个节点,以寻找与选择范围的重叠。如果当前的选择范围Ri在当前的节点N中的范围之前,则过程1600前进至1630以移动到下一个选择范围Ri+1。如果当前的选择范围Ri不在当前的节点的范围之前(即,当前的选择范围在当前的节点的范围之后),则该过程返回以重新开始递归操作的前一级。
在1630处,该过程确定当前的选择范围Ri是否是最后一个选择范围RK。一些实施方式通过检查针对当前选择范围的指针并且确定这是否指向最后的范围来做出该确定。当当前的选择范围是序列中的最后一个选择范围时,选择范围已经完全转换,这是因为该过程已经遍历该对象树到达当前节点参考在所有的选择范围以后开始的内容的程度。通过施加在上文中在部分I中描述的对象树的排序和完成条件,使得该确定的确定性是可能的。在该情况下,该过程1600前进到1635以报告完成了选择范围的转换。另一方面,如果当前的选择范围不是最后一个选择范围,则该过程前进至1640。
当该过程已经转换了所有选择范围时,该过程(在1635处)报告完成选择过程的转换。在一些实施方式中,这是通过设置“完成”标签来完成的。一旦设置了该标签,过程1600就知道已经转换了整个选择,并且不需要进一步遍历对象树中的任何节点。在报告完成了选择范围的转换以后,该过程返回以重新开始递归操作的前一级(即,过程1600的各个实例可以开始结束)。
当仍然要转换更多的选择范围时,该过程(在1640处)使下一个选择范围Ri+1成为当前的选择范围。在一些实施方式中,这是通过将针对当前的选择范围的指针更新为参考Ri+1而不是Ri来完成的。在更新当前的选择范围以后,过程前进至1610以确定新的当前选择范围是否与当前节点中的范围重叠。
当过程1600确定当前的选择范围确实与当前节点参考的范围重叠时,过程(在1612处)根据新的格式(即,选择被转换至的格式)将初始输出添加到输出流。该初始输出是在向下遍历当前节点的子孙节点之前过程附加到输出流的数据。在一些实施方式中,该初始输出是由针对这种类型的节点的期望的输出格式确定的。例如,如果新的格式要求每一个段落的起始包括制表符,则与选择范围重叠的段落级节点将必须将制表符附加到输出流中。通常,初始输出将包括标签—例如,如果输出是HTML,则每一个段落将从HTML标签开始以开始段落(即,“<p>”以及段落的需要设置的任何属性)。在图15中所示的实施例中,当过程1600针对需要段落从制表符开始的段落的格式首先遇到段落级节点1532时,过程1600将把制表符附加到输出流1550作为部分1555的一部分。
在附加初始输出以后,过程(在1614处)保存当前的节点。当1600是将递归地遍历对象树中的当前节点的子孙节点的过程时,一些实施方式保存当前的节点(例如,通过将针对当前节点的指针“推送”到后入先出堆栈数据结构),因此可以在完成对当前节点子孙节点的遍历以后恢复当前节点。在保存当前的节点以后,过程前进至1650。
过程然后(在1650处)确定当前节点是否具有任何子节点。在一些实施方式中,不具有子节点的节点是树结构的叶节点。如果当前的节点是不具有子节点的叶节点,则该过程前进至1655以取回和输出与叶节点相关联的内容。另一方面,当当前的节点具有至少一个子节点时,该过程前进至1660以遍历当前节点的子节点中的每一个。
接下来,该过程(在1657处)从针对文档的排序的内容流取回与当前节点相关联的内容。在一些实施方式中,该过程使用存储在当前节点中的索引以用于从流表示取回相应的数据。在图15的实施例中,该过程使用存储在词级叶节点1545中的索引范围451-458以从文档页面1400的流表示取回词“twight”。在从流表示取回内容以后,该过程前进至1657。
然后,该过程(在1657处)将从流表示取回的内容附加到输出流。在图15的实施例中,在1657处,该过程将取回的词“twight”附加到输出流。在一些实施方式中,过程1600在针对节点的初始输出(在1612处附加的)以后并且在针对节点的最终输出(在1680处附加的)以前将所取回的内容附加到输出流。因为只有不具有子节点的叶节点执行操作1650和1657,因此过程1600仅针对叶节点从流表示取回内容并且将内容附加到输出流。在将内容附加到输出流以后,该过程前进至1680。
在一些实施方式中,过程针对叶节点和非叶节点二者从流表示取回内容。在生成针对非叶节点的输出的过程期间,一些实施方式确定在非叶节点的子节点的索引范围之间是否存在间隙。如上文在部分I中所讨论的,在一些实施方式中,应用严格的规则使得父节点的索引的范围必须等于其子节点的范围的联合(即,在子节点的索引范围之间不存在间隙)。然而,在其它实施方式中,放松该条件使得父节点的索引范围仅包含其子节点的范围的联合,使得可以在子节点的索引范围之间存在间隙。在一些这样的实施方式中,过程1600确定在针对其取回内容(在例如1655或1657处)的前一个索引范围与下一个节点之间是否存在间隙,并且确定该间隙是父节点内的间隙(与应当转换的内容中的间隙相反)。如果存在这种间隙,则该过程从内容流取回与间隙的索引范围相对应的内容,并且将所取回的内容附加到输出流中。
当将内容附加到输出流中而不是将从流表示取回的内容直接附加到输出流时,一些实施方式添加额外的内容或者根据指定的输出格式来变换该内容。例如,在包括先前在部分II中所讨论的样式树的一些实施方式中,过程根据样式树的节点变换要附加到输出流的内容。在这些实施方式中的一些实施方式中,该过程找出样式树中的与当前节点的范围相交的节点,并且根据这些重叠的样式树节点中指定的范围来将样式应用于当前节点的内容。在父节点中的的索引的范围是子节点的索引的范围的联合的一些实施方式中,该过程检查样式树中的所有叶节点以确定要附加的内容的样式。在叶节点不包括索引的整个范围而是如先前在部分II中所讨论的在索引范围之间留下“间隙”的一些其它实施方式中,该过程通过检查样式树中的父节点的样式,来推断落入这些“间隙”中的内容的样式。
当存在当前节点的至少一个子节点时,过程(在1650处)将当前节点的第一子节点设置为新的当前节点。第一子节点是包含其同级的索引的最低范围的子节点。在一些实施方式中,在以起始索引排序的阵列中排列子节点,并且可以将第一子节点识别为阵列中的第一节点。在一些实施方式中,该过程更新指向第一子节点的当前节点指针。
接下来,过程1600(在1670处)通过前进至1610,通过针对子节点(即,新的当前节点)递归地执行相同的选择转换过程来遍历子节点。这是发起过程1600的新一级的递归操作的递归调用(实质上重新开始过程1600的实例化,当完成该过程1600时,该过程将返回过程的当前实例化(即,1672))。在已经针对子节点完成了选择转换过程以后,在当前级处,该新一级的递归操作将返回操作1672。本领域普通技术人员将认识到,如果被遍历的子节点具有其自己的子节点,则新调用的过程可以递归地调用另一级过程,并且本领域普通技术人员将认识到,这些子节点也可以调用另一级过程,以此类推,直到已经遍历了处于选择范围内的当前节点的叶节点为止。
当过程1600的特定实例化返回(从递归调用返回到遍历子节点的实例化)时,过程(在1672处)确定是否完成了选择范围的转换。如先前所述,过程1600在已经完全转换了该选择时完成。在已经转换了最后一个选择范围以后,这些实例中的过程1600存储关于指示完成了选择转换因此该过程不再遍历额外的子节点的指示(例如,通过在1635处设置“完成”标签)。如果完成了该选择范围的转换(即,设置了“完成”标签),则该过程前进至1680。如果为否,则该过程前进至1674。
当还未完全转换该选择范围时,过程(在1674处)确定在当前的节点下是否存在要遍历的额外的子节点。在一些实施方式中,过程确定当当前的节点指针当前参考最后一个子节点(例如,子节点阵列中的最后一个节点)时不存在要遍历的更多的子节点。当已经遍历了当前的节点的所有子节点时,该过程前进至1680。
另一方面,当仍然要遍历额外的子节点时,该过程(在1676处)将下一个子节点设置为当前节点。如所陈述的,一些实施方式将一组同级节点(例如,当前节点的子节点)排列在阵列中,使得下一个子节点可以被识别为阵列中的下一个节点。在已经将当前的节点更新为下一个子节点以后,过程前进至1670以通过递归地执行相同的选择转换过程来遍历下一个子节点。
一旦过程1600已经接收到关于选择范围的转换完成或者不存在要转换的更多的子节点的指示,该过程1600就(在1680处)根据期望的新格式将最后的输出附加到输出流。该最后的输出是在当前节点的子孙节点均被遍历(或者当已经完全转换了该选择范围时)以后将附加到针对当前节点的输出流的数据。在一些实施方式中,该最后的输出是由针对节点类型的期望的输出格式来确定的。例如,如果新的格式要求每一个段落的结尾包括回车,则与选择范围重叠的段落级节点将必须将回车字符附加到输出流中。在图15中所示的实施例中,当过程1600已经针对需要段落以回车字符结束的格式完成了对段落级节点1532的所有子孙节点的遍历时,过程1600将把回车字符附加到输出流1550作为部分1558的一部分。
接下来,过程(在1690处)将最近保存的节点恢复为当前节点(例如,通过从后进先出堆栈数据结构“取出”保存的指针)。在将当前节点恢复为先前保存的节点以后,该过程返回以重新开始前一级递归操作。该前一级递归操作将是其中新的当前节点(刚从堆栈中取出的节点)是当前节点的实例,通过该当前节点调用当前级的递归操作。
在多个位置处,将过程1600描述为返回以重新开始前一级递归操作。在一些实施方式中,过程1600通过前进至刚好在递归操作以后执行的操作,来重新开始前一级递归操作。例如,操作1670是递归地执行过程1600的操作。在完成操作1670以后,过程1600然后在下一操作1672处重新开始。如果从图13的1306开始进入操作1600,则前一级递归操作是过程1300,其在1306以后结束。
针对过程1300和1600的描述对来自流上的对象模型的数据的选择到新的流(例如,HTML文件)的转换进行了描述。一些实施方式使用类似的过程以在字符流上的一个对象模型与相同的流上的不同的对象模型之间执行转换。在一些实施方式中,这种转换过程使用初始输出和最终输出来定义树的节点(例如,在XML中)。不是将来自字符流的内容附加到初始输出与最终输出之间,而是可以将范围(与第一对象模型相同的范围集或者不同的范围集)用作存储在新的对象模型的节点中的信息。
一些实施方式使用XSLT编程语言来执行这些变换,这是因为该语言允许在几乎任何对象模型对之间进行变换。例如,所描述的转换过程的变形可以用于对表格执行查询(例如,呈现具有根据给定的标准重新排列的行的表格)。第二实施例将采用对象树并且将该树转换为图形(例如,SVG对象树)。
IV、电子***
上述特征和应用中的很多被实现为指定为记录在计算机可读存储介质(也称作计算机可读介质)上的一组指令的软件进程。当由一个或多个可计算单元或处理单元(例如,一个或多个处理器、处理器的内核或者其它处理单元)来执行这些指令时,这些指令使处理单元来执行在指令中指示的动作。计算机可读介质的实施例包括但不限于:CD-ROM、闪存驱动器、随机存取存储器(RAM)芯片、硬盘驱动器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等。计算机可读介质不包括载波和或者无线地或者通过有线连接而传递的电子信号。
在该说明书中,术语“软件”意味着包括位于只读存储器中的固件或存储在可以读入存储器中以由处理器处理的磁性存储设备中的应用。此外,在一些实施方式中,多个软件发明可以实现为更大的程序的子部分同时仍然保持不同的软件发明。在一些实施方式中,多个软件发明也可以实现为单独的程序。最后,一起实现这里描述的软件发明的单独的程序的任意组合落入本发明的范围内。在一些实施方式中,当安装软件程序以在一个或多个电子***上操作时,这些软件程序定义执行并运行软件程序的操作的一个或多个特定的机器实现。
图17概念性地示出了实现本发明的一些实施方式所使用的电子***1700。电子***1700可以是计算机(例如,台式计算机、个人计算机、平板计算机等)、电话、PDA或者任何其它类别的电子设备。这种电子***包括各种类型的计算机可读介质和针对各种其它类型的计算机可读介质的接口。电子***1700包括总线1705、处理单元1710、图形处理单元(GPU)1715、***存储器1720、网络1725、只读存储器1730、持久性存储设备1735、输入设备1740和输出设备1745。
总线1705共同表示通信地连接电子***1700的大量内部设备的所有***、***设备和芯片集总线。例如,总线1705通信地将处理单元1710与只读存储器1730、GPU1715、***存储器1720和永久性存储设备1735相连接。
通过这些各个存储器单元,处理单元1710取回要执行的指令和要处理的数据以便执行本发明的过程。在不同的实施方式中,处理单元可以是单个处理器或者多核处理器。将一些指令传递给GPU1715并且由GPU1715来执行。GPU1715可以卸载各个计算或补充由处理单元1710提供的图像处理。在一些实施方式中,可以使用Corelmage的内核着色语言来提供这些功能。
只读存储器(ROM)1730存储处理单元1710和电子***的其它模块所需的静态数据和指令。另一方面,永久性存储设备1735是读写存储设备。该设备是即使当电子***1700关闭时也存储指令和数据的非易失性存储单元。本发明的一些实施方式使用大容量设备(例如,磁盘或光盘及其相应的磁盘驱动器)作为永久性存储设备1735。
其它实施方式使用可移除的存储设备(例如,软盘、闪存设备等及其相应的驱动器)作为永久性存储设备。与永久性存储设备1735类似,***存储器1720是读写存储设备。然而,与存储设备1735不同,***存储器1720是易失性读写存储器,例如,随机存取存储器。***存储器1720存储处理器在运行时所需的指令和数据中的一些。在一些实施方式中,发明的过程被存储在***存储器1720、永久性存储设备1735和/或只读存储器1730中。例如,各个存储单元包括用于根据一些实施方式处理多媒体剪辑的指令。通过这些各个存储单元,处理单元1710取回要执行的指令和要处理的数据,以执行一些实施方式的过程。
总线1705还连接到输入设备1740和输出设备1745。输入设备1740使用户能够向电子***传送信息和选择去往电子***的命令。输入设备1740包括字母数字键盘和点选设备(还称作“光标控制设备”)、照相机(例如,网络摄像头)、麦克风或用于接收语音命令的类似设备等。输出设备1745显示由电子***生成的图像或者其它方式的输出数据。输出设备1745包括打印机和显示设备(例如,阴极射线管(CRT)或液晶显示器(LCD))以及扬声器或类似的音频输出设备。一些实施方式包括诸如触摸屏等的用作输入设备和输出设备二者的设备。
最后,如图17所示,总线1705还通过网络适配器(未示出)将电子***1700耦合到网络1725。通过这种方式,计算机可以是计算机的网络(例如,局域网(“LAN”)、广域网(“WAN”)或内联网)或者网络的网络(例如,互联网)的一部分。电子***1700的任意组件或全部组件可以与本发明联合使用。
一些实施方式包括电子组件,例如,微处理器、存储设备和在机器可读介质或计算机可读介质(可替换地称作计算机可读存储介质、机器可读介质或机器可读存储介质)中存储计算机程序指令的存储器。这些计算机可读介质的一些实施例包括RAM、ROM、只读压缩光盘(CD-ROM)、可记录压缩光盘(CD-R)、可写压缩光盘(CD-RW)、只读数字多功能光盘(例如,DVD-ROM、双层DVD-ROM)、各种可记录/可写入DVD(例如,DVD-RAM、DVD-RW、DVD+RW等)、闪存(例如,SD卡、迷你SD卡、微型SD卡等)、磁性和/或固态硬盘驱动器、只读和可记录蓝光光盘、超密度光盘、任何其它光学或磁性介质和软盘。计算机可读介质可以存储可以由至少一个处理单元执行的计算机程序并且包括用于执行各个操作的指令集。计算机程序或计算机代码的实施例包括例如由编译器产生的磁性代码和包括高级代码的文件,这些文件由计算机、电子组件或微处理器使用解释器来执行。
虽然上面的讨论主要涉及执行软件的微处理器或多核处理器,但是一些实施方式由一个或多个集成电路(例如,专用集成电路(ASIC)或现场可编程门阵列(FPGA))来执行。在一些实施方式中,这些集成电路执行存储在电路自身上的指令。此外,一些实施方式执行存储在可编程逻辑设备(PLD)、ROM或RAM设备中的软件。
如本说明书和本申请的任何权利要求中所使用的,术语“计算机”、“服务器”“处理器”和“存储器”均是指电子设备或其它技术设备。这些术语不包括人或人群。为了说明书的目的,术语显示或进行显示意味着在电子设备上进行显示。如本说明书和本申请的任何权利要求中所使用的,术语“计算机可读介质”、“计算机可读介质”和“机器可读介质”被完全限制于以计算机可读的形式存储信息的有形的物理对象。这些术语不包括任何无线信号、有线下载信号和任何其它瞬时信号。
虽然已经参照多个具体细节描述了本发明,但是本领域普通技术人员将认识到,可以在不偏离本发明的精神的情况下以其它具体形式来体现本发明。此外,多个附图(其包括图11、图13和图16)概念性地示出了这些过程。可以不用所示出和所描述的精确顺序来执行这些过程的具体操作。可以不用一个连续的操作序列来执行具体操作,并且在不同的实施方式中,可以执行不同的具体操作。此外,可以使用多个子过程或者较大的宏过程的一部分来执行该过程。因此,本领域普通技术人员将理解的是,本发明不受前述示例性的细节的限制,而是将由所附权利要求进行限定。
Claims (24)
1.一种用于存储文档的方法,所述方法包括:
存储所述文档的内容流表示,所述内容流表示包括所述文档的原始元素的代码表示的排序流,原始元素的每一个代码表示具有指示所述原始元素表示在所述内容流中的顺序的索引;以及
存储所述文档的对象表示,所述对象表示包括排列在分层树结构中的一组对象节点,所述分层树结构表示所述文档的分层结构,每一个对象节点参考所述内容流中的索引的范围,其中不同的文档处理操作不同地使用所述内容流和对象表示。
2.根据权利要求1所述的方法,其中,所述内容流表示和所述对象表示中的至少一个是针对所述文档的内存表示。
3.根据权利要求1所述的方法,其中,所述内容流表示和所述对象表示中的至少一个是针对所述文档的文件格式表示。
4.根据权利要求1所述的方法,其中,所述原始元素的所述代码表示是基于所述文档中的原始元素的读取顺序来排序的。
5.根据权利要求1所述的方法,其中,由所述树结构中的任何对象节点所参考的索引的范围是单个连续范围。
6.根据权利要求1所述的方法,其中,所述对象节点排列在所述分层树结构中,其中,第一对象节点作为不具有父对象节点的根对象节点,并且每一个其它对象节点具有单个父对象节点。
7.根据权利要求6所述的方法,其中,任何父对象节点的索引的范围是其子对象节点的索引的范围的联合。
8.根据权利要求6所述的方法,其中,任何父对象节点的索引的范围包含其子对象节点的索引的范围的联合。
9.根据权利要求6所述的方法,其中,针对任何两个同级对象节点的索引的范围是不相交的。
10.根据权利要求6所述的方法,其中,当第一对象节点是第二对象节点的前一同级时,所述第一对象节点的索引的范围的起始索引小于所述第二对象节点的索引的范围的起始索引。
11.一种存储文档的方法,该方法包括:
存储所述文档的内容流表示,所述内容流表示包括所述文档的原始元素的代码表示的排序流,原始元素的每一个代码表示具有指示所述原始元素表示在所述内容流中的顺序的索引;以及
存储所述文档的第一对象表示,所述第一对象表示包括排列在树结构中的对象节点集,每个对象节点参考所述内容流中的索引的范围;以及
存储所述文档的不同的第二对象表示,所述第二对象表示包括排列在第二树结构中的第二对象节点集,第二对象表示中的每个对象节点也参考所述内容流中的索引的范围。
12.根据权利要求11所述的方法,其中,所述第一对象表示是其中所述对象节点表示分层文档结构的文档结构表示,并且所述第二对象表示是其中所述对象节点表示样式属性的样式属性表示。
13.根据权利要求11所述的方法,其中,由任何树结构中的任何对象节点参考的索引的范围是在所述文档的内容流表示内的单个连续范围。
14.一种用于存储文档的设备,包括:
用于存储所述文档的内容流表示的装置,所述内容流表示包括所述文档的原始元素的代码表示的排序流,原始元素的每一个代码表示具有指示所述原始元素表示在所述内容流中的顺序的索引;以及
用于存储所述文档的对象表示的装置,所述对象表示包括排列在分层树结构中的一组对象节点,所述分层树结构表示所述文档的分层结构,每一个对象节点参考所述内容流中的索引的范围,其中不同的文档处理操作不同地使用所述内容流和对象表示。
15.根据权利要求14所述的设备,其中,所述内容流表示和所述对象表示中的至少一个是针对所述文档的内存表示。
16.根据权利要求14所述的设备,其中,所述内容流表示和所述对象表示中的至少一个是针对所述文档的文件格式表示。
17.根据权利要求14所述的设备,其中,所述原始元素的所述代码表示是基于所述文档中的原始元素的读取顺序来排序的。
18.根据权利要求14所述的设备,其中,由所述树结构中的任何对象节点所参考的索引的范围是单个连续范围。
19.根据权利要求14所述的设备,其中,所述对象节点排列在所述分层树结构中,其中,第一对象节点作为不具有父对象节点的根对象节点,并且每一个其它对象节点具有单个父对象节点。
20.根据权利要求19所述的设备,其中,任何父对象节点的索引的范围是其子对象节点的索引的范围的联合。
21.根据权利要求19所述的设备,其中,任何父对象节点的索引的范围包含其子对象节点的索引的范围的联合。
22.一种用于存储文档的设备,包括:
用于存储所述文档的内容流表示的装置,所述内容流表示包括所述文档的原始元素的代码表示的排序流,原始元素的每一个代码表示具有指示所述原始元素表示在所述内容流中的顺序的索引;以及
用于存储所述文档的第一对象表示的装置,所述第一对象表示包括排列在树结构中的对象节点集,每个对象节点参考所述内容流中的索引的范围;以及
用于存储所述文档的不同的第二对象表示的装置,所述第二对象表示包括排列在第二树结构中的第二对象节点集,第二对象表示中的每个对象节点也参考所述内容流中的索引的范围。
23.根据权利要求22所述的设备,其中,所述第一对象表示是其中所述对象节点表示分层文档结构的文档结构表示,并且所述第二对象表示是其中所述对象节点表示样式属性的样式属性表示。
24.根据权利要求22所述的设备,其中,第一组文档处理操作使用所述第一对象表示和所述内容流表示的组合执行,并且,第二组文档处理操作使用所述第二对象表示和所述内容流表示的组合执行。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161433951P | 2011-01-18 | 2011-01-18 | |
US201161433963P | 2011-01-18 | 2011-01-18 | |
US61/433,963 | 2011-01-18 | ||
US61/433,951 | 2011-01-18 | ||
US13/106,813 US8442998B2 (en) | 2011-01-18 | 2011-05-12 | Storage of a document using multiple representations |
US13/106,813 | 2011-05-12 | ||
PCT/US2012/021386 WO2012099802A1 (en) | 2011-01-18 | 2012-01-13 | Storage of a document using multiple representations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103329122A CN103329122A (zh) | 2013-09-25 |
CN103329122B true CN103329122B (zh) | 2015-07-08 |
Family
ID=46491579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280005666.5A Active CN103329122B (zh) | 2011-01-18 | 2012-01-13 | 使用多个表示的文档存储 |
Country Status (8)
Country | Link |
---|---|
US (2) | US8442998B2 (zh) |
EP (1) | EP2666105B1 (zh) |
JP (1) | JP5612227B2 (zh) |
KR (1) | KR101374994B1 (zh) |
CN (1) | CN103329122B (zh) |
AU (1) | AU2012207560B2 (zh) |
CA (1) | CA2823396C (zh) |
WO (1) | WO2012099802A1 (zh) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9092636B2 (en) | 2008-11-18 | 2015-07-28 | Workshare Technology, Inc. | Methods and systems for exact data match filtering |
KR20100074565A (ko) * | 2008-12-24 | 2010-07-02 | 삼성전자주식회사 | 썸네일 변경 방법 및 인쇄제어장치 |
US10783326B2 (en) | 2013-03-14 | 2020-09-22 | Workshare, Ltd. | System for tracking changes in a collaborative document editing environment |
US11030163B2 (en) | 2011-11-29 | 2021-06-08 | Workshare, Ltd. | System for tracking and displaying changes in a set of related electronic documents |
US20120136862A1 (en) | 2010-11-29 | 2012-05-31 | Workshare Technology, Inc. | System and method for presenting comparisons of electronic documents |
US8442998B2 (en) | 2011-01-18 | 2013-05-14 | Apple Inc. | Storage of a document using multiple representations |
US10574729B2 (en) | 2011-06-08 | 2020-02-25 | Workshare Ltd. | System and method for cross platform document sharing |
US10963584B2 (en) | 2011-06-08 | 2021-03-30 | Workshare Ltd. | Method and system for collaborative editing of a remotely stored document |
US9170990B2 (en) | 2013-03-14 | 2015-10-27 | Workshare Limited | Method and system for document retrieval with selective document comparison |
US9613340B2 (en) | 2011-06-14 | 2017-04-04 | Workshare Ltd. | Method and system for shared document approval |
US10880359B2 (en) | 2011-12-21 | 2020-12-29 | Workshare, Ltd. | System and method for cross platform document sharing |
US8910039B2 (en) * | 2011-09-09 | 2014-12-09 | Accenture Global Services Limited | File format conversion by automatically converting to an intermediate form for manual editing in a multi-column graphical user interface |
US8949281B2 (en) * | 2012-03-31 | 2015-02-03 | Emc Corporation | System and method of hierarchical data containers |
US9292192B2 (en) * | 2012-04-30 | 2016-03-22 | Blackberry Limited | Method and apparatus for text selection |
US9208254B2 (en) * | 2012-12-10 | 2015-12-08 | Microsoft Technology Licensing, Llc | Query and index over documents |
KR101993835B1 (ko) * | 2013-02-25 | 2019-06-27 | 삼성전자주식회사 | 스택 관리를 위한 방법 및 장치 |
US11567907B2 (en) * | 2013-03-14 | 2023-01-31 | Workshare, Ltd. | Method and system for comparing document versions encoded in a hierarchical representation |
US20140380142A1 (en) * | 2013-06-20 | 2014-12-25 | Microsoft Corporation | Capturing website content through capture services |
US10911492B2 (en) | 2013-07-25 | 2021-02-02 | Workshare Ltd. | System and method for securing documents prior to transmission |
CN103472998B (zh) | 2013-09-27 | 2017-03-15 | 小米科技有限责任公司 | 一种选取文字的方法、装置和终端设备 |
US9377949B2 (en) | 2013-09-27 | 2016-06-28 | Xiaomi Inc. | Method and terminal device for selecting character |
US10482194B1 (en) * | 2013-12-17 | 2019-11-19 | EMC IP Holding Company LLC | Simulation mode modification management of embedded objects |
US11182551B2 (en) | 2014-12-29 | 2021-11-23 | Workshare Ltd. | System and method for determining document version geneology |
US10133723B2 (en) | 2014-12-29 | 2018-11-20 | Workshare Ltd. | System and method for determining document version geneology |
US10394773B2 (en) | 2015-01-02 | 2019-08-27 | International Business Machines Corporation | Determining when a change set was delivered to a workspace or stream and by whom |
US10360294B2 (en) * | 2015-04-26 | 2019-07-23 | Sciome, LLC | Methods and systems for efficient and accurate text extraction from unstructured documents |
US10394949B2 (en) * | 2015-06-22 | 2019-08-27 | Microsoft Technology Licensing, Llc | Deconstructing documents into component blocks for reuse in productivity applications |
US11763013B2 (en) | 2015-08-07 | 2023-09-19 | Workshare, Ltd. | Transaction document management system and method |
US20170322732A1 (en) * | 2016-05-04 | 2017-11-09 | Nasdaq Technology Ab | Computer systems and methods for implementing in-memory data structures |
CN107391535B (zh) * | 2017-04-20 | 2021-01-12 | 创新先进技术有限公司 | 在文档应用中搜索文档的方法及装置 |
CN107632969B (zh) * | 2017-08-17 | 2024-03-29 | 珠海云游道科技有限责任公司 | 用于管理信息***的文档生成方法及装置 |
CN109933752B (zh) * | 2017-12-15 | 2023-05-30 | 北京京东尚科信息技术有限公司 | 一种导出电子文档的方法和装置 |
US10783012B2 (en) | 2018-04-20 | 2020-09-22 | CopyBucket, Inc. | Systems and methods for efficient inter-device data exchange |
CN111475679B (zh) * | 2019-01-24 | 2023-06-23 | 腾讯科技(深圳)有限公司 | Html文档处理方法、页面显示方法和设备 |
CN110377884B (zh) * | 2019-06-13 | 2023-03-24 | 北京百度网讯科技有限公司 | 文档解析方法、装置、计算机设备及存储介质 |
US11570099B2 (en) | 2020-02-04 | 2023-01-31 | Bank Of America Corporation | System and method for autopartitioning and processing electronic resources |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0370778A2 (en) * | 1988-11-21 | 1990-05-30 | Xerox Corporation | Method for manipulating digital text data |
CN101231657A (zh) * | 2007-01-26 | 2008-07-30 | 国际商业机器公司 | 用于访问数据的方法以及数据处理*** |
CN101490666A (zh) * | 2006-07-10 | 2009-07-22 | 微软公司 | 对齐分层和顺序文档树以标识并行数据 |
Family Cites Families (79)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2855797B2 (ja) | 1990-06-15 | 1999-02-10 | 富士ゼロックス株式会社 | 文書処理装置 |
JPH0594433A (ja) | 1991-10-02 | 1993-04-16 | Fuji Xerox Co Ltd | 文書処理装置 |
US5680479A (en) | 1992-04-24 | 1997-10-21 | Canon Kabushiki Kaisha | Method and apparatus for character recognition |
JPH06214983A (ja) | 1993-01-20 | 1994-08-05 | Kokusai Denshin Denwa Co Ltd <Kdd> | 文書画像の論理構造化文書への変換方法および装置 |
US5848184A (en) | 1993-03-15 | 1998-12-08 | Unisys Corporation | Document page analyzer and method |
JP3302147B2 (ja) | 1993-05-12 | 2002-07-15 | 株式会社リコー | 文書画像処理方法 |
JP3349787B2 (ja) | 1993-10-15 | 2002-11-25 | 株式会社ソニー・コンピュータエンタテインメント | 描画データ作成装置及び描画データ作成方法 |
JP2618832B2 (ja) | 1994-06-16 | 1997-06-11 | 日本アイ・ビー・エム株式会社 | 文書の論理構造の解析方法及びシステム |
AUPM704394A0 (en) | 1994-07-25 | 1994-08-18 | Canon Information Systems Research Australia Pty Ltd | Optimization method for the efficient production of images |
US5537628A (en) | 1994-08-29 | 1996-07-16 | Microsoft Corporation | Method for handling different code pages in text |
US5987171A (en) | 1994-11-10 | 1999-11-16 | Canon Kabushiki Kaisha | Page analysis system |
US5689585A (en) | 1995-04-28 | 1997-11-18 | Xerox Corporation | Method for aligning a text image to a transcription of the image |
US5848186A (en) | 1995-08-11 | 1998-12-08 | Canon Kabushiki Kaisha | Feature extraction system for identifying text within a table image |
JPH0969101A (ja) | 1995-08-31 | 1997-03-11 | Hitachi Ltd | 構造化文書生成方法および装置 |
US5841900A (en) | 1996-01-11 | 1998-11-24 | Xerox Corporation | Method for graph-based table recognition |
JP3061765B2 (ja) | 1996-05-23 | 2000-07-10 | ゼロックス コーポレイション | コンピュータベースの文書処理方法 |
US5956737A (en) | 1996-09-09 | 1999-09-21 | Design Intelligence, Inc. | Design engine for fitting content to a medium |
US6512848B2 (en) | 1996-11-18 | 2003-01-28 | Canon Kabushiki Kaisha | Page analysis system |
US6175844B1 (en) | 1997-05-29 | 2001-01-16 | Adobe Systems Incorporated | Ordering groups of text in an image |
US6687404B1 (en) | 1997-06-20 | 2004-02-03 | Xerox Corporation | Automatic training of layout parameters in a 2D image model |
US7237193B1 (en) | 1997-07-29 | 2007-06-26 | Symantec Corporation | Unified program for simultaneously displaying graphically-editable graphics presentation and linguistically-editable linguistic definition of the graphics presentation and for synchronizing the graphics presentation and the linguistic definition to one another |
US6562077B2 (en) | 1997-11-14 | 2003-05-13 | Xerox Corporation | Sorting image segments into clusters based on a distance measurement |
US6092092A (en) | 1998-03-13 | 2000-07-18 | International Business Machines Corporation | Gap-based style-run array mechanism |
US6504544B1 (en) | 1999-07-30 | 2003-01-07 | Curl Corporation | Processing layout of text graphical objects |
JP2001101170A (ja) * | 1999-10-01 | 2001-04-13 | Fuji Xerox Co Ltd | 情報管理装置 |
US7249318B1 (en) | 1999-11-08 | 2007-07-24 | Adobe Systems Incorporated | Style sheet generation |
US6910182B2 (en) | 2000-01-31 | 2005-06-21 | Xmlcities, Inc. | Method and apparatus for generating structured documents for various presentations and the uses thereof |
US6938204B1 (en) | 2000-08-31 | 2005-08-30 | International Business Machines Corporation | Array-based extensible document storage format |
AUPR063400A0 (en) | 2000-10-06 | 2000-11-02 | Canon Kabushiki Kaisha | Xml encoding scheme |
US7260777B2 (en) | 2001-08-17 | 2007-08-21 | Desknet Inc. | Apparatus, method and system for transforming data |
US8230323B2 (en) | 2000-12-06 | 2012-07-24 | Sra International, Inc. | Content distribution system and method |
JP3943830B2 (ja) * | 2000-12-18 | 2007-07-11 | 株式会社東芝 | 文書合成方法および文書合成装置 |
FR2820563B1 (fr) | 2001-02-02 | 2003-05-16 | Expway | Procede de compression/decompression d'un document structure |
US7080318B2 (en) | 2001-02-28 | 2006-07-18 | Koninklijke Philips Electronics N.V. | Schema, syntactic analysis method and method of generating a bit stream based on a schema |
US7565605B2 (en) | 2001-05-08 | 2009-07-21 | Nokia, Inc. | Reorganizing content of an electronic document |
WO2003009177A1 (en) | 2001-07-16 | 2003-01-30 | Dh Labs, Inc. | Web site application development method using object model for managing web-based content |
JP2003288334A (ja) | 2002-03-28 | 2003-10-10 | Toshiba Corp | 文書処理装置及び文書処理方法 |
US7356764B2 (en) | 2002-04-24 | 2008-04-08 | Intel Corporation | System and method for efficient processing of XML documents represented as an event stream |
US20040003349A1 (en) | 2002-06-28 | 2004-01-01 | Microsoft Corporation | Content segments |
US20060104511A1 (en) | 2002-08-20 | 2006-05-18 | Guo Jinhong K | Method, system and apparatus for generating structured document files |
DE10337825A1 (de) | 2002-11-15 | 2004-06-03 | Siemens Ag | Verfahren zur Erzeugung eines Bitstroms aus einem Indizierungsbaum |
US7272258B2 (en) | 2003-01-29 | 2007-09-18 | Ricoh Co., Ltd. | Reformatting documents using document analysis information |
US7313754B2 (en) | 2003-03-14 | 2007-12-25 | Texterity, Inc. | Method and expert system for deducing document structure in document conversion |
US7305612B2 (en) | 2003-03-31 | 2007-12-04 | Siemens Corporate Research, Inc. | Systems and methods for automatic form segmentation for raster-based passive electronic documents |
JP2004334382A (ja) * | 2003-05-02 | 2004-11-25 | Ricoh Co Ltd | 構造化文書要約装置、プログラムおよび記録媒体 |
US7890852B2 (en) | 2003-06-26 | 2011-02-15 | International Business Machines Corporation | Rich text handling for a web application |
US7428700B2 (en) | 2003-07-28 | 2008-09-23 | Microsoft Corporation | Vision-based document segmentation |
US7171618B2 (en) | 2003-07-30 | 2007-01-30 | Xerox Corporation | Multi-versioned documents and method for creation and use thereof |
US7554689B2 (en) | 2003-10-15 | 2009-06-30 | Canon Kabushiki Kaisha | Document layout method |
JP2005149269A (ja) | 2003-11-18 | 2005-06-09 | Hitachi Systems & Services Ltd | 構造化文書の処理システム |
JP4012140B2 (ja) | 2003-11-20 | 2007-11-21 | キヤノン株式会社 | 画像処理装置、情報処理装置及びそれらの制御方法、プログラム |
US7386789B2 (en) | 2004-02-27 | 2008-06-10 | Hewlett-Packard Development Company, L.P. | Method for determining logical components of a document |
US7584422B2 (en) | 2004-07-12 | 2009-09-01 | Informatica Corporation | System and method for data format transformation |
US8375293B2 (en) | 2005-01-09 | 2013-02-12 | Apple Inc. | Method and apparatus for defining documents |
US7693848B2 (en) | 2005-01-10 | 2010-04-06 | Xerox Corporation | Method and apparatus for structuring documents based on layout, content and collection |
US7543229B2 (en) | 2005-04-14 | 2009-06-02 | Hewlett-Packard Development Company, L.P. | Analysis of graphic design material |
US7386558B2 (en) | 2005-04-22 | 2008-06-10 | Microsoft Corporation | Methods and systems for filtering an Extensible Application Markup Language (XAML) file to facilitate indexing of the logical content contained therein |
US8302002B2 (en) | 2005-04-27 | 2012-10-30 | Xerox Corporation | Structuring document based on table of contents |
US7392473B2 (en) | 2005-05-26 | 2008-06-24 | Xerox Corporation | Method and apparatus for determining logical document structure |
US7697757B2 (en) | 2005-06-15 | 2010-04-13 | Hewlett-Packard Development Company, L.P. | Computer assisted document modification |
JP2006350867A (ja) | 2005-06-17 | 2006-12-28 | Ricoh Co Ltd | 文書処理装置、文書処理方法、プログラム及び情報記録媒体 |
GB2428114A (en) | 2005-07-08 | 2007-01-17 | William Alan Hollingsworth | Data Format Conversion System |
US7613996B2 (en) | 2005-08-15 | 2009-11-03 | Microsoft Corporation | Enabling selection of an inferred schema part |
US7676741B2 (en) | 2006-01-31 | 2010-03-09 | Microsoft Corporation | Structural context for fixed layout markup documents |
US7623710B2 (en) | 2006-02-14 | 2009-11-24 | Microsoft Corporation | Document content and structure conversion |
CN101055578A (zh) | 2006-04-12 | 2007-10-17 | 龙搜(北京)科技有限公司 | 基于规则的文档内容挖掘器 |
CN101055577A (zh) | 2006-04-12 | 2007-10-17 | 龙搜(北京)科技有限公司 | 可扩展标记语言集中器 |
US7603351B2 (en) | 2006-04-19 | 2009-10-13 | Apple Inc. | Semantic reconstruction |
US7756333B2 (en) | 2006-04-26 | 2010-07-13 | Microsoft Corporation | Document layout verification |
JP5049515B2 (ja) | 2006-06-06 | 2012-10-17 | キヤノン株式会社 | 情報処理装置および情報処理方法および情報処理プログラム |
JP4189416B2 (ja) * | 2006-08-28 | 2008-12-03 | 株式会社東芝 | 構造化文書管理システム及びプログラム |
JP2008097436A (ja) | 2006-10-13 | 2008-04-24 | Canon Inc | 構造化文書構造自動解析および構造自動再構築装置 |
US20080235564A1 (en) | 2007-03-21 | 2008-09-25 | Ricoh Co., Ltd. | Methods for converting electronic content descriptions |
US8504553B2 (en) | 2007-04-19 | 2013-08-06 | Barnesandnoble.Com Llc | Unstructured and semistructured document processing and searching |
JP2009110500A (ja) | 2007-10-29 | 2009-05-21 | Toshiba Corp | ドキュメント処理装置、ドキュメント処理方法、ドキュメント処理装置のプログラム |
US8015168B2 (en) | 2007-11-12 | 2011-09-06 | Sap Ag | String pooling |
US8539342B1 (en) | 2008-10-16 | 2013-09-17 | Adobe Systems Incorporated | Read-order inference via content sorting |
US8365072B2 (en) | 2009-01-02 | 2013-01-29 | Apple Inc. | Identification of compound graphic elements in an unstructured document |
US8442998B2 (en) | 2011-01-18 | 2013-05-14 | Apple Inc. | Storage of a document using multiple representations |
-
2011
- 2011-05-12 US US13/106,813 patent/US8442998B2/en active Active
-
2012
- 2012-01-13 JP JP2013549601A patent/JP5612227B2/ja active Active
- 2012-01-13 EP EP12704457.6A patent/EP2666105B1/en active Active
- 2012-01-13 AU AU2012207560A patent/AU2012207560B2/en active Active
- 2012-01-13 CA CA2823396A patent/CA2823396C/en active Active
- 2012-01-13 CN CN201280005666.5A patent/CN103329122B/zh active Active
- 2012-01-13 KR KR1020137021664A patent/KR101374994B1/ko active IP Right Grant
- 2012-01-13 WO PCT/US2012/021386 patent/WO2012099802A1/en active Application Filing
-
2013
- 2013-04-26 US US13/872,047 patent/US8959116B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0370778A2 (en) * | 1988-11-21 | 1990-05-30 | Xerox Corporation | Method for manipulating digital text data |
CN101490666A (zh) * | 2006-07-10 | 2009-07-22 | 微软公司 | 对齐分层和顺序文档树以标识并行数据 |
CN101231657A (zh) * | 2007-01-26 | 2008-07-30 | 国际商业机器公司 | 用于访问数据的方法以及数据处理*** |
Also Published As
Publication number | Publication date |
---|---|
KR101374994B1 (ko) | 2014-03-14 |
EP2666105A1 (en) | 2013-11-27 |
KR20130101153A (ko) | 2013-09-12 |
US8959116B2 (en) | 2015-02-17 |
US8442998B2 (en) | 2013-05-14 |
EP2666105B1 (en) | 2014-11-12 |
US20120185511A1 (en) | 2012-07-19 |
US20130254239A1 (en) | 2013-09-26 |
WO2012099802A1 (en) | 2012-07-26 |
CA2823396C (en) | 2016-08-02 |
CA2823396A1 (en) | 2012-07-26 |
JP5612227B2 (ja) | 2014-10-22 |
JP2014505303A (ja) | 2014-02-27 |
AU2012207560B2 (en) | 2014-03-20 |
CN103329122A (zh) | 2013-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103329122B (zh) | 使用多个表示的文档存储 | |
AU2012207560A1 (en) | Storage of a document using multiple representations | |
US8166037B2 (en) | Semantic reconstruction | |
Van Eck et al. | VOSviewer manual | |
US7313754B2 (en) | Method and expert system for deducing document structure in document conversion | |
Edhlund | Nvivo 9 essentials | |
TWI472933B (zh) | 用於文件中之列表重建的方法及電腦程式產品 | |
US20100174983A1 (en) | Selection of Text in an Unstructured Document | |
WO2009149262A1 (en) | Methods and systems for creating and editing a graph data structure | |
US9639518B1 (en) | Identifying entities in a digital work | |
CN110738037A (zh) | 用于自动生成电子表格的方法、装置、设备及存储介质 | |
US20150106700A1 (en) | Display and selection of bidirectional text | |
CN110738027A (zh) | 生成电子表格公式的计算机实现的方法、设备和存储介质 | |
US9152617B2 (en) | System and method for processing objects | |
US20150254213A1 (en) | System and Method for Distilling Articles and Associating Images | |
Ding et al. | VQA: A new dataset for real-world VQA on PDF documents | |
Lecolinet et al. | Text-image coupling for editing literary sources | |
US20230177102A1 (en) | Generating a document utilizing key elements of a cloud-based word processing system | |
Lepper et al. | Technical Topologies of Texts | |
Rathnam | Visualizing Data in Traditional Text Layouts with Application to Classical Latin | |
Rodrigues | Analyzing textual data by multiple word clouds | |
Banchs et al. | Handling Textual Data | |
Nojoumian | Document engineering of complex software specifications | |
Johnson | Excel 2013 on Demand | |
Horie | eBooks Collection-Artwork finalization and conversion to electronic books in ePub, Mobi and PDF |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |