具体实施方式
贯穿说明书和权利要求书,以下术语采用此处明确相关联的含义,除非上下文清楚地另外指明。
术语“数据”指的是文字处理文档带有的、引用的或使用的任何补充信息。该信息通常是巨大的,且不太可能全部在文档的呈现层上展示。
术语“标记语言”或“ML”指的是文档内指定应用程序将如何解释文档的各部分的专用代码的语言。在文字处理软件文件中,标记语言指定如何格式化或布置文本。
术语“元素”指的是XML文档的基本单元。元素可以包括属性、其它元素、文本和XML文档的其它内容区域。
术语“呈现”指的是文档的可视部分——如果打印文档则会出现的文本和布局。
术语“标签”指的是描绘XML文档内的元素的***到文档中的字符。每一元素可以含有仅仅两个标签:开始标签和结束标签。可能有空元素(没有内容),在这种情况下,允许一个标签。
标签之间的XML内容被认为是元素的“子元素”(或后代)。因此,嵌入在元素内容中的其它元素被称为“子元素”或“子节点”或元素。直接嵌入在元素内容中的文本被认为是该元素的“子文本节点”。子元素和元素内的文本一起构成了元素的“内容”。
术语“属性”指的是被置为特定值并与元素相关联的附加性质。元素可以含有与之相关联的任意数量的属性设置,包括没有属性设置。属性被用来将附加信息与不含有附加元素的元素相关联,或被作为文本节点来对待。
术语“内容区域”指的是作为用户输入的一种类型的内容的容器的文档的有界和/或可任选标注的区域。见于2004年9月30日提交的,转让给本发明的受让人的名为“Methods,System,and Computer-Readable Medium For ManagingSpecific Types of Content In An Electronic Document(用于管理电子文档中特定类型内容的方法、***和计算机可读介质)”的美国申请第10/955,612号,该申请通过整体引用包含在此。
“XPath”是使用模式表达式来标识XML文档中的节点的操作符。XPath模式以斜杠分割的子元素名称列表,它描述通过XML文档的路径。模式“选取”匹配路径的元素。
术语“XML数据存储”指的是文字处理文档内的容器,当文件打开时它提供对存储在文字处理软件文档中的数据(例如,以XML格式)的存储和修改的访问。
术语“数据绑定”指的是内容区域上的属性,它确定文字处理软件文档内其中可以存储内容区域的内容的一个或多个XML数据片断中的XPath位置。如此处所用的:
“ref”-指的是由个别绑定使用的每一绑定的XML文档的唯一整数;
“ID”-指的是XML数据存储中特定XML文档的唯一ID
“selectionNamespaces”-指的是XML数据存储中相关联XML文档的前缀映射(将名字空间与简短缩写相关联);以及
“rootURI”-指的是XML数据存储中相关联XML文档的根名字空间
说明性操作环境
本发明的实施例提供了用于创建其中可以分离XML数据的存储和呈现的文字处理软件文档的文字处理软件应用程序。更具体地,可以被输入到文字处理软件应用程序中并从中提取的数据被存储在与文字处理软件文档的呈现格式分离的位置中。从而,文字处理软件应用程序的用户可以为包含在文字处理软件文档中的XML数据创建分离的存储位置,并建立该数据内容和呈现表面之间的链接(或绑定),使得用户能够通过编辑该呈现的内容来编辑相关联的XML数据,而且防止用户改变相关联的XML数据的结构。例如,***的数据可以按文字处理软件文件格式来分离地存储为XML,使得在文档中来回移动链接的位置不会改变分离的数据存储的结构。这样,使得对该结构化数据的后端处理更容易,因为数据现在具有不受用户编辑文档的方式影响的已知结构。用户可以在文字处理软件文档中编辑数据、格式化数据,包括丰富呈现格式化等,且仅有对文本内容的改变被‘推’回到存储在该文档后方的XML数据。然而,根据本发明,通过与文字处理软件文档的用户交互来更新的所有数据可用于XML的原始本地流。从而本发明也使得能够通过直接改变链接的XML数据来修改文字处理软件文档的内容,而无需处理可能不断改变的该数据的呈现格式的复杂性。这样做,极大地简化了对文字处理软件文档中的结构化数据的添加、编辑和提取。
参考图1,用于实现本发明的一个示例性***包括计算设备,诸如计算设备100。在最基本的配置中,计算设备100一般包括至少一个处理单元102和***存储器104。取决于计算设备的确切配置和类型,***存储器104可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。***存储器104一般包括操作***105、一个或多个应用程序106,且可以包括程序数据107。在一个实施例中,应用程序106可以包括文字处理软件应用程序120。该基本配置在图1中由虚线108内的组件示出。
计算设备100可具有其它特征或功能。例如,计算设备100还可包括诸如,例如磁盘、光盘、或磁带等附加数据存储设备(可移动和/或不可移动)。这样的附加存储在图1中由可移动存储109和不可移动存储110示出。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。***存储器104、可移动存储109和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术,CD-ROM、数字多功能盘(DVD)或其它光存储,磁带盒、磁带、磁盘存储或其它磁性存储设备,或可用来存储所需信息并可由计算设备100访问的任何其它介质。任何这样的计算机存储介质都可以是设备100的一部分。计算设备100也可以具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入设备。也可以包括诸如显示器、扬声器、打印机等的输出设备。在本领域中,这些设备是公知的,无需在此处详细讨论。
计算设备100也可以包含允许设备诸如通过网络等与其它计算设备118通信的通信连接116。通信连接116是通信介质的一个示例。通信介质通常可具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。术语“已调制数据信号”是指以在信号中将信息编码的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接线连接的有线介质,以及诸如声学、RF、红外及其它无线介质的无线介质。如此处所用的术语计算机可读介质既包括存储介质又包括通信介质。
可以在计算设备100的***存储器104中存储多个程序模块和数据文件,包括适用于控制联网的个人计算机的操作的操作***105,诸如来自华盛顿州雷蒙德市微软公司的WINDOWS XP操作***。***存储器104也可以存储一个或多个程序模块,诸如文字处理软件应用程序120以及以下所述的其它程序模块。文字处理软件应用程序120可用于提供用于创建、编辑和处理电子文档的功能。
根据本发明的一个实施例,文字处理软件应用程序120包括来自微软公司的WORD程序。然而,应该理解,可以使用来自其它制造商的文字处理软件应用程序来实施本发明的各个方面。还应理解,本发明的各个方面不限于文字处理软件应用程序,而也可以利用能够处理各种形式的内容(例如,文本、图像、图片等)的其它应用程序106,诸如电子表格应用程序、数据库应用程序、演示应用程序、绘图或计算机辅助应用程序等。
本发明的实施例可以被实现为计算机进程、计算***或者诸如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机***可读的且编码用于执行计算机进程的指令的计算机程序的计算机存储介质。计算机程序产品还可以是载波上所传播的计算***可读的且编码用于执行计算机进程的指令的计算机程序的信号。
在文字处理软件应用程序中绑定数据
图2是示出用于实施本发明的实施例的示例性环境的框图。图2中所示的示例性环境是文字处理软件环境200,包括文字处理软件应用程序202、文字处理软件文档204、编程环境206、数据存储208、模式文件210以及XML处理模块212。然而,如上所述,本发明也可适用于能够处理各种形式的内容(例如,文本、图像、图片、等等)的其它应用程序106,诸如电子表格应用程序、数据库应用程序、演示应用程序、绘图或计算机辅助的应用程序等等。编程模块206可为XML处理模块212提供简单的应用程序编程接口(API),它允许开发修改文档204或者XML数据存储208的内容的代码。可以理解,本发明不旨在由此处所述的任何特定实施例或示例来限制。例如,文字处理软件环境可包括多个文字处理软件文档204、数据存储208和/或模式文件210。根据本发明的实施例,文字处理软件应用程序202使用XML处理模块212来处理根据可扩展标记语言格式化的数据。一个合适的XML处理模块212是华盛顿州雷蒙德市微软公司所制造并销售的MSXML。
文字处理软件应用程序202包括其自己的一个或多个名字空间和一个或一组模式210,它们被定义以用于与文字处理软件应用程序202相关联的文档204。由模式210为文字处理软件应用程序202定义的该组标签和属性定义了文档204的格式。如下所述,并根据本发明的实施例,数据存储208可以包括数据209。较佳地,模式210被附加至数据存储208内的数据209。文字处理软件文档204也包括如下所述的由用户创建的内容区域207。可以作为文字处理软件应用程序202的一部分包括一个以上数据存储208、相关联的XML数据209和模式210。为了提供带有管理可能被包括在给定XML数据209中的数据的类型和结构的一组语法和数据类型规则,可以将一个或多个XML模式210与XML数据209相关联,用于提供管理用户可用来注释给定XML数据209的每一个XML元素和标签的规则。模式210包括管理将那些元素应用于XML数据209的顺序的规则以及与应用于XML数据209的各个元素相关联的特定规则。
本发明的实施例提供可用于创建文字处理软件文档204的文字处理软件应用程序202,文档中的数据和呈现可通过与文字处理软件文档一起存储的分离的数据存储208的存在而被分离。更具体地,可输入到文字处理软件文档204中或从中提取的数据被存储在文档的数据存储208内的一个或多个XML数据209文件中,由此将数据与文字处理软件文档204的呈现格式分离。从而,文字处理软件应用程序202的用户可以为文字处理软件文档204的数据创建分离的存储位置,并在该数据的内容与呈现表面203之间建立与一个或多个内容区域207相关联的链接(或绑定)205,使得用户能够通过编辑呈现的内容来编辑数据,但是通过同一标记防止用户改变数据209的结构。在文档204中来回移动内容区域207的位置不会改变分离的数据存储208中的XML数据209的结构。而且,对数据的呈现(如粗体、斜体、对齐等)所作的改变不影响数据结构。由此,由于XML数据209对应于不受用户编辑文档204的方式影响的已知结构,从而简化了结构化数据的后端处理。
本发明的实施例使得能够通过直接改变所链接的数据来修改文字处理软件文档204的内容,而无需处理可能不断改变的呈现格式的复杂性。这样做极大地简化了对文字处理软件文档204中的结构化数据的添加、编辑和提取。此外,绑定到结构化XML数据209的数据绑定205可在文档204中来回移动,而不会影响数据的结构。较佳地,使用XPath表达式来实现内容区域207上的数据绑定205,该表达式可经由用户界面或编程窗口206来定义。
用户使用XPath表达式(用于标识XML树中的节点213的标准XML方法)来唯一地标识文档内容区域应被绑定到的期望XML节点213。文字处理软件应用程序202用于自动剖析和使用XPath以定位数据绑定区域的期望目标。这也意味着熟悉XPath标准的开发者可充分利用XML的这一用途来创建本质上半动态的数据绑定205。即,基于对数据209的其它改变或对呈现203的改变来标识不同的目标节点213。例如,假设用户想要显示在给定时间段里完成最高销售额的雇员的名字。如果此信息位于与文档204相关联的XML数据209中,则用户可创建链接至具有最高的已完成事项的个人的名字的XPath表达式,并且随数据改变该链接自动转移到适当的位置(节点213)。链接也可以通过使用代码211、用户界面、或编程环境206在节点213之间改变。
或者,用户可创建唯一标识文档内容区域207应被绑定至的数据209中对象表示节点213的数据绑定。文字处理软件应用程序202用于自动确定XPath,以为数据绑定区域定位期望目标。然而,这意味着在该情况下,数据绑定205将自动更新其XPath以确保与同一XPath表达式相比,数据绑定205指向同一对象。
如上文所简要所述的编程代码211可以被开发成使用XML处理模块212,并对在任一方向上移动(即,从文档表面203上的内容区域207到数据存储208中的XML数据209中的节点213,或相反)的改变作出反应。用户可开发定义文档表面203和数据存储208内的特定内容之间的关系的代码211。此外,代码211可以被开发成对文档204的绑定区域内或数据存储208内的改变作出反应,以俘获或截取诸如编辑、添加、删除等的事件。例如,假设用户想要确保至多一个文档可以使用一个特定标题。基于输入到标题节点中的内容,代码211可以对照中央数据库检查该标题是否已被使用。如果该标题已被采用,则代码211可提示用户输入另一个标题和/或警告用户该标题不可用。本发明的实施例使得用户能够使用相关联的XML一次性编写代码211,且该代码如今可被移植到支持XML构造的使用的所有文档类型,而无需担心目标应用程序的确切语义,从而极大地简化并流线化应用程序开发。
根据本发明的实施例,可用表示文本的特定区域(例如,标题、正文等)的语义的内容区域207来对文字处理软件文档204添加标签,并且通过添加数据绑定205,该内容区域207内的相关联文本现在被存储在文档204内的数据存储208中的某个XML数据209内的节点213中。使用一个或多个数据绑定205,数据209被链接到文档中的内容区域207,即,被标签的区域。从而,如今数据209可被存储在其自己的XML流中的一致位置(“数据存储”),而无论数据绑定205在文档204的呈现203(即,编辑特定文档时用户与之交互的数字表示,例如描绘特定用户文档的WORD窗口)中的何处定位相关联的内容,或者如何呈现数据209。这样,用户不必担心在文档204中来回移动数据,因为XML数据209如今被定位在一个一致的位置中的数据存储208内。而且,数据存储208可包含未被文档204内的数据绑定205所引用的数据209。诸如元数据等的这些“额外”数据向诸如解决方案开发者等用户提供可能与文档用户无关的附加信息。
根据本发明的实施例,数据的结构被保存在分离的位置中,即文档的数据存储208内的一个或多个XML数据片断209中,从而使得用户能够在呈现203中来回移动链接(即,数据绑定205),而不影响数据结构。从而,XML数据209的结构不会改变,仅有与文字处理软件文档204相关联的XML数据209的呈现改变。这样,对文档204中的数据呈现的格式的改变不影响数据存储208的结构。通过操纵文档表面203用户并不移动实际数据209-这样用户对呈现拥有完全的控制,而无需考虑在存储208中分开维护的数据209的衍生物。因此,本发明的实施例允许用户访问与呈现信息分离的自定义XML信息。
可以使用一个或多个数据绑定205将数据源的内容(数据存储208中的XML数据209,此处称为XML数据209)“绑定”到文档204中的位置。如此处所使用的,XML数据209包括诸如文本(纯文本或丰富格式的文本)、图像、特定类型(日期)的内容等任何类型的内容。数据绑定205的结构可以被描述为XPath链接,它允许文字处理软件应用程序202连接至/与之同步化/持久链接至与文档204相关联的XML数据存储208中的XML节点213。XML数据存储208较佳地是文档204的一部分(即,存储208是与文字处理软件文件一起保存的,并随特定文档204行进或与之相关联)。数据绑定205也可以包含用于控制应如何在呈现(例如,文字处理软件的文档表面203)和数据存储208之间变换数据的信息。文字处理软件应用程序202的用户可允许存储在数据存储208中的数据209(由后端应用程序操纵的数据)以标准格式存储,但在文字处理软件文档204中以较友好的格式呈现同一信息(例如,用户看到的是1月29日,2004年,但该数据是按照29-01-004T12:00:00.0000来以dateTime格式存储的)。作为另一个示例,数据绑定信息可包含图像——对数据209而言,该图像被表示为看起来无意义的字符串,但上述同一变换原理意味着用户将在文字处理软件文档204的内容区域207中看到一个图像。用户可添加/改变图像,且XML编码的表示将被持久化为XML数据209,以使任何后端进程可以存储/操纵该信息。
根据一个实施例,当用户向内容区域207添加数据绑定信息205时,用户通过指定XPath表达式来提供所关心的链接的XML数据209(例如,标识了一个或多个节点213)。一旦被绑定,该内容区域207的内容将被链接或绑定至由该XPath返回的节点213的内容(XML数据)。因此,这意味着如果XML节点213是以由XPath返回的XML节点213改变的方式被添加/移除/改变的,则文档204中的内容区域207的内容自动更新。或者,如果发生导致特定数据绑定205不返回任何XML节点213的改变,则该数据绑定215进入如下所述的‘悬挂引用’状态。
例如,假定文档204包括以下段落,其中“Microsoft Corporation”对应于纯文本内容区域207(以斜体示出),该内容区域207被绑定到该文本的数据存储208内的某个链接的XML数据209的XPath/contract(1)/header(1)company(1)。显示在呈现203上的段落是:
“Microsoff Corporation is located at One Microsoft Way.”
根据一个实施例,可通过在编程环境206(例如)中指定单行代码来建立链接:
Document.ContentRegion.Add().DataBinding.Add(“/contract(1)/header(1)/company(1)”)
相应的链接的XML数据209可能看起来是(以单引号示出至节点213的链接):
<contract>
<header>
‘<company>Microsoft Corporation</company>’
<company>Contoso Corporation</company>
</header>
</contract>
假设现在用户使用数据存储208 API来添加新的<company>节点213,作为<header>的第一个子节点(新节点213以单引号示出):
<contract>
<header>
‘<company>Fabrikam Corporation</company>’
<company>Microsoft Corporation</company>
<company>Contoso Corporation</company>
</header>
</contract>
内容区域207上所得的绑定205仍旧被绑定到同一XPath(“/contract(1)/header(1)/company(1)”),因此文档内容可以立即更新来显示该节点213的新内容:
“Fabrikam Corporation is located at One Microsoft Way.”
根据本发明,如果文字处理软件文档204的一个或多个区域包含数据绑定的内容区域207,则文档204对任一所链接的内容源的改变作出反应。从而,如果文档204的范围是数据绑定的,那么对相关联的XML数据209中的XML节点213的内容的改变将导致内容区域207的文本的自动改变。相应地,如果文档204的范围是数据绑定的,那么改变文档204中该绑定的内容区域207的文本会导致对相应的XML数据209中的XML节点213的内容的自动改变。即,具有相同绑定205的多个内容区域207可以存在于文档204中的多处。例如,具有至名字的数据绑定205的内容区域207可被添加到文档的头部以及正文。改变这些位置中的任何一个会将使该文本与XML数据存储208同步,XML数据存储208又将在文档204中存在至该节点213的数据绑定205的内容区域207的任何地方反应该改变。
XML数据209中的XML节点213可与文档204具有一对多的关系,这意味着XML数据209中的同一XML节点213可被多个数据绑定205引用。只要更新文档204中数据绑定的内容区域207,即引起对XML数据209中适当的XML节点213的改变,这又使文档204中的其它内容区域207中的所有其它相关联的绑定205使用该新文本来更新。例如,假设文档204的头部中的内容区域207包含为某个XML数据209中的<title/>节点指定XPath表达式的数据绑定205,而文档204的正文中的另一个内容区域207也包含至该同一元素的数据绑定205。根据本发明,这两者会显示相同的内容,即使它们具有不同的格式。如果用户编辑文档204的正文中的内容区域207中的内容,该更新会被持久化到数据存储208中的适当的XML数据209中的适当的XML节点213,引起同样指定该XML节点213的、文档204中与绑定205相关联的所有其它内容区域207(例如,页眉中,页脚中,等等)的更新。本发明的实施例提供用于将文档中的多个位置绑定至数据存储208中的单个XML节点213的机制,当前将所有这三个位置的内容链接到单个数据源。从而,文档204中被链接到XML数据209中的同一节点211的的所有内容区域207的内容是完全相同的。
这样的说明性示例是典型的报告文档,其中用户通常可以在若干位置显示标题:在封面上(以大号粗体文本)、在页眉中(以较小的文本)、以及在页脚中(以较小的斜体文本)。正常地,用户将必须在每个位置打出标题,确保如果这三个位置中的任何一个的标题改变,则他们要记得在其它两个位置改变标题(以保持内容一致)。但是,总是太容易忘记要使所有这三个位置保持同步。根据本发明的实施例,一旦数据存储208被置于包含用户想要在文档204中显示的XML数据209的位置中,文档中的多个位置(例如,上述的三个位置)全部都可以是绑定到数据存储208中的单个XML节点213的内容区域207数据。
因此,所有这三个位置的内容被链接或绑定至单个数据源209。这意味着用户通过改变这些区域中的任何一个(例如,封面)的内容,将自动引起用户的文本被推入至底层XML数据209,然后又被推入至文档204中含有相应的数据绑定205的内容区域207的其它位置(在该情况下,为页眉和页脚)。这意味着如今用户在他们与文档的交互的范围内已链接或绑定了这三个内容范围以使它们完全相同。根据本发明的实施例,文档的各个区域可以用多种方式来呈现(大号粗体、小号斜体等),但数据存储208中的数据结构保持不变。
悬挂引用
根据本发明的实施例,用户也可以指定没有目标的XPath表达式——它们指定的目标XML节点213不存在于数据存储208中的XML数据209中。数据绑定205没有‘忘记’其期望目标节点213,而是进入‘等待’状态,在该状态中,它不被连接至任何特定XML数据209,而是等待来查看期望节点213是否出现在后台XML数据存储208中的XML数据209中。这对于文档组装情形特别有用,在该情形中,文档204的每一部分(例如,标准封面、封底、以及重复使用的条款)可包含数据绑定205,数据绑定205仅应在这些部分被组装为单个最终文档204中时被填充。在该情形中,文档创建者指定每一文档‘部分’中的内容区域207内至不存在于该部分中的XML数据209中的XML节点213的数据绑定205(例如,封面可能包含带有至<Title/>的XML元素和<Date/>的XML元素的绑定205的内容区域)。当该部分在其目标文档外被查看时,那些绑定不被连接,因为不存在任何XML数据209,但只要该部份一被添加到包含期望数据209的文档中,数据绑定205立即连接(同步)至数据209,并显示正确的内容——即允许文档的创建者指定并保存绑定205,即使数据209尚未被生成。
当内容区域207上的数据绑定205没有被成功链接到已链接的XML流中的节点213时(即,内容区域中绑定的状态),发生一种类型的悬挂引用215。当从已链接的XML流中替换/移除节点213时,作为结果,一个或多个数据绑定205可能变为悬挂引用215。较佳地,如果数据绑定205由于其XPath而具有悬挂引用215,那么文字处理软件应用程序202继续将节点213的最后已知的XPath存储在数据绑定205上。当XPath不再解析至任何节点209时可能发生这一情况。每当数据存储208向文字处理软件文档204发送某个XML数据209的更新的消息时,文字处理软件应用程序202就检查是否有任何悬挂引用215被最后的更新所解析(即,XPath如今指向XML树中的有效节点213)。如果文字处理软件应用程序202解析悬挂引用,那么数据存储208的内容较佳地优先于当前在数据绑定205中的内容——即,数据绑定205的内容被数据存储208中的节点213中的内容所取代。较佳地,使用可通过一个或多个编程环境206访问的简单API层来展示悬挂引用。
作为示例,假设文字处理软件204包括以下段落,其中Microsoft Corporation对应于绑定到某个XML数据209中的XPath/contract/header/company(3)的纯文本内容区域207数据:
“Microsft Corporation is located at One Microsoft Way.”
相应的XML数据209可能看起来是(以单引号示出至节点213的链接):
<contract>
<header>
<company>Fabrikam Corporation</company>
<company>Contoso Corporation</company>
‘<company>Microsoft Corporation</company>’
</header>
</contract>
如果诸如开发员等用户使用数据存储208的API来移除<header>下的第一个<company>节点213(单引号中的节点213):
<contract>
<header>
‘<company>Fabrikam Corporation</company>’
<company>Contoso Corporation</company>
<company>Microsoft Corporation</company>
</header>
</contract>
所得的文档204中内容区域207上的数据绑定205维护至同一XPath的链接,因此数据绑定205变为至当前不存在的\contractct\header\company(3)的悬挂引用215:
<contract>
<header>
<company>Ford Corporation</company>
<company>Intel Corporation</company>
</header>
</contract>
这意味着在内部有断裂的链接,但根据本发明,内容区域207的内容不会改变,也不会发生错误,即,
“Microsoft Corporation is located at One Microsoft Way.”
当某个XML数据209被替换或移除时(或当一链接从一个文档被移到另一个文档时),则引用该XML数据209的所有数据绑定205立即变为指向已删除XML数据209的悬挂引用215。如果数据绑定205包含悬挂引用215,那么文字处理软件应用程序202继续存储与该数据绑定205相关联的最后已知的XPath/名字空间链接。根据本发明的一个实施例,当一组数据绑定205变为悬挂引用215时,文字处理软件应用程序202试图将这些链接重新附加至相关联的XML数据存储208中的任何其它可用的XML数据209。如果任何数据绑定205的确解析到另一个XML数据209中的节点213,那么所有的悬挂引用215都关联至该XML数据209,从而更新数据绑定205当前连接的相关联内容区域207。如果该XML数据209没有导致对任何悬挂引用215的有效数据绑定205,那么文字处理软件应用程序202对数据存储208中的每一XML数据209等执行类似的检查。如果没有XML数据209可用于悬挂引用215,那么该绑定保持为至原始XML数据209的悬挂引用215。
参考图3中所示的流程图,并继续参考图2,描述了本发明的一个实施例。图3中所示的过程300在302处开始,那时用户使用文字处理软件应用程序202打开文字处理软件文档204。在304处,文字处理软件应用程序创建数据存储208,然后在310处使用存储在文字处理软件文档204中的、或通过使用用户界面或编程窗口206请求的任何XML数据209填充数据存储208。数据存储208较佳地作为文档204的一部分被包括在内,但在文档编辑表面203上不可见。可以理解,可在创建内容区域207和数据绑定205之前装载数据存储208。同样地,可在数据存储208之前创建内容区域207。换言之,图3中所示的各个操作不必以任何特定顺序来执行,并可根据特定用户的偏好来实现。
在306处,用户创建存在于文档204的表面203上的一个或多个内容区域207。注意,也可以从文档204的现有内容读取这些内容区域。在308处,用户可通过提供特定的链接的XML数据209和指定目标节点213的XPath表达式来将数据绑定信息与内容区域207相关联。一个或多个数据绑定将数据存储208中的XML数据209的一个或多个节点213链接到一个或多个内容区域207。数据绑定205成为绑定的或悬挂的。如上所述,每一节点213可被绑定至多个内容区域207,内容区域207中的每一个指定至同一XML节点213的数据绑定205。而且,数据绑定205可被链接到多个数据存储208。在309处,用户可以在内容区域207或者数据存储208中创建XML数据。在310处,文字处理软件应用程序202将所有XML数据装载至数据存储208中。在312处,文字处理软件应用程序202从文档204或按照用户所请求的(306)装载内容区域207,并且在314处,文字处理软件应用程序202从文档204或按照用户所请求的(308)装载数据绑定205。在316处,文字处理软件应用程序202检查是否存在与特定数据绑定205所指定的节点213相关联的XML数据209。
如果XML数据209不存在,那么在318处,文字处理软件应用程序202确定同一XML名字空间内是否存在其它XML数据209。在316处,如果XML数据209被定位在数据存储内,那么在320处,文字处理软件应用程序202确定是否存在所指定的XPath的相关联的XML节点213。如果该XPath存在,那么在322处,文字处理软件应用程序202通过数据绑定将各个文档内容,即内容区域207以及任何其它所链接的内容连接至一个或多个相关联的XML节点213。如果在320处没有定位到XPath,那么在324处,文字处理软件应用程序202将该特定数据绑定205标记为悬挂引用215(进入悬挂状态)。如果在318处,在数据存储208内的同一XML名字空间中找到其它XML数据209,那么在326处,文字处理软件应用程序202再次检查在该数据内是否存在XML节点213。
如果XML数据209不存在,那么在324处,文字处理软件应用程序202将特定数据绑定205标记为悬挂引用(进入悬挂状态)。如果在326处发现XML数据209存在,那么在328处,文字处理软件应用程序202在XML数据209内搜索期望的XPath。如果在320处找到节点213,那么在322处,文字处理软件应用程序202将文档内容,即内容区域207以及任何其它所链接的内容连接至一个或多个相关联的XML节点213。
应该理解,本发明的各个实施例的逻辑操作被实现为(1)计算机实现的动作序列或计算***上运行的程序模块,和/或(2)计算***内相互连接的机器逻辑电路或电路模块。实现方式是取决于实现本发明的计算***的性能要求进行选择的问题。从而,组成此处的本发明的实施例的逻辑操作被不同地称为操作、结构设备、动作或模块。本领域技术人员将认识到,这些操作、结构设备、动作以及模块能够用软件、固件、专用数字逻辑、及其任何组合实现,而不背离如所附权利要求书中所阐述的本发明的精神和范围。
以上说明书、示例及数据提供了制造和使用本发明的组成部分的完整描述。因为可实现本发明的众多实施例而不背离本发明的精神和范围,所以本发明驻留在所附权利要求书中。