附图简述
图1是一个实现的计算机系统的图解视图。
图2是一个实现中在图1的计算机系统上的操作的列表解析程序的图解视图。
图3是用于图1的系统的一个实现的高级处理流程图。
图4是用于图1的系统的一个实现的处理流程图,示出了在从矢量图形内容中检测和呈现标项目符号的列表时所涉及的各个阶段。
图5是用于图1的系统的一个实现的处理流程图,示出了在从矢量图形内容中检测和呈现标号的或标字母的列表时所涉及的用户选择和各个阶段。
图6是用于图1的系统的一个实现的处理流程图,示出了在检测和呈现嵌套列表时所涉及的各个阶段。
图7是用于图1的系统的一个实现的流程图,其示出了从基于矢量图形的文档到目标应用程序的复制和粘贴过程以及在该目标应用程序中呈现列表。
图8是用于图1的系统的一个实现的图表,其示出了XML格式的指定列表的矢量图形文档的一部分。
图9是用于图1的系统的一个实现的模拟屏幕,其示出了图8的含有列表的XML代码如何用文档呈现实用程序来可视化。
图10是用于图1的系统的一个实现的模拟屏幕,其示出了图8的XML列表内容在被复制到使用不同文档格式的另一应用程序后如何被呈现。
图11是用于图1的系统的一个实现的流程图,其示出了为列表呈现可听输出的屏幕阅读器。
详细描述
出于促进对本发明的原理的理解的目的,现将对图中所示的各实施方式进行参考,并且也将使用特定的语言来描述这些实施方式。然而,将理解的是,并无意由此作出范围上的限制。在所述实施方式中的任何更改和进一步修正,以及对在此所述的原理的进一步应用都被设想是本领域的技术人员通常能想到的。
该系统可以在一般的上下文中被描述为用于基于XPS文档或其它基于矢量图形的文档格式中所给出的呈现指令来检测列表和列表条目的应用程序,但该系统还适合除此之外的其它目的。在此所描述的一项或多项技术可以被实现为诸如MICROSOFT
Office Word、MICROSOFT
Office POWERPOINT
Adobe Acrobat、XPS阅览器等软件程序中的特征,和/或来自于允许创建列表或可以利用列表的任何其它类型的程序或服务的特征。如在此更详细地描述的,在该系统的一个实现中,列表被识别并被转换成目标应用程序中所使用的格式。在另一实现中,列表可被识别并被转换到一屏幕阅读器,该屏幕阅读器理解该输入并利用语音输出技术来形成标识该列表的正确的可听声音,阅读该列表中的文本,然后对正在听的人解释该列表的顺序。
如图1所示,用于实现该系统的一个或多个部分的一种示例性计算机系统包括诸如计算设备100等计算设备。在其最基本的配置中,计算设备100通常包括至少一个处理单元102和存储器104。取决于计算设备的确切配置和类型,存储器104可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或这两者的某种组合。这一最基本配置通过虚线106示于图1中。
另外,设备100还可具有附加的特征/功能。例如,设备100还可以包括附加存储(可移动和/或不可移动的),包括但不限于磁或光盘或带。这样的附加存储以可移动存储108和不可移动存储110示于图1中。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储、盒式磁带、磁带、磁盘存储或其它磁存储设备、或可用以存储所需信息并可由计算机100访问的任何其它介质。任何这种计算机存储介质都可以是设备100的一部分。
计算设备100包括允许计算设备100与诸如XPS文档或其它基于矢量图形的文档等一个或多个文档115进行通信的一个或多个通信连接114。计算设备100还可以与一个或多个其它计算机和/或应用程序113进行通信。设备100也可以具有输入设备112,如键盘、鼠标、笔、语音输入设备、触摸输入设备等等。还可以包括诸如显示器、扬声器、打印机、屏幕阅读器等的输出设备111。这些设备是本领域中公知的,因而无需在此处详加讨论。
现在转向图2,并继续参考图1,示出了在计算设备100上操作的列表识别应用程序200。列表识别应用程序200是驻留于计算设备100上的应用程序中的一个。另选地或另外地,列表识别应用程序200的一个或多个部分可以是系统存储器104的一部分、可以在其它计算机和/或应用程序113上、或可以是计算机软件领域的技术人员能想到的其它此类变型。
列表识别应用程序200包括负责实现在此描述的一些或全部技术的程序逻辑204。程序逻辑204包括用以检测标项目符号的或标号的列表的逻辑206和用以应用递归算法以检测列表中的嵌套列表的逻辑208。程序逻辑204还包括用于以更适合输出或使用的经修改的格式来将(诸)列表的内容输出或显示到如文件、显示设备、屏幕阅读器和/或另一应用程序等的逻辑210。程序逻辑220包括用以操作该应用程序的其它逻辑。在一个实现中,程序逻辑204可用于诸如使用对程序逻辑204中的一个过程的单次调用而通过编程从另一程序调用。
在一个实现中,程序逻辑204驻留于计算设备100上。然而,可以理解,程序逻辑204可以另选地或另外地被具体化为一个或多个计算机上和/或不同的变型中的计算机可执行指令。作为一个非限制性示例,程序逻辑204的一个或多个部分可以另选地或另外地被实现为在需要时被调用的基于Web的应用程序。
现在转向图3,并继续参考图1-2,更详细地描述了用以实现列表识别应用程序200的一种或多种实现的各个阶段。图3是用于列表识别应用程序200的高级流程图。在一种形式中,图3的过程至少部分地在计算设备100的操作逻辑中实现。虽然列表识别应用程序200在此处的某一些实现中被描述为识别XPS文档或类似的基于XML的文档格式中的列表,但可以理解,在其它实现中,列表识别应用程序200可与利用矢量图形的任何类型的文档格式一起工作。在此所使用的术语基于矢量图形的文档旨在包括包含诸如用以呈现文本、线条和/或填满的形状的指令等的用以将文档呈现到输出设备上的指令的任何类型的文档。作为另一非限制性示例,呈现指令包括诸如提供关于标项目符号的和/或标号的列表条目的位置和/或内容的细节的指令等列表呈现指令。
该过程在图3上从起始点240处开始,其中接收通过编程来自于程序的选择或来自于用户的选择,以访问部分(如一页)或全部诸如XPS文档或类似的基于XML的文档等基于矢量图形的文档(阶段242)。如何接收选择的一些非限制性示例包括用户所打开的文件或用户所粘贴到应用程序中的文本。在一个实现中,系统读取该基于矢量图形的文档(阶段244)并执行程序逻辑206以确定是否存在一个或多个列表(阶段246)。列表识别应用程序200执行程序逻辑206来分析该列表(阶段248)。列表识别应用程序200执行程序逻辑210来以更适合输出或使用的经修改的格式将该一个或多个列表输出到如文件、屏幕阅读器和/或另一应用程序(阶段250)。在一个实现中,该经修改的格式包括目标应用程序所理解的格式。该过程结束于结束点252。
现在转向图4-5,并继续参考图2-3,示出了在检测各种列表时所涉及的各个阶段。图4示出了在一个实现中用以检测列表内容的各个阶段。在一种形式中,图4的过程至少部分地在计算设备100的操作逻辑中实现。该过程在起始点320处开始,其中系统通过编程或通过用户选择接收基于矢量图形的文档(阶段322)。扫描该文档内容以寻找一个或多个标项目符号的列表的存在(阶段323)。
系统检测一行中可能是列表开头的首字符或图像(324)。作为示例而非局限,该字符可以是连字号(-)、星号(*)、大于号(>)、加号(+)或是可以表示标项目符号的列表的开头的另一键盘字符或图像。系统通过扫描下一行以查看它是否以相同的字符开始来确定那是否是列表的开头(判定点326)。如果是,则进行另外的考虑来确定两行是否都组成列表中的条目。例如,如果正被考虑的行上的首字符的左缩进与第一行上的首字符相同(判定点328),则系统还要检验来查看关于首单词的左缩进是否相同(判定点332)。
在一个实现中,如果满足所有这些准则,则该条目就被认为是列表条目。在另一实现中,使用这些准则中的某一些和/或另外的准则来确定该条目是标项目符号的列表条目。系统继续检验该列表中的更多条目(阶段334)。如果还没发现列表的结尾(判定点336),则该过程以查找带有相同的字符或图像的另一连续的条目开始来重复(阶段326)。
如果系统评估该一个或多个不同列表准则并确定该条目不是先前列表的一部分,则其随后就检验来查看该条目是否是嵌套的列表的一部分(判定点330)。如果检测到一个可能的嵌套列表(判定点330),则还评估该列表准则来寻找可能的嵌套列表。一旦标识了所有可能的列表并到达了该文档的结尾(判定点331),则系统就执行用以将该内容改变为目标文档的格式的逻辑(阶段338),然后适当地显示该内容(阶段340)。该过程结束于结束点342。
现在转向图5,并继续参考图2-3,示出了用以检测并分析基于矢量图形的文档中为标号的或标字母的列表的内容的各个阶段。在一种形式中,图5的过程至少部分地在计算设备100的操作逻辑中实现。该过程在起始点370处开始,其中系统通过编程或通过用户选择接收基于矢量图形的文档(阶段372)。扫描该文档内容以寻找一个或多个列表的存在(374)。系统检测一行的可能是列表的开头的首个数字或字母(376)。作为示例而非局限,该字符可以是罗马数字或算术数字、单个或复合数字、大写字母或小写字母。
系统通过扫描下一行以查看其是否以相同的字符开始来检测那是否是列表的开头(判定点378)。如果是,则进行另外的考虑来确定两行是否都组成列表中的条目。这些考虑包括但不限于,该数字或字母的左缩进(阶段382)、该数字或字母后的首单词的左缩进(阶段384)以及下一个单词的左缩进(阶段386)对于两条目来说是否都相同。在一个实现中,如果满足所有这些准则,则该条目就被认为是标号的或标字母的列表条目。在另一实现中,使用这些准则中的某一些来确定该条目是标号的或标字母的列表条目。系统继续检验列表中的更多条目(阶段388)。如果还没发现列表的结尾(判定点390),则该过程以查找带有连续字母或数字的另一连续条目开始来重复(阶段378)。
如果系统评估该一个或多个不同列表准则并确定该条目不是先前列表的一部分,则其随后检验来查看该条目是否是嵌套列表的一部分(判定点380)。如果检测到一个可能的嵌套列表(判定点380),则重复这些阶段来寻找嵌套列表。一旦标识了所有可能的列表并到达了该文档的结尾(判定点391),则系统就执行用以将该内容改变为目标文档的格式的逻辑(阶段392),然后适当地显示该内容(阶段394)。该过程结束于结束点396。
如前面所讨论的,在一个实现中,系统也可以检测嵌套列表。作为示例而非局限,系统可以检测标号的或标字母的列表的标项目符号的列表,以及标号的或标字母的列表中的标号的或标字母的列表。图6是用于一个实现的过程流程图,其示出了检测嵌套列表并将其正确显示时所涉及的一个或多个阶段。在一种形式中,图6的过程至少部分地在计算设备100的操作逻辑中实现。在一个实现中,该过程可以标识以多种级别存在于其它列表中的任意数量的嵌套列表。该过程在起始点410处开始,其中系统识别列表的存在(阶段412),以及第一个列表条目的开头(阶段414)。系统识别该第一个条目不是先前已识别的列表的延续,而可能是嵌套列表的第一个条目(阶段416)。应用规则以检验下一行来查看其是否是嵌套列表的一部分。这些规则包括但不限于,检验下一行的首字符(阶段418)、下一行的首字符的缩进(阶段420)以及下一行该字符后的首单词的缩进(阶段422)。如果发现两个或更多条目满足所有这些准则,则执行用于分析嵌套列表的规则(阶段424)。
也检查该嵌套列表中的条目(阶段426)来查看是否存在不止一级的嵌套。如果找到(阶段428),则系统执行递归算法以检验嵌套列表的第二级中的条目。这将持续到对所有等级的列表标识了所有条目为止。条目被相应地分组并编译,以使它们可以被正确地显示在屏幕上或在目标应用程序中打印(阶段430)。该过程结束于结束点432。
图7是高级流程图,示出了用户可以用来将列表内容从基于矢量图形的文档中复制和粘贴到利用一不同格式的目标应用程序或文档中的过程。在一种形式中,图7的过程至少部分地在计算设备100上的操作逻辑中实现。该过程在起始点450处开始,此时用户从源应用程序中的基于矢量图形的文档中选择内容时(阶段452)。用户选择将该内容复制并粘贴到目标应用程序中的选项(阶段454)。源应用程序检测列表的存在并基于该文档中存在的列表呈现指令来解释该列表(阶段456)。源应用程序将该内容转换成更适合在目标应用程序中输出或使用的经修改的格式(阶段458)。经修改的内容的一些非限制性示例包括丰富文本、不包括呈现指令的XML、该内容的某一些或全部的图形表示以及许多其它变型。源应用程序将经修改的内容提供给目标应用程序(阶段460)。作为一个非限制性示例,源应用程序可以通过将其置于可用以通过编程或通过用户选择而将该内容粘贴到目标应用程序的剪切板上来提供该经修改的内容。目标应用程序适当地输出或使用该经修改的内容,如为用户将其呈现到输出设备上(阶段462)。该过程结束于结束点464。
现转向图8-10,示出了模拟图表和屏幕以显示本机XML代码和标签的一个实现,以及该XML代码如何被诸如阅览器等源应用程序解释,然后如何被显示在目标应用程序中。图8示出关于部分文档的XML代码500,其在一个实现中可以从诸如XPS文档或其它基于矢量图形的文档115等的源处接收。在所示的示例中,该XML代码是使用XML文件规范(XPS)句法来书写的。在所示的示例中,文档500包括各种包含关于特定列表条目的规范的标签,如标签502。也可使用众多其它列表指示符。此外,一些、全部、另外的和/或其它标签和/或文本内容也可以在文档500中使用。在其它实现中,根本没使用XML标签。
图9示出关于一个实现的模拟屏幕508,其示出XML内容500在阅览器应用程序中如何以对用户更友好的方式显示。注意,项目符号510和520用以图形地示出列表。
图10示出用于一个实现的模拟屏幕530,其显示目标应用程序中的被复制、转换并且粘贴到目标应用程序中或刚从该目标应用程序打开然后就被转换的XML内容。注意,显示了主列表560以及嵌套列表570、580和585,根据列表是否是嵌套的,每个列表都有不同的项目符号和缩进。还示出了第二列表590的起点,连同伴随的嵌套列表595。
图11示出在一个实现中使用列表识别程序200的一种形式的屏幕阅读器的流程图。在一种形式中,图11的过程至少部分地在计算设备100的操作逻辑中实现。屏幕阅读器向不能清楚地看到屏幕的人描述计算机屏幕上有什么。屏幕阅读器对视觉受损的人是有用的工具。该过程在起始点600处开始,在此用户或系统选择基于矢量图形的文档中的内容(阶段602)。屏幕阅读器解释该文档内容,包括列表(阶段604),并将以有意义的方式可听地传达该信息(阶段606)。作为示例而非局限,屏幕阅读器对标项目符号的列表的可听输出可以包括这些口述单词:“标项目符号的列表。第一个项目符号:[阅读该文本];第二个项目符号:[阅读该文本]。”作为示例而非局限,屏幕阅读器对标号的列表的可听输出可以包括这些口述单词:“标号的列表。条目数字1:[阅读该文本];条目数字2:[阅读该文本]。”许多其它变型也是可能的。该过程结束于结束点608。
虽然以对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不一定要限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式来公开的。落入在此所描述的和/或所附权利要求所描述的实现的精神之内的所有等效技术方案、更改和修正都期望受到保护。
例如,计算机软件领域的普通技术人员将认识到,在此讨论的示例中所描述的客户机和/或服务器安排、用户界面屏幕内容和/或数据布局可以在一台或多台计算机上不同地组织以包括比各示例中所描绘的更少或更多的选项或特征。