用于绑定数据的可编程性的制作方法

文档序号:6651262阅读:91来源:国知局
专利名称:用于绑定数据的可编程性的制作方法
相关申请的参照本申请是微软公司所拥有的、于2005年1月6日向美国专利商标局提交的,题为“Data Binding In A Word-Processing Application”(文字处理应用程序中的数据绑定),代理人档案号60001.0459US01/MS310225.1的专利申请的部分继续申请,其全部内容通过引用包含于本文中。
本申请涉及题为“METHOD AND APPARATUS FOR UTILIZING AN OBJECTMODEL FOR MANAGING CONTENT REGIONS IN AN ELECTRONICDOCUMENT”(利用对象模型管理电子文档中的内容区域的方法和装置),代理人档案号14917.0059USI1/MS310649.01,以及题为“MOTHOD AND APPARATUSFOR UTILIZING AN EXTENSIBLE MARKUP LANGUAGE SCHEMA FORMANAGING SPECIFIC TYPES OF CONTENT IN AN ELECTRONICDOCUMENT”(利用可扩展标记语言模式管理电子文档中特定类型的内容的方法和装置),代理人档案号14917.0060USI1/MS310650.01的专利申请,上述两个专利申请均为微软公司所拥有,并与本申请同时提交,且其全部内容通过引用包含于此。
背景技术
近年来标记语言大行其道。一种类型的标记语言,即可扩展标记语言(XML),是一种提供标识、交换和处理各种类型的数据的方法的通用语言。例如,XML被用来创建可由各种应用程序使用的文档。XML文件的元素通常具有相关联的名字空间和模式。
名字空间是XML文档中用来定义元素/属性名字和类型的名字集合的唯一标识。名字空间的名字通常被用来唯一地标识每个XML文档类。该唯一的名字空间区分来自不同的源但恰巧具有相同名字的标记元素。
XML模式提供一种在XML环境中描述和验证数据的方法。模式陈述什么元素和属性被用来描述XML文档中的内容,每个元素在哪些地方被允许,什么类型的内容在其内被允许,以及哪些元素可在哪些其它元素内出现。模式的使用确保文档以一致和可预测的方式被结构化。模式可由用户创建,并且一般受到诸如XML等相关联的标记语言的支持。通过使用XML编辑器,用户可操纵XML文件,并生成符合该用户所创建的模式的XML文档。在先前的文字处理器应用程序中,对自定义的XML模式的支持被添加到应用程序中,以使用户能够用自定义的XML标记(例如,<title>)来‘标记’文档的内容,这本质上给了先前未归类的一连串文本语义意义。这意味着,先前只是具有格式编排、但没有意义供其它应用程序处理的文本如今可以是包含特定XML标记片段的结构化的XML文档,这些XML标记片段来自任何用户定义的XML模式,且任何其它知道XML的应用程序都可定位和理解该XML模式。
在一基本示例中,文档顶部的文本可用来自用户定义的XML模式的<title>XML元素‘标记’为标题,这意味着其它知道XML的应用程序如今可容易地理解此范围的文本包含一“标题”并可正确地提取该标题。这使得后端过程能够用适当的语义和上下文智能地提取文档的部分(例如,此文本是<title>)。
但是,与先前的文字处理器应用程序相关联的缺点源自以下事实,即自定义的XML标记的添加和持久化依赖于文档的呈现。即,在现有实现中,在文字处理器文档的XML标记(例如,以XML格式表达的顾客发票的细节)和它在文档表面上的呈现(例如,三页明文接下来是4行5列的w/a特定表格样式的表格)之间有不可避免的关联。因此,先前的文字处理器应用程序中所表示的XML数据(因为它依赖于呈现)必需与文档的内容严格一致。例如,如果发票所用的XML模式陈述<date>出现在<address>之前,而<address>出现在<phoneNumber>之前,则这三个XML元素必需严格按照文档中所呈现的次序出现。这意味着呈现格式的改变(例如,移动包含<date>的表格行)还会引起该文档中所包含的XML数据的结构的改变,这要求解决方案开发者一方额外的步骤来确保此数据符合相关联的XML模式的结构。由此,文档的终端用户没有只有操纵呈现的自由,因为这样做可能总是改变数据的语义,从而潜在地违反该数据的XML模式。
此外,在先前的文字处理器应用程序之上开发的解决方案在试图为后端应用程序读/写来自文档的数据时,需要更仔细地考虑呈现的蕴含。因此,如果一段粗体文本被标记为标题,则先前的文字处理器应用程序所保存的结果XML看起来将会是以下形式<w:p>
<Title>
<w:r>
<w:rPr>
<w:b/>
</w:rPr>
<w:t>This is the title.</w:t>
</w:r></Title><w:p>
如上所示,自定义的XML标记两边被非常专属于先前的文字处理器应用程序的XML标记(在此例中为w:p、w:r等)所包围。这意味着正在处理此数据的知道XML的解决方案不仅必须理解其自身的数据格式(包含<Title>元素),还必须理解先前的文字处理器应用程序格式编排的确切细节,从而当它搜索自己的数据时知道遍历并忽略该信息。由此,此类实现仍然对用户强加一些要求,因为文档中的文本的外观的小小改变(例如,将<Title>元素的内容拖到表格单元中,等等)可能导致该自定义XML标签的位置在周围环境的文字处理器的本机标签内部的显著改变。因此,程序员/代码开发者常常需要编写附加代码,以预期和理解先前的文字处理器应用程序将基于呈现而把自定义的XML元素放在何处,以及处理所有这些各种变换。这意味着最终的解决方案可能仍需包含大量逻辑代码以处理特定的先前的文字处理器应用程序的需求。
处理现有的文字处理器应用程序的程序员/代码开发者在考虑读和写操作时,还需考虑文档布局格式的蕴含。例如,用户可能试图攫取<StockSymbol>元素的值,并使用该值以将公司的全名放到同一文档的<CompanyName>元素中,来作为用户写公司报告的简单增强。为维护文档的完整性,用户在能够写功能代码以执行这些动作以前,需要同时对来自文档的期望数据的读和写两方面考虑文档的当前布局格式。例如,用户可能需要知道他们所写的值是否在表格单元中、着重列表中、等等,来构造现有文字处理器应用程序的格式编排信息,从而当这些信息被插入到文档中时将产生期望的结果。这是进行附加编码以理解文字处理器应用程序的呈现语义的另一个潜在的原因。
现有文字处理器应用程序的又一个局限性是有时会发现XML元素的编辑行为是“脆弱的”。这部分地是因为,如上所述,它们受到以下事实的限制,即标记在文档表面上的定位基于用户定义的模式来确定XML数据的结构。由此,可能产生若干问题。首先,根据相关联的XML模式,典型的用户操作(例如,从一个部分复制/粘贴到另一个部分)可能会改变XML结构并使文档变为无效。第二,在此类文字处理器实现中,用户定义的XML模式所要求的所有元素都需要以某种形式被包括到文档表面上。这意味着开发者要创建相关联的XML数据以作为携带关于文档的附加信息(不在文档的表面上显示,而是用作元数据)十分困难。第三,文档表面上的语义上非必要的元素(例如,并不标记混合内容的非叶元素)也需要被包括到此类文字处理器实现中,这进一步增加了普通用户操作修改XML数据的能力。
在许多情形中,定义XML数据(例如,包括备忘录文档的数据)的模式趋向于由单个标准体严格定义,以便于此数据在多个异类处理系统之间的通信。但是,在如此便于后端通信的同时,文档数据的人类可阅读性和可编辑性往往被牺牲,这使得用户难以理解此数据及对其进行语法分析。例如,XML标准可定义日期的标准格式,诸如dd-mm-yyyyThh:mm:ss.ssss。所有日期都被要求以此格式表示以由知道XML的应用程序进行语法分析。显然,用户很难正确输入此格式,并且它常常与用户通常输入日期的方式(例如,许多场合通常使用mm-dd-yyyy而不是dd-mm-yyyy,等等)冲突。
由此,需要有一种方法使开发者能够在诸如文字处理器应用程序等应用程序中将XML数据与此类数据的呈现分开。

