本发明是于2003年12月9日提交的题为“Context Free Document Portions”(上下文无关的文档部分)的美国专利申请第10/731,900号的部分继续申请,并要求对该专利申请的优先权,该专利申请的内容通过引用完全包含于此。
此专利文献所揭示内容的一部分包含受版权保护的素材。版权所有人不反对任何人对此专利文献或此专利所揭示内容的拓制,如它出现在专利商标局专利文件或记录中那样,但在别的方面保留所有版权。
具体实施方式
如以上所简述,本发明的实施例是针对用于将文本或数据部分***到文档中或由文档引用文本或数据部分的方法和***,其中被***或引用的文本或数据部分是根据与该文本或数据部分被***、或引用该文本或数据部分的文档不同的文件格式类型和其它属性格式化的,以与接收文档合并。这些实施例可被组合,可使用其它实施例,或者进行结构改变,而不会偏离本发明的精神和范围。因此,以下详细描述不应被认为是限制性的,且本发明的范围由所附权利要求书及其等效技术方案所定义。
现在参考附图,所有附图中相同的标号表示相同的元素,将描述本发明的若干方面和示例性操作环境。图1及以下讨论旨在对可实现本发明的合适的计算环境提供简要、一般的描述。尽管将在连同在个人计算机上的操作***上运行的应用程序执行的程序模块的通用上下文中描述本发明,但是本领域技术人员将认识到,还可结合其它程序模块来实现本发明。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。此外,本领域技术人员将会理解,可随其它计算机***配置实施本发明,包括手持式设备、多处理器***、基于微处理器的或可编程的消费者电子设备、小型计算机、大型计算机、等等。本发明还可在分布式计算环境中实施,其中任务由通过通信网络连接的远程处理设备执行。在分布式计算环境中,程序模块可位于本地和远程记忆存储设备中。
现在转到图1,用于实施本发明的各个实施例的个人计算机2的示例性计算机体系结构将被描述。图1所示的计算机体系结构示出一常规个人计算机,包括中央处理单元4(“CPU”)、包括随机存取存储器8(“RAM”)和只读存储器10(“ROM”)的***存储器6、以及将存储器耦合到CPU4的***总线12。包含诸如在启动期间帮助在计算机内部各元件之间传送信息的基本例程的基本输入/输出***存储在ROM10中。个人计算机2还包括大容量存储设备14,用于存储操作***16、诸如应用程序305等应用程序、以及数据。
大容量存储设备14通过连接到总线12的大容量存储控制器(未示出)连接到CPU4。大容量存储设备14及其相关联的计算机可读介质为个人计算机2提供非易失性的存储。尽管对其中所包含的计算机可读介质的描述指诸如硬盘或CD-ROM驱动器等大容量存储设备,但是本领域技术人员应当理解,计算机可读机制可以是可由个人计算机2访问的任何可用介质。
作为示例,而非限制,计算机可读机制可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EPROM、EEPROM、闪存或其它固态存储器技术,CD-ROM、DVD或其它光存储,磁带盒、磁带、磁盘存储或其它磁存储设备,或可用来存储所需信息并可由计算机访问的任何其它介质。
根据本发明的各个实施例,个人计算机2可使用通过诸如因特网等TCP/IP网络18到远程计算机的逻辑连接在联网环境中工作。个人计算机2可通过连接到总线12的网络接口单元20连接到TCP/IP网络18。应当理解,网络接口单元20还可被用来连接到其它类型的网络和远程计算机***。个人计算机2还可包括用于接收和处理来自包括键盘或鼠标(未示出)在内的若干设备的输入的输入/输出控制器22。类似地,输入/输出控制器22可向显示屏、打印机或其它类型的输出设备提供输出。
如以上所简单提及,若干程序模块和数据文件可被存储在个人计算机2的大容量存储设备14和RAM8中,包括适用于控制联网的个人计算机的操作的操作***16,诸如来自华盛顿雷蒙德市的微软公司的WINDOWS XP操作***等。大容量存储设备14和RAM8还可存储一个或多个应用程序。特别地,大容量存储设备14和RAM8可存储用于创建和编辑电子文档310的应用程序305。例如,应用程序305可包括文字处理应用程序、数据表应用程序、联系人应用程序、等等。还可随本发明的各个实施例使用用于创建和编辑其它类型的电子文档的应用程序。还示出下述的模式文件330和名字空间/模式库400。
本发明的示例性实施例是由面向对象编程环境中的不同软件对象之间的通信来实现的。为以下本发明的实施例的描述起见,简要描述面向对象编程环境的组件是有用的。图2是根据面向对象的编程模型示出软件对象之间的交互的简化框图。根据面向对象编程环境,第一对象210可包括软件代码、可执行方法、属性、以及参数。类似地,第二对象220也可包括软件代码、可执行方法、属性、以及参数。
第一对象210可通过经由消息调用230调用第二对象220,来与第二对象220通信以从第二对象220获得信息或功能。如面向对象编程环境领域技术人员所公知,第一对象210可经由应用程序编程接口(API)与第二对象220通信,该应用程序接口(API)允许两个异类的软件对象210、220相互通信以从对方获得信息和功能。例如,如果第一对象210请求第二对象220中所包含的方法所提供的功能,则第一对象210可向第二对象220传递消息调用230,第一对象在消息调用230中标识所请求的方法,并将第二对象要求的操作被标识的方法所需的任何参数传递给第二对象。第二对象220一旦从第一对象接收到调用,第二对象即基于所提供的参数执行被调用的方法,并向第一对象210发回包含从所执行的方法获得的值的返回消息250。
例如,就本发明的实施例而言,并如以下将描述,第一对象210可为第三方定制的应用程序,该应用程序向诸如可扩展标记语言模式验证对象等第二对象传递消息,第一对象通过该消息标识请求验证文档中所指定的XML元素的方法,其中被指定的XML元素是由第一对象随所标识的方法传递的参数。根据此例,一旦从第一对象接收到调用,模式验证对象即对被指定的XML元素执行被标识的方法,并以与经验证的XML元素相关联的结果或值的形式向第一对象返回消息。如以上所简述的面向对象编程环境的操作对本领域技术人员而言是公知的。
如下所述,本发明的实施例是通过使用中的软件对象的交互、定制、以及对可扩展标记语言(XML)组件的应用来实现的。图3所示是文档、附加模式文件和模式验证功能模块之间的交互的框图。如本领域技术人员所公知,可扩展标记语言(XML)通过允许用户创建可应用于文档中的文本或数据的标签名,而该文档进而定义应用相关联标签的文本或数据,来提供一种描述文档中的文本和数据的方法。例如,参考图3,用应用程序305创建的文档310包含已用XML标签315、320、325标记的文本。例如,文本“Greetings”用XML标签<title>(标题)注释。文本“My name is Sarah”用<body>标签注释。根据XML,<title>和<body>标签的创建者可自由创建她自己的标签,用于描述将应用那些标签的标签。因此,只要向任何下游消耗应用程序或计算机器提供关于应用于文本的标签的定义的指令,该应用程序或计算机器即可根据标签来使用数据。例如,如果下游应用程序被编程为提取定义为由该应用程序处理的文章或出版物的标题的文本,则该应用程序可对文档310进行语法分析并提取文本“Greetings”,如图3所示,因为该文本是用标签<title>注释的。如图3所示,文档310的特定XML标签命名的创建者提供文档310中所包含的文本或数据的有用描述,只要向第三方提供与应用于文本或数据的标签相关联的定义,该描述即可由第三方使用。
根据本发明的实施例,可根据各种不同的文件格式,以及根据用于创建文档310的应用程序305的本机编程语言来保存被输入到文档310中的文本和XML标记。例如,可根据文字处理应用程序、数据表应用程序等来保存文本和XML标记。或者,被输入到文档310中的文本和XML标记可被保存为XML格式,通过XML格式,文本或数据、任何被应用的XML标记、以及诸如字体、样式、段落结构等任何格式编排可被保存为XML表示。因此,能够理解保存为XML的数据的下游或第三方应用程序可打开和使用如此被保存为XML表示的文本或数据。将文档310的文本和XML标记、相关联的格式编排以及其它属性保存为XML的具体讨论见于2002年6月28日提交的,题为“Word Processing Document Stored in a SingleXML File that may be Manipulated by Applications that Understanding XML”(存储在可由理解XML的应用程序操纵的单个XML文件中的文字处理文档)的美国专利申请第10/187,060号,其全部内容通过引用包含于此。于2003年12月2日提交的,题为“Mixed Content Flexibility”(混和内容灵活性)的美国专利申请第10/726,077号第11页开始揭示了根据本发明的一个示例性模式,其通过引用而被结合于此。
如图3所示,为了给应用于文本或数据的XML标记元素(标签)提供定义框架,创建XML模式文件,该XML模式文件包含允许被标记和存储的数据的用户和消耗者理解文档的创建者所设计的XML标签定义所需的信息。较佳的是,在本领域中也称为名字空间或XSD文件的每个模式文件都包括所有XML元素(标签)的列表,这些XML元素(标签)可根据给定的模式文件被应用于文档。例如,图3所示的模式文件330可以是包含可被应用于文档310的某些XML元素的定义的模式文件,该模式文件包括XML元素的属性或限制,和/或与可根据模式文件用XML元素注释的文本或数据相关联的规则。例如,参考图3所示的模式文件330,该模式文件由名字空间“intro”所标识,该模式文件包括根元素<intro card>。
根据模式文件330,<intro card>元素担当模式文件的根元素,并担当两个子元素<title>和<body>的父元素。如本领域技术人员所公知,可在单个根元素下定义若干父元素,并可在每个父元素下定义若干子元素。但是,通常给定的模式文件330仅包含一个根元素。仍然参考图3,模式文件330还分别包含<title>和<body>元素的属性340和345。属性340和345可提供与将各元素分别应用于文档310中的文本或数据相关联的进一步的定义或规则。例如,属性345定义用<title>元素注释的文本的长度必须少于或等于25个字符。因此,根据模式文件330中所包含的定义,如果用<title>元素或标签注释长度超过25个字符的文本,则试图进行的对该文本的注释将是无效的。
通过将此类定义或规则作为属性应用于XML元素,模式的创建者可指示与给定模式文件相关联的文档中所包含的数据的结构。例如,如果用于定义应用于简历文档的XML标记的模式文件330的创建者希望简历文档的经历部分所包含的现在或先前的工作条目不超过4个,则模式文件330的创建者可定义例如<experience>元素的属性,以允许不超过4个现在或过去的工作条目被输入到<experience>标签之间,以使experience标签根据模式文件330有效。如本领域技术人员所公知,模式文件330可被附加到给定文档310或与之相关联,以将附加模式文件中所定义的可允许的XML标记应用于文档310。根据一个实施例,用附加或相关联的模式文件330的XML元素标记的文档310可通过指向与标识附加或相关联模式文件330的名字空间相关联的统一资源标识符(URI)来指向附加或相关联的模式文件。
根据本发明的实施例,文档310可具有多个附加模式文件。即,文档310的创建者可将一个以上模式文件330关联或附加到文档310,以为来自一个以上模式文件的XML标记的注释提供框架。例如,文档310可包含与金融数据相关联的文本或数据。文档310的创建者可能希望将将包含XML标记的XML模式文件330和与多个金融机构相关联的定义相关联。由此,文档310的创建者可将来自一个或多个金融机构的XML模式文件330与文档310相关联。类似地,可将给定XML模式文件330与诸如用于将金融数据放入所需格式的模板等特定文档结构相关联。
根据本发明的实施例,可在与文档310分处的名字空间或模式库中维护XML模式文件和相关联的文档解决方案的集合。文档310可进而包含指向名字空间或模式库中的URI的指针,该名字空间或模式库与被附加到文档310或与之相关联的一个或多个模式文件相关联。因为文档310需要来自一个或多个相关联模式文件的信息,所以文档310指向名字空间或模式库,以获得所需的模式定义。使用名字空间或模式库的操作的详细描述见于2002年6月27日提交的题为“System andMethod for Providing Namespace Related Information”(用于提供名字空间有关的信息的***和方法)的美国专利申请第10/184,190号,以及于2002年6月27日提交的题为“System and Method for Obtaining and Using Namespace Related Informationfor Opening XML Document”(用于获取和使用名字空间有关的信息以打开XML文档的***和方法)的美国专利申请第10/185,940号,这两个美国专利申请的内容都通过引用完全包含于此。用于从名字空间或模式库下载诸如XML模式文件和相关联的解决方案等软件组件的机制的详细描述见于2002年6月5日提交的题为“Mechanism for Downloading Software Components from a Remote Source for Useby a Local Software Application”(用于从远程源下载软件组件以供本地软件应用程序使用的机制)的美国专利申请第10/164,260号。
仍参考图3,图示出一种模式验证功能模块350,它用于对照如上所述的附加到文档310或与之相关联的XML模式文件330来验证应用于文档310的XML标记。如上所述,模式文件330陈述可接受的XML元件和相关联的属性,并定义用来自相关联的模式文件330的XML标记对文档310进行有效注释的规则。例如,如模式文件330所示,在根或父元素<intro card>下定义了两个子元素<title>和<body>。还示出定义与子元素<title>和<body>相关联的文本的可接受的串长度的属性340、345。如上所述,如果用户试图用来自附加到文档310或与之相关联的模式文件330的XML标记、但违反模式文件330中所包含的XML标记定义地注释文档310,则将呈现无效或错误状态。例如,如果用户试图输入超过25个字符的标题串,则该文本条目将违反模式文件330的<title>元素的最大字符长度属性。为了对照相关联的模式文件330来验证应用于文档310的XML标记,利用一种模式验证模块350。如本领域技术人员应当理解,模式验证模块350是软件模块,它包括足以用来在XML标记和相关联的文本被输入到文档310中时,将被输入到文档310中的XML标记和相关联的文本与相关联或附加的XML模式文件330相比较的指令。
根据本发明的实施例,模式验证模块350将应用于文档310的每个XML标记元素和相关联的文本或数据与附加或相关联的模式文件330相比较,以确定每个元素和相关联的文本或数据是否都符合附加模式文件330所陈述的规则和定义。例如,如果用户试图输入超过25个字符的由<title>元素320注释的字符串,则模式验证模块将把该文本串与附加模式文件330的文本串属性340相比较,并确定用户所输入的该文本串超过最大可允许的文本串长度。由此,将向用户呈现错误消息或对话框,以警告用户根据附加模式文件330,其所输入的文本串超过最大可允许的字符长度。类似地,如果用户试图在<title>和<body>元素之间添加XML标记元素,则模式验证模块350将根据附加模式文件330,确定用户所应用的XML标记元素不是<title>和<body>元素之间所允许的有效元素。从而,模式验证模块350将向用户生成错误消息或对话框,以警告用户无效的XML标记。
上下文无关的文档文本和数据部分
如以上所简述,本发明的实施例提供用于将一部分文本或数据***到文档中的方法和***,其中被***的文本或数据部分随之携带其本身专有的格式编排和样式属性,诸如指定的样式、字体、列表类型等等。图4是根据本发明的实施例示出第一文档和第二文档之间的交互的框图,其中一部分文本从第二文档被复制或移动到第一文档中。图5是根据本发明的实施例示出第一文档和第二文档之间的交互的框图,其中一部分文本从第二文档被复制或移动到第一文档中。应当理解,以将文本部分从一个文档复制或移动到另一个文档的形式来描述本发明仅仅是示例性的。除了将文本从一个文档复制或移动到另一个文档以外,文本部分的自描述属性允许想要或需要对文件进行语法分析并操纵文件的用户和软件应用程序将富编辑应用于文件或文档的部分,而无须对整个文档进行语法分析以管理与整个文档或文件相关联的属性。
参考图4,根据本发明的实施例,为说明如何将一部分文本从文档420复制到文档410中,描述文档410和文档420。第一文档410有一个标题和两个段落。还为文档410示出XML结构窗格425,它示出被应用于文档435的可扩展标记语言(XML)结构。例如,<title>元素被应用于文档435的标题,<paragraph 1>元素被应用于文档435的第一段,而<paragraph 2>元素被应用于文档435的第二段。第二文档420包括已用XML结构进行类似标记的标题440。为文档420示出XML结构窗格430。
根据本发明的实施例,来自第二文档的文本或数据部分可被复制或移动到第一文档中,样式和其它格式编排属性随文本或数据部分从一个文档被带到另一个文档。由此,不需要对照与第一文档相关联的样式或其它格式编排属性来解析与***到第一文档的文本部分相关联的样式或格式编排属性。例如,如图4所示,第一文档可具有用于引用与第一文档相关联的样式及其它格式编排属性的头部信息属性元素。即,第一文档的用户或创建者可能已经为第一文档建立一组样式或格式编排属性。如上所述,根据现有技术的***,如果用户希望将第二段455从第二文档420复制到第一文档410中,则与第二文档420中的第二段455相关联的样式或格式编排信息可能与在第一文档410的文档等级处所包含的样式和格式编排信息冲突。
例如,第一文档410可具有称为“Header 1”的、使粗体和斜体的格式编排被应用于文档435的样式。另一方面,第二文档420的创建者可能也同样地使用样式指示符“Header 1”来将第二文档中所包含的第二段455格式化为包括粗体,但不包括斜体。如果第二文档420的第二段455被复制到第一文档410中,则应用于第二文档的样式会与应用于第一文档410中的文档的样式冲突。因此,第一文档410的用户将被要求手动对应用于第一文档410的XML结构的头部信息属性元素进行语法分析,以改变应用到被***的文本或数据的样式,从而避免两个样式的冲突。
根据本发明的实施例,提供一种XML模式,用于将样式标记应用于文档的指定文本和数据部分,诸如第二文档420的第二段455,使得应用于给定文本或数据部分的特定样式或格式编排随文本或数据部分被带到第一文档中。通过将XML标记应用于特定文本或数据部分,只要第一文档能够访问应用于被***的文本或数据部分的样式或格式编排标记,第一文档就无须解除应用于被***的文本或数据部分的样式或格式编排属性的冲突。
参考图5,图示出要***第一文档410的文本部分510和文本部分520。根据本发明的实施例,每个文本部分510和520可以是一个句子、一个段落、多个段落、句子或段落的片段、字母数字数据、或任何其它本机对象。如应当理解的,第二文档420的创建者如下所述地根据定义XML元素的上下文无关的文本部分模式,用可扩展标记语言数据来标记第二文档,以指定随之携带其自己的样式或其它格式编排属性的特定文本或数据部分。实际上,文本部分510和520中的每一个都变成携带其自己的样式和格式编排属性的“小型”文档,这些“小型”文档可被***到第一文档410中,且在文档410上操作的XML语法分析应用程序可将其与主文档410区别对待。
应当理解,根据可从各种软件应用程序使用的常规的剪切/复制和粘贴方法,诸如第二段455或者图5所示的文本部分510、520中的任何一个等文本或数据部分可从第二文档被复制粘贴或剪切粘贴到第一文档中。或者,根据各种可扩展标记语言语法分析应用程序,用户可通过从XML结构窗格430选择适当的XML节点,并将该XML节点复制到第一文档的XML结构中,同样地将来自第二文档的文本或数据部分***到第一文档中。即,通过从第二文档420的XML结构窗格430选择<paragraph 2>节点460,并通过将该节点移动到第一文档的XML结构中,可将第二段455的XML标记和相关联的文本或数据随其自己的样式及如本文中所描述的其它格式编排属性***到第一文档中。
为进一步说明本发明的实施例的操作,将以下XML结构与具有以下两个段落的简单文档相关联。
第一段:The quick brown fox jumps over the lazy dog.
第二段:The quick brown fox jumps over the lazy dog.
如可在以下XML结构中看到,“Times New Roman”字体和“Default ParagraphFont”的样式标识被应用于这两个段落。这两段的实际文本也在以下XML结构中示出。
<?xml version=″1.0″encoding=″UTF-8″standalone=″yes″?>
-<w:wordDocument
xmlns:w=″http:∥schemas.microsoft.com/office/word/2003/wordml″
xmlns:wx=″http:∥schemas.microsoft.com/office/word/2003/auxHint″
w:macrosPresent=″no″w:embeddedObjPresent=″no″w:ocxPresent=″no″
xml:space=″preserve″>
-<w:styles>
<w:versionOfBuiltInStylenames w:val=″4″/>
<w:latentStyles w:defLockedState=″off″
w:latentStyleCount=″156″/>
<w:style w:type=″paragraph″ w:default=″on″
w:styleId=″Normal″>
<w:name w:val=″Normal″/>
-<w:rPr>
<wx:font wx:val=″Times New Roman″/>
<w:sz w:val=″24″/>
<w:sz-cs w:val=″24″/>
<w:lang w:val=″EN-US″ w:fareast=″EN-US″
w:bidi=″AR-SA″/>
</w:rPr>
</w:style>
<w:style w:type=″character″ w:default=″on″
w:styleId=″DefaultParagraphFont″>
<w:name w:val=″Default Paragraph Font″/>
<w:semiHidden/>
</w:style>
<w:style w:type=″list″w:default=″on″w:styleId=″NoList″>
<w:name w:val=″No List″/>
<w:semiHidden/>
</w:style>
</w:styles>
<w:body>
<w:p>
<w:r>
<w:t>The quick brown fox jumps over the lazy
dog.</w:t>
</w:r>
</w:p>
<w:p>
<w:r>
<w:t>The quick brown fox jumps over the lazy
dog.</w:t>
</w:r>
</w:p>
<w:p/>
</w:body>
</w:wordDocument>
根据本发明的实施例,考虑例如用户想要将如下的第三段***到文档中“Thequick brown fox jumps over the lazy dog.”,从而被***的段落提供如下的最终文档:
第一段:The quick brown fox jumps over the lazy dog.
第二段:The quick brown fox jumps over the lazy dog.
第三段:The quick brown fox jumps over the lazy dog.
以下是示出将标准的默认样式应用于文档前两段的示例性XML结构。根据此例,如以下XML结构中所示,用户将斜体化的第三段以称为“My Style”的样式的名义***到文档中。因为该段落是被***到本机文字处理应用程序以外的环境中,所以必须手动完成检查“My Style”样式是否存在的逻辑。必须对XML文件进行语法分析,以寻找样式声明的正确位置,然后必须对样式声明进行语法分析,以确保没有冲突。一旦这已完成,即可输入“My Style”声明。既然输入了“My Style”声明,那么就必须再次对XML文件进行语法分析,以为该段落本身寻找正确位置。因为和“My Style”样式没有冲突,所以被***的段落仍可引用“My Style”样式。否则,必须改变该段落本身以引用正确的样式。
<?xml version=″1.0″encoding=″UTF-8″standalone=″yes″?>
<?mso-application progid=″Word.Document″?>
<w:wordDocument
xmlns:w=″http:∥schemas.microsoft.com/office/word/2003/wordml″
xmlns:wx=″http:∥schemas.microsoft.com/office/word/2003/auxHint″
w:macrosPresent=″no″w:embeddedObjPresent=″no″w:ocxPresent=″no″
xml:space=″preserve″>
<w:styles>
<w:versionOfBuiltInStylenames w:val=″4″/>
<w:latentStyles w:defLockedState=″off″
w:latentStyleCount=″156″/>
<w:style w:type=″paragraph″ w:default=″on″
w:styleId=″Normal″>
<w:name w:val=″Normal″/>
<w:rPr〉
<wx:font wx:val=″Times New Roman″/>
<w:sz w:val=″24″/>
<w:sz-cs w:val=″24″/>
<w:lang w:val=″EN-US″ w:fareast=″EN-US″
w:bidi=″AR-SA″/>
</w:rPr>
</w:style>
<w:style w:type=″character″ w:default=″on″
w:styleId=″DefaultParagraphFont″>
<w:namew:val=″DefaultParagraphFont″/>
<w:semiHidden/>
</w:stvle>
<w:style w:type=″table″ w:default=″on″
w:styleId=″TableNormal″>
<w:namew:val=″NormalTable″/>
<wx:uiNamewx:val=″TableNormal″/>
<w:semiHidden/>
<w:rPr>
<wx:fontwx:val=″TimesNewRoman″/>
</w:rPr>
<w:tblPr>
<w:tblIndw:w=″0″w:type=″dxa″/>
-<w:tblCellMar>
<w:topw:w=″0″w:type=″dxa″/>
<w:leftw:w=″108″w:type=″dxa″/>
<w:bottomw:w=″0″w:type=″dxa″/>
<w:rightw:w=″108″w:type=″dxa″/>
</w:tblCellMar>
</w:tblPr>
</w:style>
<w:stylew:type=″paragraph″w:styleId=″myStyle″>
<w:namew:val=″myStyle″/>
<w:basedOnw:val=″Normal″/>
<w:rsidw:val=″000874C3″/>
-<w:pPr>
<w:pStylew:val=″myStyle″/>
</w:pPr>
<w:rPr>
<wx:fontwx:val=″TimesNewRoman″/>
<w:colorw:val=″F0000″/>
</w:rPr>
</w:style>
<w:stylew:type=″list″w:default=″on″w:styleId=″NoList″>
<w:namew:val=″NoList″/>
<w:semiHidden/>
</w:style>
</w:styles>
<w:body>
<w:p>
<w:r>
<w:t>The quick brown fox jump sover the lazy
dog.</w:t>
</w:r>
</w:p>
<w:p>
<w:r>
<w:t>The quick brown fox jump sover the lazy
dog.</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStylew:val=″myStyle″/>
</w:pPr>
〈w:r>
<w:t>The quick brown fox jump sover the lazy
dog.</w:t>
</w:r>
</w:p>
<w:p/>
</w:body>
</w:wordDocument>
如上所述,根据本发明的实施例,提供一种XML模式,该模式提供可用来标记和描述文档的特定文本或数据部分、以使应用于该文本或数据部分的样式或其它格式编排属性和与***了该文本或数据部分的文档相关联的其余样式或格式编排属性被区别对待的XML元素。只要***了文本或数据部分的文档是由可理解与被***到该文档中的文本或数据部分相关联的XML模式的应用程序操作,包裹被***的文本或数据部分的XML元素就会被理解。
以下是一示例性XML结构,该结构根据本发明的实施例示出斜体化的第三段“The quick brown fox jump sover the lazy dog”的添加。如以下XML结构所示,前两个段落被包括在具有“Times New Roman”和“Default Paragraph Font”的样式标识的文档中。但是,如以下XML结构所示,被***到文档中的第三段已被包裹在称为<cfChunk>的XML元素中。如应当理解的,元素<cfChunk>示意根据本发明的实施例,此特定XML结构的创建者可向该元素提供无穷多个名字。应当理解,该元素同样也可被称为上下文无关部分,cf部分、上下文无关数据、cf数据、等等。在元素<cfChunk>内包含具有“MyStyle”的样式标识和“italics”的字体标识的第三段“The quick brown fox jump sover the lazy dog”。
根据本发明的实施例,当第三段“The quick brown fox jump sover the lazy dog”从第二文档被复制或移动到第一文档中时,被移动的文本或数据部分指向或引用一XML模式文件,该XML模式文件根据包括用于包裹文本或数据部分、并用于随该文本或数据部分携带其自己单独的样式或其它格式编排属性的<cfChunk>的模式文件,向与第一文档相关联的XML语法分析应用程序提供对与XML元素相关联的语法和其它定义规则的访问。由此,当第一文档的XML语法分析应用程序遇到元素<cfChunk>时,该应用程序可参考相关联的XML模式,以学习要为被***到第一文档中并与<cfChunk>元素相关联的文本或数据部分特别处理的、包裹在<cfChunk>元素内的结构中所包含的样式和其它格式编排指示。由此,根据本发明的实施例,如以下示例性XML结构所示,当第三段被***到第一文档中时,与该文本部分相关联的样式和其它格式编排属性由接收被***的文本或数据部分的应用程序所兑现,而不考虑与***该文本部分的文档相关联的潜在的冲突的样式或其它格式编排属性。该应用程序执行必要的工作以解析任何冲突,并将该段落的样式引用正确地与适当的样式相关联。
<?xmlversion=″1.0″encoding=″UTF-8″standalone=″yes″?>
<w:wordDocument
xmlns:w=″http://schemas.microsoft.com/office/word/2003/wordml″
xmlns:wx=″http://schemas.microsoft.com/office/word/2003/auxHint″
w:macrosPresent=″no″w:embeddedObjPresent=″no″w:ocxPresent=″no″
xml:space=″preserve″>
<w:styles>
<w:versionOfBuiltInStvlenamesw:val=″4″/>
<w:latentStvles w:defLockedState=″off″
w:latentStvleCount=″156″/>
<w:style w:type=″paragraph″ w:default=″on″
w:stvleId=″Normal″>
<w:namew:val=″Normal″/>
<w:rPr>
<wx:fontwx:val=″Times New Roman″/>
<w:szw:val=″24″/>
<w:sz-cs w:val=″24″/>
<w:lang w:val=″EN-US″ w:fareast=″EN-US″
w:bidi=″AR-SA″/>
〈/w:rPr>
〈/w:stvle〉
<w:style w:type=″character″ w:default=″on″
w:styleId=″DefaultParagraphFont″>
<w:namew:val=″Default Paragraph Font″/>
<w:semiHidden/〉
〈/w:style〉
<w:stylew:type=″list″w:default=″on″w:styleId=″NoList″>
<w:namew:val=″NoList″/>
〈w:semiHidden/>
〈/w:style>
<w:stylew:type=″table″w:default=″on″w:styleId=″TableNormal″>
<w:namew:val=″Normal Table″/>
<wx:uiNamewx:val=″Table Normal″/>
<w:semiHidden/>
<w:rPr>
<wx:fontwx:val=″TimesNewRoman″/>
</w:rPr>
<w:tblPr〉
<w:tblIndw:w=″0″w:type=″dxa″/>
<w:tblCellMar>
<w:topw:w=″0″w:type=″dxa″/>
<w:leftw:w=″108″w:type=″dxa″/>
<w:bottomw:w=″0″w:type=″dxa″/>
<w:rightw:w=″108″w:type=″dxa″/>
</w:tblCellMar>
</w:tblPr>
</w:style>
</w:styles>
<w:body>
<w:p>
<w:r>
<w:t>The quick brown fox jumps over the lazy
dog.</w:t>
</w:r>
</w:p>
<w:p>
<w:r>
<w:t>Teq uick brown fox jumps over the lazy
dog.</w:t>
</w:r>
</w:p>
<w:cfChunk>
<w:styles>
<w:stylew:type=″paragraph″w:styleId=″myStyle″>
<w:namew:val=″myStyle″/>
<w:basedOnw:val=″Normal″/>
<w:rsidw:val=″000874C3″/>
<w:pPr>
<w:pStylew:val=″myStyle″/>
</w:pPr>
<w:rPr>
<wx:fontwx:val=″Italics″/>
<w:colorw:val=″FF0000″/>
</w:rPr>
</w:style>
</w:styles>
<w:p>
<w:pPr>
<w:pStylew:val=″myStyle″/>
</w:pPr>
<w:r>
<w:t>The quick brown fox jumps over the lazy
dog.</w:t>
</w:r>
</w:p>
</w:cfChunk>
<w:p/>
</w:body>
</w:wordDocument>
具有替换文件格式的上下文无关的文档部分
如上所述,根据现有技术方法和***,当数据或内容部分被添加到具有和接收文档不同的文件格式的文档中时,接收文档可能不能以用包括样式、字体等适当格式编排属性来正确显示传入部分的方式来处理传入部分。或者,当传入部分和接收文档的格式编排类型不同,则接收文档可能不能完全加载传入部分。例如,如果根据超文本标记语言(HTML)格式化的一部分数据被复制到根据可扩展标记语言(XML)格式化的文档中时,HTML部分可能不能被加载,因为负责处理和显示文档的应用程序可能不理解传入部分的内容是什么。如以上参考图4和5所述,传入的文本或数据部分可被包裹在<cfChunk>XML标签中,且应用于该文本或数据部分的XML注释标识与传入的文本或数据部分相关联的诸如样式、字体等格式编排信息,以使进行接收的XML表示的文档可在文档被运行(launch)且传入的文本或数据部分被集成(即,合并、复制、移动、连接)到所运行的文档的时候,确定或解析要被应用于传入的文本或数据部分的格式编排属性。
根据本发明的另一个实施例,将XML<cfChunk>注释应用于传入的文本,这些传入的文本、数据或其它内容部分提供自描述属性以通知接收文档和应用程序关于与传入的或被引用的文本、数据或其它内容部分相关联的替换文件格式类型,以通知进行接收的XML表示的文档传入部分和接收文档所用的是不同的文件格式类型。图6是根据本发明的实施例示出具有自描述的替换文件格式的上下文无关的文档部分被***到基于XML的文档中的简化框图。如图6所示,示出XML表示的文档610,例如备忘录或文章等文字处理文档。图示XML文档610对文档应用了各种XML结构。例如,对文档应用<heading>标签615,用于对要输入到文档中的头信息进行结构化。对文档应用<body>标签620,用于对被***到文档610的正文中的文本、数据或其它内容进行结构化。如本领域技术人员应理解,图6所示的示例性XML结构并不意味着表示构造良好的XML标签和相关联的结构。图6所示的示例性XML结构和信息仅是示例性目的。
仍参考图6,对<body〉标签620内的XML文档610应用了3个<cfChunk>标签625、630、635。根据本发明的实施例,使用<cfChunk>标签625、630、635,以上下文无关的方式注释传入的文本、数据或其它内容部分,以允许传入部分对XML文档610是自描述的。如以上参考图4和5所述,用来生成和/或编辑XML文档610的应用程序调用一XML语法分析应用程序,该语法分析应用程序或与所使用的应用程序集成,或由所使用的应用程序调用,以对应用于XML文档610的XML结构进行语法分析。
根据本发明的实施例,当XML语法分析应用程序对分别与部分640、645、650相关联的XML<cfChunk>标签625、630、635进行语法分析时,语法分析应用程序确定被应用于每一个传入的内容部分的指定的文件格式类型和格式编排信息。例如,要被***到XML文档610的正文中的第一传入部分640已与<cfChunk1>标签相关联,并标识传入部分的文件格式类型为HTML。还标识了“style:1”的样式类型。由此,应用程序(例如,负责生成、编辑和显示XML文档610的文字处理应用程序125)通过对应用于文档610的XML结构进行语法分析,得知被***的内容部分640是根据HTML来格式化的,并且具有“style:1”的格式编排样式。由此,用来生成和/或编辑XML表示的文档610的应用程序可根据与传入部分相关联的文件格式类型和样式来处理传入内容部分640。例如,参考传入部分640,接收应用程序将会知道必须根据超文本标记语言来处理、读取和显示该传入部分,或者必须将传入部分从HTML文件格式转换成适用于由接收应用程序处理的另一种文件格式类型。类似地,接收应用程序将会知道,应当用与所标识的格式编排属性“style:1”相关联的例如字体、样式等格式编排属性来显示该传入部分。
如图6所示,示出第二传入内容部分645。图示第二传入部分645具有富文本格式编排(RTF)的文件格式类型,采用标识为“style:4”的样式。如同传入部分640的情况,用来自描述传入的内容部分的信息可被接收或消耗应用程序用来理解与传入部分相关联的格式类型,并用来理解被应用于传入内容的任何相关联的格式编排属性。类似地,图示第三传入部分650具有相关联的二进制文件格式类型和相关联的样式“style:2”。如同其它传入的内容部分的情况,接收或消耗应用程序可利用所标识的文件格式类型以及诸如所标识的样式属性等其它信息来接收和处理传入的内容部分。
根据此实施例,接收或消耗应用程序(例如,文字处理应用程序)可按照与传入的内容部分相关联的文件格式类型来使用那些部分。根据现有技术方法和技术,传入部分可能不能由接收应用程序加载,或者即使传入部分被接收应用程序成功加载,相关联的文本、数据或其它内容也可能受到不正确的处理。例如,传入部分可能以令人不满意的方式被显示。因为接收应用程序可确定传入内容的原始文件格式类型,所以接收应用程序可采取恰当的行动,诸如转换传入的内容,或诸如调用理解、消耗和利用传入内容所需的软件编程。例如,如果传入内容是根据HTML格式化的,则接收应用程序或可在使用传入内容之前转换该内容,或可访问利用(例如,显示)该传入内容所需的代码。由此,根据本发明的实施例,因为接收应用程序解析传入内容的格式编排属性,如以上参考图4和5所述,接收应用程序还可解析与传入内容相关联的替换文件格式。
根据本发明的一个实施例,负责接收或消耗本文中所描述的内容部分的软件应用程序(例如,文字处理应用程序、数据表应用程序、幻灯片演示应用程序、桌面排版应用程序等)同样可创建或生成上下文无关的数据部分640、645、650,以供其它应用程序使用。当数据部分被此类应用程序保存时,或当数据部分被复制以粘贴到由另一个文档操作的文档中时,用来生成上下文无关部分的应用程序可对数据应用<cfChunk>注释,且该应用程序可将属性保存到数据部分,以标识与数据部分以及诸如格式编排(例如,粗体、斜体、字体、等等)等其它属性相关联的文件格式。例如,如果生成上下文无关部分640、645、650的应用程序根据HTML格式生成数据,则所生成的供其它应用程序使用的上下文无关的数据部分可被注释以标识HTML为与该上下文无关的数据部分相关联的文件格式。当消耗应用程序如上所述地接收该数据时,该消耗应用程序可根据生成应用程序应用于该数据部分的相关联的文件格式及其它格式编排属性来读取和使用该上下文无关部分。
现在参考图7,根据本发明的另一个实施例,可将接收文档710和一个或多个传入内容部分730、735、740包含在电子文件容器700中。例如,文件容器700可表示诸如.ZIP等文件格式。根据实施例,如果文件容器700被选择或打开,则XML接收文档710和每一个相关联的内容部分730、735、740可被标识和可视化地表示为单独的文件。根据此实施例,每个传入内容部分730、735、740并非如以上参考图6所述地被内联地***或填充到接收文档710中,而改为由接收文档710引用一关系文件750,该关系文件750进而指向传入的内容部分,并向接收文档710和负责处理接收文档710以利用传入的内容部分的应用程序提供信息。
如图7所示,XML文档710表示作者/编辑者所生成的接收文档,而内容部分730、735、740表示要与接收文档710合并的传入的内容部分。接收文档710包括三个内容引用715、720、725。根据本发明的实施例,文件容器700被链接到包括一关系树的关系文件750,该关系树说明接收文档710和在接收文档应用程序(例如,文字处理应用程序、数据表应用程序、幻灯片演示应用程序、等等)一旦加载和/或运行文档时,即要与接收文档710合并的传入的内容部分之间的关系。
参考关系文件750,XML文档710中所标识的每一个内容引用都指向相关联的传入内容部分。根据本发明的实施例,当负责操作接收文档710的软件应用程序(例如,文字处理应用程序、数据表应用程序、幻灯片演示应用程序、等等)加载接收文档710时,文档710由相关联的语法分析应用程序(例如,XML语法分析器)进行语法分析以用于应用于接收文档710的结构。当每一个引用715、720、730都已被语法分析时,接收应用程序参考关系文件750,以确定所标识的引用指向哪个传入的或相关联的内容部分。例如,当XML文档710已被语法分析时,发现第一引用715指向第一内容部分730,这是具有HTML文件格式类型的内容部分。当XML文档710中的第二引用720已被语法分析时,对关系文件750的参考确定第二引用720指向具有RTF文件格式的第二传入内容部分735。类似地,当接收文档710中的第三引用已被语法分析时,对相关联的关系文件750的参考显示,第三引用725指向具有二进制文件格式类型的第三传入部分740。一旦解析了诸如与被引用内容相关联的文件格式类型等所有信息,接收应用程序即可将被指向的内容部分与接收文档合并,以显示合并后的文档。如参考图7所描述的文档组件的包含和关联的详细讨论,见于2004年12月20日提交的代理人档案号60001.0440US01、申请人档案号309861.01、序列号________,题为“ImprovedManagement And Use Of Data In A Computer-Generated Document”(对计算机生成的文档中的数据的改进的管理和使用)的美国专利申请,其全部内容通过引用包含与此。
如本文中所描述,提供了用于将文本或数据部分***到文档、或将文本或数据部分与文档相关联的方法和***,其中被***或关联的文本或数据部分随之携带其自己的文件格式类型以及诸如指定的样式、字体、列表类型等其它格式编排属性,以允许接收应用程序正确地处理该文本或数据部分。对本领域技术人员而言,显然可在本发明中作出各种修改或变体,而不会偏离本发明的范围和精神。通过考虑本说明书并实施本文中所揭示的发明,本发明的其它实施例对本领域技术人员将是显而易见的。