发明内容
本发明的实施例提供一种包括模式的文字处理器应用程序,用于创建文字处理器文档,其中数据和呈现可被分开。更具体地,数据可被输入到文字处理器文档中,并可从其中被提取,且该文字处理器文档与其呈现格式存储在分开的位置。根据本发明的实施例,该文字处理器应用程序的用户可为文字处理器文档数据创建单独的存储位置,并建立该数据的内容与呈现表面之间的链接(或绑定)。
根据本发明的实施例,一种对象模型允许使用编程环境来开发代码。该代码可被用来操纵应用程序中的一个或多个数据绑定。还可使用编程环境来开发代码,以对XML数据中的内容区域或节点任一方向的改变作出反应。还可开发代码以定义文件内容和数据存储内的内容之间的关系。此外,可开发对文件的绑定区域内或数据存储内的改变作出反应的代码,以捕获或截取诸如编辑、添加、删除等事件。本发明的实施例使用户能够用相关联的XML单次编写代码,且如今该代码可移植到支持使用XML构造的文件类型,而无需担心目标应用程序的确切语义,由此大大简化并提高了应用程序的开发的效率。


图1示出可在本发明的一个示例性实施例中使用的示例性计算设备;图2是示出用于实施本发明的示例性环境的框图;图3是根据本发明的一个实施例的流程图;以及图4是示出用于实施本发明的另一个示例性环境的框图。
具体实施例方式
贯穿整个说明书和所附权利要求书,以下术语采取本文中明确相关联的含义,除非上下文中明显另有所指。
术语“数据”是指随文字处理器文档携带的、文字处理器文档本身、或由其使用的任何补充信息。此信息通常很大,并且很可能并不是在文档的呈现层上完整地展现。
术语“标记语言”或“ML”是指文档内的特殊代码的语言,它指定文档的各个部分要如何由应用程序来解释。在文字处理器文件中,标记语言指定文本要如何被格式化或布局。
术语“元素”是指XML文档的基本单元。元素可包含XML文档的属性、其它元素、文本、以及其它内容区域。
术语“呈现”是指文档的可视化部分——即在文档被打印的情况下将会显示出来的文本和布局。
术语“标记”是指被插入到文档中的、在XML文档内界定元素的字符。每个元素仅可有不超过两个的标记开始标记和结束标记。有空元素(无内容)是可能的,在此情形中允许仅有一个标记。
标记之间的XML内容被视为该元素的“子元素”(或后代)。由此,嵌入到该元素的内容中的其它元素被称为该元素的“子元素”或“子节点”。直接嵌入到元素的内容中的文本被称为该元素的“子文本节点”。概括而言,元素内的子元素和文本构成该元素的“内容”。
术语“属性”是指设为特定值并与元素相关联的附加属性。元素可具有与其相关联的任意个数的属性设置,包括无属性设置的情形。属性被用来将附加信息与不包含附加元素、或被视为文本节点的元素相关联。
术语“内容区域”是指文档被界定的和/或任选地被标记的区域,它起到用户所输入的类型的内容的容器的作用。详见由本发明的受让人于2004年9月30日提交的题为“Methods,System,and Computer-Readable Medium For Managing SpecificTypes of Content In An Electronic Document”(用于管理电子文档中的特定类型的内容的方法、系统和计算机可读介质)的已转让的美国专利申请第10/955,612号,其全部内容通过引用包含于此。
“XPath”是一个算子,它使用模式表达式来标识XML文档中的节点。XPath模式是用斜杠分开的子元素名列表,它描述贯穿XML文档的路径。模式“选择”匹配该路径的元素。
术语“XML数据存储”是指文字处理器文档内的一个容器,它提供访问,以供在文件打开时存储和修改存储在文字处理器文档中的数据(例如,XML格式)。
术语“数据绑定”是指内容区域上的一个属性,它确定文字处理器文档内的一个或多个XML数据片段中可存储内容区域的内容的XPath位置。如本文中所使用“ref”-指引用由个体绑定所使用(在打开/保存文档到文件时使用)的以下属性集合的中央存储的唯一整数;“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还可包含通信连接116,它允许该设备诸如通过网络等与其它计算设备118通信。通信连接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。可包括一个以上的数据存储208、相关联的XML数据209和模式210,以作为文字处理器应用程序202的部件。为了提供带有管理可能被包括在给定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来为数据绑定区域定位期望的目标。这也意味着熟悉XPath标准的开发者可控制XML的这一用途来创建本质上半动态的数据绑定205。即,基于对数据209的其它改变或对呈现203的改变来标识不同的目标节点213。例如,假定用户想要显示在给定时间段里完成最高销售额的雇员的名字。如果此信息在与文档204相关联的XML数据209中,则用户可创建链接到具有最高的已完成单数的个人的名字的XPath表达式,并且当数据改变时,该链接自动转移到适当的位置(节点213)。还可通过使用代码211、用户界面、或编程环境206在节点213之间改变链接。
或者,用户可创建唯一标识数据209中文档内容区域207应被绑定到的对象表示节点213的数据绑定。文字处理器应用程序202自动确定XPath,来为数据绑定区域定位期望的目标。但是这意味着在此情形中,数据绑定205将自动更新其XPath以确保数据绑定205指向同一对象,这与同一XPath表达式相反。
可开发如上文所简述的编程代码211以使用XML处理模块212,以及对向任一方向(即,从文档表面203上的内容区域207到数据存储208中的XML数据209中的节点213,反之亦然)移动的改变作出反应。用户可开发定义文档表面203和数据存储208内的特定内容之间的关系的代码211。此外,可开发对文档204的绑定区域内或数据存储208内的改变作出反应的代码,以捕获或截取诸如编辑、添加、删除等事件。例如,假定用户想要确保至多只有一个文档可使用某个特定的标题。代码211可基于输入到标题节点中的内容检查中央数据库,以确定该标题是否已被使用。如果该标题已被取用,则代码211可提示用户输入另一个标题和/或警告用户该标题不可用。本发明的实施例使用户能够用相关联的XML一次性编写代码211,而该代码如今可被移植到支持XML构造的使用的所有文档类型,而无需担心目标应用程序的确切语义,由此大大简化并提高了应用程序开发的效率。
根据本发明的实施例,可用表示特定文本区域(例如,标题、正文、等等)的语义的内容区域207,并通过添加数据绑定205来标记文字处理器文档204,如今该内容区域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)中,从而使用户能够将链接(例如,数据绑定205)在呈现203中到处移动,而不会影响数据结构。由此,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同步,后者将进而在文档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,从而引起文档204中也指定该XML节点213的、具有相关联的绑定205的所有其它内容区域207(例如,页眉中,页脚中,等等)的更新。本发明的实施例提供一种用于将文档中的多个位置绑定到数据存储208中的单个XML节点213的机制,正如本例中将所有这三个位置的内容链接到单个数据源。由此,文档204中被链接到XML数据209中的同一节点211的所有内容区域207的内容是完全相等的。
对此的一个示例性例子是典型的报告文档,其中用户通常使标题在若干位置显示在封面上(以大号粗体文本),在页眉中(以较小的文本),以及在页脚中(以较小的斜体文本)。通常,用户将必须在每个位置打出标题,还要确保如果这三个位置中的任何一个的标题被改变,则他们要记得在其它两个位置改变标题(以保持内容一致)。但是,往往很容易忘记要使所有这三个位置保持同步。根据本发明的实施例,一旦包含用户想要在文档204中显示的XML数据209的数据存储208就位,文档中的多个位置(例如,上述的三个位置)全部都可以是绑定到数据存储208中的单个XML节点213的内容区域207数据。
因此,所有这三个位置的内容被链接或绑定到单个数据源209。这意味着用户通过改变这些区域中的任何一个(例如,封面)的内容,将自动使用户的文本被下推到底层的XML数据209,然后进而被下推到文档204中具有带对应的数据绑定205的内容区域207的其它位置(在此情形中为页眉和页脚)。这意味着如今用户在他们与文档的交互的范围内已链接或绑定了这三个内容范围以使它们完全相等。根据本发明的实施例,文档的各个区域能以多种方式呈现(大号粗体、小号斜体、等等),但数据存储208中的数据结构保持不变。
悬挂引用根据本发明的一个实施例,用户还可指定没有目标的XPath表达式——即数据存储208中的XML数据209中不存在他们所指定的目标XML节点213。数据绑定205不是‘忘记’了其期望的目标节点213,而是进入一种‘等待’状态,在‘等待’状态中,它不被连接到任何特定XML数据209,而是等着看所期望的节点是否出现在213后台XML数据存储208中的XML数据209中。这对于文档汇编情形特别有用,其中文档204的每个部件(例如,标准封面、结束页、以及被重复使用的从句)可包含数据绑定205,而它们仅应在这些部件被汇编到单个最终文档204中时被填充。在此情形中,文档创建者指定每个文档‘部件’中的内容区域207内到XML数据209中的不存在于该部件中的XML节点213的数据绑定205(例如,封面可能包含带有到<Title/>XML元素和<Date/>XML元素的绑定205的内容区域)。当该部件在其目标文档外被查看时,那些绑定不被连接,因为不存在任何XML数据209,但只要该部件一被添加到包含期望数据209的文档中,该数据绑定205立即连接(同步)到数据209,并显示正确的内容——从而允许文档的创建者指定并保存绑定205,即使数据209尚未被生成。
一类悬挂引用215在内容区域207上的数据绑定205不能被成功链接到已链接的XML流中的节点213(即,绑定在内容区域中的状态)时发生。当节点213从已链接的XML流中被替换/移除时,结果是一个或多个数据绑定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变为到如今不存在的\contract\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的有效数据绑定,则文字处理器应用程序202对数据存储208中的每个XML数据209等执行类似的检查。如果没有一个XML数据209可被供悬挂引用215使用,则该绑定继续保持为到原始XML数据209的悬挂引用215。
参考图3中所示的流程图,并继续参考图2,描述了本发明的一个实施例。当用户使用文字处理器应用程序202打开文字处理器文档204时,图3中所示的过程300在302开始。在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,后者中的每一个都指定到同一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。
用于绑定数据的对象模型现在参考图4,描述本发明的另一个实施例。在许多软件应用程序中可使用对象模型来提供一种用于通过诸如应用程序400等应用程序的用户界面使用户可能执行的任务自动化的代码编写方法。对象模型允许编写执行以下任务的代码,例如·为用户将重复性的任务自动化,·对用户的动作作出反应(以进行验证,等等),和/或·当文件410被打开/编辑/保存时执行自动的动作。
例如,应用程序(例如,WORD 2003)提供对象模型接口,它通过代码给出到文字处理器的用户界面的所有功能的访问。它是通过提供对文字处理器应用程序的所有范型/用户界面的等效部分的代码访问来实现此功能的。这些结构被组织为4个基本类别·对象对应于应用程序内的可作用的对象——例如,段落可被表示为对象模型中对应于文档表面中用户的段落的对象。
·方法可对对象执行的动作(例如,删除)。
·属性关于对象可设置的事物(例如,将段落加粗)。
·事件对应于响应于用户(或其它代码)与应用程序的交互而运行的子例程(例如,代码可注册以监听文件打开事件,只要应用程序中有文件被打开,无论是被用户还使其它代码打开,应用程序即可通知此代码(以允许用户执行任何动作)。
应用程序的对象模型内的任何对象都可展示允许代码操纵该对象的方法、属性、和/或事件。
描述包括根据本发明的一个实施例的编程环境402的应用程序400。编程环境402经由对象模型提供对诸如上述的文字处理器应用程序202等应用程序400中的对象的代码访问。可以认识到,本发明的实施例是在文字处理应用程序的上下文中描述的,但是如上所述,并不试图将本发明限制于任何特定的应用程序。编程环境402还可用于在利用稳健的方法/属性/事件集合来捕获对内容区域408的内容的改变的同时提供对内容区域408的行为的控制。此外,编程环境402使诸如程序员等用户能够程序地访问提供一个或多个内容区域408与数据存储414的一个或多个节点416之间的链接的一个或多个数据绑定406。
如上所述,可使用编程环境402来开发响应于任一方向的内容区域408或XML数据412中的节点416的改变的代码404。还可开发代码404以定义文件内容和数据存储414内的内容之间的关系。此外,还可开发反应于文件410的绑定区域内或数据存储414内的改变的代码,以捕获或截取诸如编辑、添加、删除等事件。本发明的实施例使用户能够用相关联的XML一次性编写代码404,且该代码如今可被移植到支持XML构造的使用的所有文件类型,而无需担心目标应用程序的确切语义,从而大大简化并提高了应用程序开发的效率。
诸如应用程序编程接口(API)等编程环境402展示对象并提供使用代码404来操纵应用程序400内的一个或多个数据绑定406的能力。可将一个或多个数据绑定406与特定文件410的一个或多个内容区域408相关联。
较佳的是,内容区域属性返回提供用于操纵数据绑定的行为的两个事件的对象·.BeforeStoreUpdate(ContentRegion As ContentRegion,Content As String)每当内容区域的内容被修改时、并且在文本被发送到XML数据412中的适当节点416以前返回对象(串)的事件。这允许代码404在串到达XML数据的节点以前操纵该串,而无需改变内容区域408的内容。
·.BeforeContentUpdate(ContentRegion As ContentRegion,Content AsString)每当有对XML数据412中被链接到相关联的内容区域408的节点416的内容的改变、并且在内容区域408被更新以前引发一个事件。这允许代码404在数据412被显示在内容区域408中以前操纵数据412,而无需改变节点的数据。较佳的是,内容区域408包括属性,这些属性包括通过编程环境402可访问的“DataBinding”(数据绑定)属性。DataBinding属性提供对内容区域408和与文件410相关联的数据存储414的数据412之间的关系的访问。较佳的是,DataBinding返回DataBinding对象(属性、方法和事件),以允许对数据绑定406以及与数据绑定406相关联的其它数据的操作。代表性的方法和属性包括,但不限于·.CustomDataStream As CustomDataStream返回表示与数据绑定406相关联的XML数据412(用于进一步的操纵)的对象的属性。可开发代码404以使用对象模型来直接操纵XML数据。如果是悬挂引用则不返回任何对象。
·.CustomDataXMLNode As CustomDataXMLNode
返回表示XML数据412中是数据绑定406的目标的XML节点416的对象的属性。可开发代码404以操纵特定数据绑定406的目标节点416。如果是悬挂引用则不返回任何对象。例如,假定用户想要移动节点416以改变数据绑定406的目标。又如,假定用户想要删除节点416,因为文件410将被放到某个公共服务器上。由此,代码404可被用来使用此被返回的对象来寻找并删除节点416,以防在文件410被放到公共服务器上时因疏忽而发送信息。
·.Delete As Void返回用于将数据绑定406从内容区域408移除的对象的方法。例如,假定文件410包括具有被链接(或数据绑定)到XML数据412中的name元素的名字的内容区域408。代码404可被用来删除绑定406(即,“dataBinding.Delete”),因为用户想要释放数据412,从而操作以将该链接从内容区域408移除。
·.IsBound As Boolean返回用于确定数据绑定406当前是否为悬挂引用的对象的属性。代码404可被用来确定目标节点416是否存在。在各种情况中,为成功进行代码实现,较佳的是确定目标节点是否存在,即,数据绑定406是悬挂的还是有效的。如果目标节点存在,则该对象返回“.true”,如果是悬挂引用或不存在绑定,则返回“.false”。
·.SetBindingByNode(CustomDataXMLNode As CustomDataXMLNode)AsBoolean返回用于通过为特定链接提供目标XML节点416来创建/改变当前内容区域408上的数据绑定406的对象(CustomDataXMLNode)的方法。如果绑定存在,则现有绑定被替换,且新的绑定节点(若有)的存储内容取代现有内容。如果绑定是活节点则返回“.true”,如果不是绑定到活节点则返回“.false”。
·.SetBindingByXPath(CustomDataStream As Variant,XPath as String,[PrefixMapping As String]) As Boolean返回表示用于通过为链接提供XPath和XML数据412来创建内容区域408上的数据绑定406的信息(诸如XPath、到节点的指针(ID),和/或与名字空间有关的前缀映射关系)的对象(CustomDataStream、XPath、和/或PrefixMapping)的方法。
·CustomDataStream指定应被绑定到的存储项的变量,可以是以下任何一项○表示期望的流的CustomDataStream对象
○表示期望的流的根名字空间的串——如果有一个以上具有该根名字空间的流,则攫取存储中所找到的第一个项○表示期望的存储项在存储的集合中的索引的整数·XPath指定要绑定到的XPath的串。试图确保其为有效XPath句法,如果不是则失败并给出错误消息。
·PrefixMapping表示在查询所提供的XPath表达式时可使用的前缀映射关系的可任选的串。如果没有给出,则使用存储项本身所使用的前缀映射关系集合。
·.XPath As String返回用于定位数据绑定406所使用的XPath表达式以指向XML数据412内的目标XML节点416的对象的属性。
可以认识到,使用以上所列出的属性、方法、以及事件的代码开发可根据特定应用程序来定制。
应当认识到,本发明的各个实施例的逻辑操作被实现为(1)计算机实现的动作序列或计算系统上运行的程序模块,和/或(2)计算系统内相互连接的及其逻辑电路或电路模块。实现是根据实现本发明的计算系统的性能要求进行选择的问题。由此,组成本文中所描述的本发明的实施例的逻辑操作被称为操作、结构设备、动作或模块等不同的术语。本领域技术人员将会认识到,这些操作、结构设备、动作以及模块可在软件、固件、专用数字电路、及其任何组合中实现,而不会偏离本发明的精神和范围,如所附权利要求书中所阐述。
以上说明书、示例及数据提供了制造和使用本发明的组成的完整描述。因为可作出本发明的许多实施例而不会偏离本发明的精神和范围,所以本发明驻留在所附权利要求书中。
权利要求
1.一种使用数据绑定的方法,所述数据绑定链接数据存储和内容区域,所述方法包括展示数据绑定接口,使用与所述数据绑定接口相关联的方法、属性或事件,其中,所述方法、属性或事件返回允许对所述数据绑定、数据或与所述数据绑定相关联的其它对象的操纵的对象。
2.如权利要求1所述的方法,其特征在于,还包括使用属性来定位与特定数据绑定相关联的XML数据。
3.如权利要求2所述的方法,其特征在于,还包括使用代码来操纵所述XML数据。
4.如权利要求1所述的方法,其特征在于,还包括使用属性来定位XML数据内的目标节点。
5.如权利要求4所述的方法,其特征在于,还包括使用代码来操纵相关联的数据绑定的目标节点。
6.如权利要求1所述的方法,其特征在于,还包括使用返回用于移除特定数据绑定的对象的方法。
7.如权利要求1所述的方法,其特征在于,还包括使用属性来确定特定数据绑定是否为悬挂引用。
8.如权利要求1所述的方法,其特征在于,还包括使用返回用于创建或改变内容区域上的数据绑定的对象的方法。
9.如权利要求8所述的方法,其特征在于,还包括为特定链接提供目标XML节点。
10.如权利要求1所述的方法,其特征在于,还包括使用返回表示用来创建内容区域上的数据绑定的信息的对象的方法。
11.如权利要求10所述的方法,其特征在于,还包括为链接提供XPath和XML数据。
12.一种其上存储了计算机可执行指令的计算机可读介质,当计算机执行所述计算机可执行指令时,将使所述计算机展示数据绑定接口,所述数据绑定接口用于展示与所述数据绑定接口相关联的方法、属性或事件,其中,所述方法、属性或事件返回允许对所述数据绑定、数据或与所述数据绑定相关联的至少一个对象的操纵的对象。
13.如权利要求12所述的计算机可读介质,其特征在于,所述数据绑定接口用于返回用于定位与特定数据绑定相关联的XML数据的对象。
14.如权利要求12所述的计算机可读介质,其特征在于,所述数据绑定接口用于返回用于定位XML数据内的目标节点的对象。
15.如权利要求12所述的计算机可读介质,其特征在于,所述数据绑定接口用于返回用于确定特定数据绑定是否悬挂的对象。
16.如权利要求12所述的计算机可读介质,其特征在于,所述数据绑定接口用于返回用于创建或改变内容区域上的数据绑定的对象。
17.一种用于提供对数据存储和内容区域之间的链接的访问的系统,所述系统包括数据绑定接口,用于展示与所述数据绑定接口相关联的方法、属性或事件,其中,所述方法、属性或事件返回允许对所述数据绑定、数据、或与所述数据绑定相关联的至少一个对象的操纵的对象。
18.如权利要求17所述的系统,其特征在于,所述数据绑定接口用于返回用于定位XML数据内的目标节点的对象。
19.如权利要求17所述的系统,其特征在于,所述数据绑定接口用于返回用于创建或改变内容区域上的数据绑定的对象。
20.如权利要求17所述的系统,其特征在于,所述系统还用于提供用于开发与相关联的数据绑定联合工作的代码的接口。
全文摘要
一种对象模型允许使用编程环境来开发代码以访问例如文字处理应用程序等应用程序中的功能。该对象模型可被用来操纵应用程序中的一个或多个数据绑定。还可使用编程环境来开发代码,用于反应于任一方向上的对与一个或多个数据绑定相关联的内容区域或XML数据中的节点的改变。可开发代码以定义文件内容与数据存储中的数据内的内容之间的数据绑定。此外,可开发响应于文件的绑定区域内或数据存储内的改变的代码,以捕获或截取诸如编辑、添加、删除等事件。
文档编号G06F17/30GK1811766SQ20051012889
公开日2006年8月2日 申请日期2005年12月6日 优先权日2005年1月6日
发明者T·A·戴维斯, B·M·琼斯, A·塔勒吉哈尼, R·A·利特尔, M·萨维斯基, M·森德兰德 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1