专利名称::在计算机生成文档中提供语境感测工具和帮助内容的制作方法
技术领域:
:本发明涉及在计算机生成文档中提供语境感测工具和帮助内容。
背景技术:
:计算机软件应用程序允许用户创建各种各样的文档以在工作、教育和休闲中帮助他们。例如,流行的字处理应用软件允许用户创作信件、文章、书、备忘录等等文档。电子表格程序允许用户存贮、处理、打印和显示各种各样的字母数字数据。这样的应用软件都有众所周知的优点,包括丰富的编辑、格式化和计算工具。可是,由这样的软件应用程序创建的文档没有给用户提供语境(contextually)感测工具、帮助内容或支持。也就是说,当用户在给这样的软件应用程序输入文字或数据时,这些应用程序没有根据用户正在输入的文字或数据的语境给用户提供帮助工具或协助。基于互联网的应用程序试图解决一些商业问题,通过创建和部署基于网络的模板使用户可以输入可被传回一个后端网站服务器的、对一些服务类型注册用户的信息。这样的基于网络的应用程序通常可以包括链接,用户可以导航到一个分开的网站以获得帮助信息或用户目前使用的基于网络的应用程序或文档的帮助。可是,这样的基于网络的应用程序与上述软件应用程序文档相比是不利的,现代的基于网络的应用程序很少提供丰富的编辑、格式、打印和计算。为了举例,在一个典型设置中,一个用户可能决定用一个装在她的计算机中的文字处理应用程序准备一份履历。在该用户准备履历时,她可能想填写这样的段落如“个人信息”、“教育”、“经历”和“其它课程活动”。在该用户完成每个段落后,她可能要求帮助,包括关于这些段落排列顺序的信息、关于要放入“经历”段落的过去工作的较佳的数字等等。为了接收这样的帮助,用户可能必须阅读一个关于履历的书,或者上网到一个基于互联网的履历帮助站点寻找信息。相反,该用户可以进入一个基于互联网的履历站点用一个基于网络的履历模板完成一份履历。该用户被允许在指定数据字段中输入规定的信息并且给该用户提供互联网网站的链接以便导航到她可以获得文档不同段落的帮助的站点。当该用户已经完成基于网络的履历的准备,用户工作服务或者该用户能够打印该模板。不过,相对于用户基于计算机的文字处理软件而言,用户的文字处理应用程序的功能如履历的丰富的编辑和格式化对具有基于网络的应用程序的限制的用户很可能是不可用的。正是出于这些或其它的考虑,作出了本发明。
发明内容本发明提供一个创建、实现和使用给用户提供语境感测工具、控件和帮助内容的计算机生成文档的方法与系统。一般地说,附加在一个文档上的一个大纲为此文档定义可容许的数据内容、数据类型和数据结构。结构化文档使文档与大纲关联起来,并使解决方案与文档结构关联起来。汇编一组软件组件为文档提供解决方案,使文档能够根据在文档中的编辑位置调用该组软件组件为文档提供解决方案。在创建文档后,用于打开文档的软件应用程序可以被引导进行初始化该文档的打开。对该文档是否引用解决方案作出判断。对提供解决方案的该组软件组件是否在一个软件组件库中作出判断。如果是,就调用该组软件组件为该文档提供解决方案。一旦该文档被打开使用,在该文档的某个位置聚焦文档编辑,如将光标放在该文档的某个位置,促使一列包围该编辑焦点的位置的可扩展标记语言(XML)元素的产生。对该列XML元素是否有关联在一起的可用的解决方案作出判断。如果有与该列XML元素关联在一起的任何可用的解决方案,该文档为用户调用每个关联的解决方案并获得它。更可取地,解决方案包括与该文档编辑位置的语境关联的帮助内容和文档工具。为了显示为用户获得的每个解决方案该文档运行一个图形用户界面。通过观察下面对公开的实施例的详细描述并参照附图和权利要求书可以对本发明的这些和其它特点、优势和方面更清楚地理解和觉察。图1是显示软件应用程序图形用户界面的计算机屏幕,通过它显示了依照本发明实施例的一个文档和关联的语境感测工具和帮助内容。图2是方框图,说明结合本发明实施例用法的客户端软件结构。图3是计算机和关联的外部和网络化设备的方框图,它为本发明提供一个典型的操作环境。图4是流程图,说明依照本发明实施例创建提供语境感测工具和帮助内容的文档的方法。图5是流程图,说明打开按照本发明实施例创建的文档的方法。图6图示一个计算机生成的对话框,用于向用户提供多个文档解决方案。图7图示一个计算机生成的对话框,用于帮助用户下载按照本发明创建的应用程序的组件。图8是流程图,说明依照本发明实施例确定在文档工具面板上显示什么内容的方法。具体实施例方式本发明直接为了创建、实现和使用计算机生成的“聪明的”文档,附加了给这些文档的用户提供语境感测工具、帮助内容和控件的功能。依照本发明的一个实施例,文档的部分被结构化这样当一个用户进入这些部分(如将计算机光标放入这些部分),文档指向可以给该用户提供语境感测工具和/或帮助内容的一个解决方案。例如,如果一个用户为获得一个工作正准备一份履历,该用户可以将她的计算机光标放在履历的“教育”段落。依照本发明,计算机光标放入“教育”段落可以给用户提供语境感测信息。该文档可以指向一个全面的解决方案例如一个履历文档结构,或者该文档的各个段落可以指向该解决方案的语境子集例如一个履历文档结构的“经历”段落解决方案。可以在用户计算机屏幕上打开与正被编辑的文档相邻的文档工具面板,并且可以提供有关完成“教育”段落的建议方法的叙述。如果用户将光标移动到该文档的另一个部分,例如移到履历的“目标”段落,则用户可以获得与那个语境关联的信息,例如适当的职业目标陈述。应当理解依照本发明的一个实施例给一个用户提供的语境感测工具和帮助内容可以由各种各样的软件应用程序提供,包括文字处理程序、电子表格、网站浏览器、文本编辑器等等。而且,依照本发明的实施例给用户提供的帮助信息和工具的类型与内容可以包括如用户使用的软件应用程序的创作者所希望的各种各样的工具和动作和帮助信息。参照图1,图示了显示示范的软件应用程序100的计算机屏幕,并图示了使用该程序的一个文档和关联的提供文档工具和帮助内容的文档工具面板。在图1中图示的文档110显示一个职员年度业绩回顾模板,一个职员可以用它完成她的年度业绩回顾或可以用它完成她的一个职员的业绩回顾。在图1中图示的应用程序100是一个文字处理应用程序用于显示和编辑文档110,但本领域内的技术人员应当理解应用程序100可以包括其它软件应用程序包括电子表格应用程序、文本编辑应用程序等等。此外,在图1中图示的文档110描述了一份年度业绩回顾文档,但该文档110可以包括用户编辑的其它各种各样的文档和模板,包括履历模板、遗嘱模板、桌面印刷文档、信、金融电子表格等等。参照图1所示的示范文档,文字处理应用程序100提供典型的与文字处理程序有关的、通过下拉菜单如File、Edit、View、Insert、Format等可以得到的功能。文档110显示在应用程序100的工作区中和图示在该文档右边的一个文档工具面板135。应当理解图1所示的显示只是作为举例,而且图1中所示的组件可以用各种不同的令用户满意的方式组织。也就是说,文档工具面板可以定位在屏幕显示的下边、文档110的左边、或者按照应用程序100允许的其它方向。下面是关于图1所示的“聪明的”文档110的创建和实现的详细讨论,但一般依照本发明的实施例描述,一旦用户将她的计算机光标放在文档110的某个段落,例如图1所示的“objectives”段落125,就给用户提供文档工具面板中的工具和帮助内容。例如,如果用户将她的计算机光标放在“objectives”段落125,则给用户提供在文档工具面板135中所示的“ObjectiveWritingTips”155。如图1所示,选择“ObjectiveWritingTips”155,引起“ObjectiveWritingTips”正文160的显示,这给用户提供如怎样完成这份业绩回顾文档110的“objectives”段落的帮助信息。如果用户将光标移动到文档的不同段落,例如个人信息段落120,则在文档工具面板135中提供的信息将给用户提供完成个人信息段落120的帮助。除了帮助用户的帮助信息,还提供了各种各样工具和动作145。例如,“SubmitReview”动作可以允许用户在完成该文档后向她的主管或她的职员提交完成的文档110。“OpenLastReview”动作可以允许用户打开上一篇业绩回顾这样她可以确定她是否完成在上次回顾中她的目标。如果用户使用的文档是一些其它类型的文档,例如一份履历文档,在文档工具面板中的帮助信息可能包括关于准备“教育”段落、“经历”段落、和/或“个人信息”段落的信息。一份遗嘱文档110可能与有关为准备遗嘱的法律条文、有关财产受益人的条文等等相关的帮助信息。除了面板135所示的文档动作和帮助内容,可以提供各种各样的文档控件,包括单选(radio)按钮、文本框、检查框、ActiveX控件、XML树控件等等。例如,可以提供一个文本框允许用户从一个预先写好的文字项列表中选择。或者,可以允许用户在面板135中提供的列表框输入文字,随后文字将被插入到文档中或由应用程序在有关应用程序的一些其它功能中使用。提供单选按钮或检查框允许用户从文档动作或帮助内容的不同选项中选择。例如,如果该文档是一份遗嘱,提供检查框让用户可以选择“已婚”、“单身”等,以在用户的个人意向和财产轮廓基础上获得帮助信息。参照图2,图示了依照本发明创建和使用“聪明的”文档110的一般系统结构。如上述的一个软件应用程序100,依照本发明在用户的计算机20上打开并创建或编辑文档110。提供一个大纲库105以包含用于给文档110提供语境感测功能的所有可执行文件。例如,大纲库可以包括各种组件,包括已经被编译和动态连接的、准备由应用程序100给文档110提供语境感测功能所使用的各个模块化软件例程。这样的组件可以包括许多动态链接库(dll),动态链接库包括与软件应用程序110分开存贮的可执行文件或例程。软件应用程序100只有在需要dll为文档110提供功能时才载入dll。此外,如下面详细描述的,大纲库105可以包括许多可扩展标记语言(XML)文件以提供与已经应用于文档110的XML结构有关的语境感测功能。文档110包括一个解决方案属性115,它用于将文档指向包含在大纲库105中的某个解决方案。解决方案118给文档110和应用程序100提供信息,如指向解决方案属性在大纲库中的位置或指向通过一个分布计算环境如通过互联网由一个基于网络的服务器提供的远程位置。依照本发明和如下详细描述的,当用户聚焦在文档110的某个部分,如图1所示的业绩回顾110的“objectives”段落,一个解决方案属性115将文档指向“objectives”段落帮助解决方案显示于文档工具面板115中。解决方案位置118给文档110和应用程序100提供实现那个解决方案所需的组件、dll或XML文件的位置。应当理解,典型的组件可以包括绘制文档工具面板135的组件、显示与某个语境如在这个例子中的“objectives”段落关联信息的组件、和执行文档动作如“SubmitReview”动作145的组件。图3和下面的讨论是用来提供有关可以实现本发明的适当计算环境的简要概括说明。尽管本发明将在结合个人计算机的操作系统中运行的应用程序的一般背景中描述,但本
技术领域:
的技术人员可以认识到本发明也可以与其它程序模块结合起来实现。一般地,程序模块包括执行某个任务或实现某个抽象数据类型的例程、程序、组件、数据结构等。此外,本
技术领域:
的技术人员将觉察本发明可以与其它计算机系统配置实现,包括手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、手机、小型机、大型计算机等等。本发明还可以在由通过通信网络连接的远程处理设备执行任务的分布计算环境中实现。在一个分布计算环境中,程序模块可以位于本地和远程存贮器存贮装置中。参照图3,一个实现本发明的典型系统包括一个普通个人计算机20,它包括一个处理器单元21、一个系统存贮器22和一个将系统存贮器连接到处理器单元21的系统总线23。系统存贮器22包括只读存贮器(ROM)24和随机存取存贮器(RAM)25。一个基本输入/输出系统26(BIOS)存贮在ROM24中,该系统包含如在启动时帮助个人计算机20中的元件之间传送信息的基本例程。个人计算机20还包括一个硬盘驱动器27、一个磁盘驱动器28例如读写一张可移动磁盘29的、一个光盘驱动器如读取CD-ROM盘31或读写其它光学介质的。硬盘驱动器27、磁盘驱动器28和光盘驱动器30由硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34分别连接到系统总线23。驱动器和与他们关联的计算机可读介质为个人计算机20提供非易失的存贮。尽管上述计算机可读介质引用硬盘、可移动磁盘和CD-ROM盘,但是本
技术领域:
的技术人员应当察觉其它计算机可读的介质类型如磁带、闪存卡、数字视频盘、伯努利盒等等也可以用于这个示范操作环境中。许多程序模块可存贮在驱动器和RAM25中,包括操作系统35、一或多个应用程序100、字处理程序模块37(或其它类型的程序模块)、诸如显示数据38的程序数据以及其它程序模块(未示出的)。用户可以通过键盘40和定点设备如鼠标42给个人计算机输入命令和信息。其它输入设备(未示出的)可以包括话筒、操纵杆、游戏垫、卫星天线、扫描仪等等。这些和其它设备通常通过与系统总线连接串行接口46连接到处理器单元21,但可以通过其它接口连接,如游戏口或通用串行总线(USB)。监视器47或其它类型的显示设备也通过一个接口如视频适配器48连接到系统总线47。除了监视器,个人计算机一般包括其它外部输出设备(未示出)如扬声器或打印机。个人计算机20可以使用与一台或多台远程计算机如远程计算机49的逻辑连接在网络环境中运行。远程计算机49可以是服务器、路由器、对等装置或其它普通网络节点,并且一般包括相对于个人计算机20描述的很多或全部元件,尽管在图3中只示出一个存贮设备50。图3所示的逻辑连接包括局域网(LAN)51和广域网(WAN)52。这样的网络环境在办公室、企业级计算机网络、企业内部互联网和互联网中是平常的。在LAN网络环境中使用时,个人计算机20通过网络接口53连接到LAN51。在WAN网络环境中使用时,个人计算机20一般包括调制解调器54或其它工具用于通过WAN52如互联网建立通信。调制解调器54可以是内置的或外置的,通过串行接口46连接到系统总线23。在一个网络化环境中,相对于个人计算机20描述的程序模块或其中的部分,可以存贮在远程存贮器存贮装置中。可以觉察所示网络环境是示范性的并且可以使用在计算机之间建立通信连接的其它方法。图4是流程图,说明依照本发明的实施例创建“聪明的”文档110的方法。该方法300从步骤305开始并进行至步骤310,将一个XML大纲附加到文档上。如本
技术领域:
的技术人员所理解的,大纲建立可扩展标记语言(XML)标签的语法和规则,XML标签是为了给文档110提供XML结构而应用于文档110的。附加于图1所示的文档110的大纲可以阐明所有与文档110关联的标签在语法上允许的数据类型和数据内容规则。例如,“personalinformation”段落120,它包括姓名、电子邮件名、职位和职员的职员标识,可以具有要求必须按照“firstname”接着“middlename”再接着“lastname”的格式输入“name”块数据的大纲。如本
技术领域:
的技术人员所理解的可扩展标记语言的使用,一旦文档110被相应的“name”元素用XML结构标注了那个部分,例如,就可以由软件组件来完成对输入文档那个段落数据的处理,不管数据的真实内容只要按照为文档那个部分规定的大纲输入内容。在步骤315中,用与工具和帮助功能有关的XML结构标注文档110,以给文档提供如上所述的语境感测功能。用于图1所示的职员回顾文档110的一个简化的XML结构标注如下XML结构范例<EmployeeReview><PersonalInformation><Name><first_name>Joe</first_name><last_name>Smith</last_name></Name><emailName><email>Joe@Address.com</email></emailName>***</EmployeeReview>附加在文档110上的大纲规定输入到XML文档结构中的数据结构规则。作为应当理解的,上面示出的XML结构实际上是简化的,而且只是为了说明的目的而提供的。一个与上面的示例性的XML结构关联的示例性XML大纲如下大纲范例<xsdschexmnlnsxsd=“http//www.w3.org/2001/XMLSchema”xmlns=“urnreviewForm”targetNamespace=“urnreviewForm”elementFormDefault=“qualified”><xsdannotation><xsddocumentationxmllang=“en”>TheschemafortheAugust2001Microsoftemployeereviewform.</xsddocumentation></xsdannotation><xsdelememname=“Review”type=“ReviewType”/><xsdcomplexTypename=“EmployeeManagerResponsesType”><xsdall><xsdelementname=“EmployeeResponse”type=“xsdstring”/><xsdelementname=“ManagerResponse”type=“xsdstring”/></xsdall></xsdcomplexType><xsdsimpleTypename=“RatingScore”><xsdrestrictionbase=“xsddemjcal”><xsdenumerationvalue=“2.5”/><xsdenumerationvalue=“3.0”/><xsdenumerationvalue=“3.5”/><xsdenumerationvalue=“4.0”/><xsdenumerationvalue=“4.5”/><xsdenumerationvalue=“5.0”/></xsdrestriction></xsdsimpleType><xsdcomplexTypename=“IdentityType”><xsdall><xsdelementname=“Name”type=“xsdstring”/><xsdelementname=“Alias”type=“xsdstring”/><xsdelementname=“Title”type=“xsdstring”/><xsdelementname=“EmployeeID”type=“xsdpositiveInteger”/><xsdelementname=“Reviewer”type=“xsdstring”/><xsdelementname=“Department”type=“xsdstring”/><xsdelementname=“Date”type=“xsddate”/></xsdall></xsdcomplexType><xsdcomplexTypename=“ReviewType”mixed=“true”><xsdall><xsdelementname=“ReviewPeriod”type=“xsdstring”/><xsdelementname=“Identity”type=“IdentityType”/><xsdelementname=“CurrentObjectives”type=“EmployeeManagerResponsesType”/><xsdelementname=“FutureObjectives”type=“EmployeeManagerResponsesType”/><xsdelementname=“StrengthsAndWeaknesses”type=“EmployeeManagerResponsesType”/><xsdelementname=“Ratings”type=“RatingType”/></xsdall></xsdcomplexType></xsdschema>在步骤320中,文档110与关联的文档大纲和XML结构保存在一起。在步骤325中,需要为按照用户的光标在文档110中的位置在文档工具面板135中显示和处理工具、控件和动作编写软件程序代码。在步骤325中所写的代码包括所有要求的XML文件,包括可扩展样式表语言(XSL)文件,包括XSL转换和XSL格式对象。如本
技术领域:
的技术人员所理解的,XSL转换包括包含指定规则的文件,通过这些规则一个XML文档被转换到另一个XML文档。如本
技术领域:
的技术人员应当理解的,所有XML文件,包括XML文档和XML转换文档,是为了将文档110处理成一个XML结构化文档而编写的。依照一个实施例,编写一个XML大纲可以是为定义一列文档动作、控件和帮助内容,它们与一个解决方案或相应地与该文档中的XML结构(元素)关联的解决方案的语境子集关联。可以用任何编辑工具或XML大纲编辑工具编写XML大纲以创建大纲的一个实例。可以编写XML大纲以将大纲的所有属性和一列要被显示的文档动作、控件和帮助内容直接包括在XML大纲中。一个示范性的XML大纲在上面列出。在步骤325中为文档110编写的其它代码包括所有的组件如应用程序100和文档110为文档110提供语境感测功能时所需要的动态链接库(dll),如前面参照图1所述。例如,可以编写一个应用编程接口(API)形式的dll以在用户将计算机光标定位于文档110的某个语境时访问包含在大纲库105中的某个解决方案。也就是说,当计算机光标被放在文档110的某个段落或部分中时,诸如“name”部分,一个应用编程接口被包括进来以发现与文档110的“name”部分关联的解决方案属性115并访问解决方案以提供与文档“name”部分有关的文档工具、动作和帮助内容。在步骤325编写的其它典型的组件包括绘制文档工具面板135的组件和显示与在文档110中计算机光标目前所在的XML元素关联的文字信息的组件。其它组件可以包括显示一个动作如一个“submitreview”按钮、允许用户向第三方如用户的职员或用户的主管提交这份回顾的模块化软件例程。还包括绘制和提供功能给控件,如单选按钮、文本框和检查框的其它组件,如前面参照图1所述的。为提供依照本发明的功能可能需要的任何组件对象模型插件也在步骤325中编写。除提供在此描述的文档工具和帮助功能所需的软件组件之外,在访问相应的帮助主题时显示在面板135中的帮助内容的实际文字被汇编以使用。可在关联的大纲没有附加到文档时在面板135中提供控件如单选按钮、文本框和检查框。通过声明一个控件与某个XML元素关联,可以在大纲规定的其它动作、控件和帮助主题之上面板135的顶部提供那个控件。同样地,可以在面板135中直接在所有其它包括上述那些项之上提供一个控件,通过声明该控件与文档的整个大纲关联起来而不是与大纲规定的单个XML元素关联起来。汇编并存贮所有上述的文件、组件、组件插件、dll、大纲文件和XML文件,由应用程序100在提供文档110的语境感测功能时使用。大纲库105可以用数据库的形式包含指向上述被存贮的组件的指针,它们可以存贮在计算机20各种位置的存贮器中,包括计算机的注册表。依照本发明的实施例,提供一个应用编程接口(API)以实现本发明的功能,给文档110提供一个“聪明的”文档结构。这个API包括当开始某个动作时所调用的属性和方法或指令,例如打开文档110依次指向一个解决方案,如上所述。下面所列的是实现“聪明的”文档API的计算机程序代码范例。下面所列的代码范例不限制为依照本发明实现这个API所编写的计算机程序代码中可能作出的变化。聪明文档API范例ImplementsISmartDocumentPrivateSubISmartDocument_SmartDocInitialize(ByValdocumentAsObject,ByValbstrSolutionPathAsString)PrivatePropertyGetISmartDocument_SmartDocXMLTypeCount()AsLongPrivatePropertyGetISmartDocument_SmartDocXMLTypeName(ByValsmartDocIDAsLong)AsStringPrivatePropertyGetISmartDocument_SmartDocXMLTypeCaption(ByValsmartDocIDAsLong,ByValLocaleIDAsLong)AsStringPrivatePropertyGetISmartDocument_ControlCount(ByValSmartDocXMLTypeNameAsString)AsLongPrivatePropertyGetISmartDocument_ControlID(ByValSmartDocXMLTypeNameAsString,ByValControlIndexAsLong)AsLongPrivatePropertyGetISmartDocument_ControlTypeFromID(ByValControlIDAsLong,ByValApplicationNameAsString,ByValLocaleIDAsLong)AsC_TYPEPrivatePropertyGetISmartDocument_ControlNameFromID(ByValControlIDAsLong)AsStringPrivatePropertyGetISmartDocument_IsControlDynamic(ByValControlIDAsLong,ByValApplicationNameAsString,ByValLocaleIDAsLong)AsBooleanPrivatePropertyGetISmartDocument_ControlCaptionFromID(ByValControlIDAsLong,ByValApplicationNameAsString,ByValLocaleIDAsLong,ByValbstrTextAsString,ByValbstrXMLAsStnng,ByValTargetAsObject)AsStringPrivateSubISmartDocument_PopulateRadioGroup(ByValControlIDAsLong,ByValApplicationNameAsString,ByValLocaleIDAsLong,ByValbstrTextAsString,ByValbstrXMLAsStnng,ByValTargetAsObject,List()AsString,countAsLong,InitialSelectedAsLong)PrivateSubISmartDocument_OnRadioGroupSelectChange(ByValControlIDAsLong,ByValTargetAsObject,ByValSelectedAsLong,ByValValueAsString)PrivateSubISmartDocument_PopulateImage(ByValControlIDAsLong,ByValApplicationNameAsString,ByValLocaleIDAsLong,ByValbstrTextAsString,ByValbstrXMLAsString,ByValTargetAsObject,ImageSrcAsString)PrivateSubISmartDocument_ImageClick(ByValControlIDAsLong,ByValApplicationNameAsString,ByValTargetAsObject,ByValTextAsString,ByValXmlAsString,ByValLocaleIDAsLong,ByValXCoordinateAsLong,ByValYCoordinateAsLong)PrivateSubISmartDocument_PopulateDocumentFragment(ByValControlIDAsLong,ByValApplicationNameAsStnng,ByValLocaleIDAsLong,ByValbstrTextAsString,ByValbstrXMLAsString,ByValTargetAsObject,DocumentFragmentAsString)PrivateSubISmartDocument_PopulateActiveXProps(ByValControlIDAsLong,ByValApplicationNameAsString,ByValLocaleIDAsLong,ByValbstrTextAsString,ByValbstrXMLAsStnng,ByValTargetAsObject,PropBagAsSmartTagLib.IActiveXProperties)PrivateSubISmartDocument_PopulateCheckbox(ByValControlIDAsLong,ByValApplicationNameAsString,ByValLocaleIDAsLong,ByValbstrTextAsString,ByValbstrXMLAsString,ByValTargetAsObject,ByValCheckedAsBoolean)PrivateSubISmartDocument_OnCheckboxChange(ByValControlIDAsLong,ByValTargetAsObject,ByValCheckedAsBoolean)PrivateSubISmartDocument_PopulateListOrComboContent(ByValControlIDAsLong,ByValApplicationNameAsStnng,ByValLocaleIDAsLong,ByValbstrTextAsString,ByValbstrXMLAsString,ByValTargetAsObject,List()AsString,countAsLong,InitialSelectedAsLong,IsEditableAsBoolean,ControlOnSameLineAsBoolean)PrivateSubISmartDocument_OnListOrComboSelectChange(ByValControlIDAsLong,ByValTargetAsObject,ByValSelectedAsLong,ByValValueAsString)PrivateSubISmartDocument_PopulateTextboxContent(ByValControlIDAsLong,ByValApplicationNameAsString,ByValLocaleIDAsLong,ByValbstrTextAsString,ByValbstrXMLAsString,ByValTargetAsObject,ValueAsString,ControlOnSameLineAsBoolean)PrivateSubISmartDocument_OnTextboxContentChange(ByValControlIDAsLong,ByValTargetAsObject,ByValValueAsString)PrivateSubISmartDocument_PopulateHelpContent(ByValControlIDAsLong,ByValApplicationNameAsString,ByValLocaleIDAsLong,ByValbstrTextAsString,ByValbstrXMLAsString,ByValTargetAsObject,ContentAsString)PrivateSubISmartDocument_InvokeControl(ByValControlIDAsLong,ByValApplicationNameAsString,ByValTargetAsObject,ByValTextAsString,ByValXmlAsString,ByValLocaleIDAsLong)上面所列API中包括了许多属性和方法。SmartDocInitialize方法包括调用API为文档110提供“聪明的”文档功能时执行的例程和指令。SmartDocXMLTypeCount属性包括与解决方案关联的XML元素类型的数量。SmartDocXMLName属性包括与“聪明的”文档结构关联的XML元素类型的唯一标识符。SmartDocXMLTypeCaption属性包括与菜单或面板如帮助面板135可以包括的XML元素关联的标题。ControlCount属性包括与“聪明的”文档结构关联的对应某个XML元素类型的控件的数量。ControlID属性包括控件的唯一标识符。ControlTypeFromID属性包括可用于与解决方案关联的控件的类型,例如单选按钮、文本框和检查框。ControlNameFromID属性返回一个与由给定应用程序100内部使用的每个控件关联的名称。PopulateRadioGroup方法包括为了在菜单或面板如帮助面板135中填入单选控制按钮所执行的例程和指令。OnRadioGroupSelectChange方法包括在单选组(单选按钮)被选定或取消选定时执行的例程和指令。PopulaeImage方法包括为了填入与一个解决方案关联的图象所执行的例程和指令,如在帮助面板135中填入一幅图象。ImageClick方法包括用户选择一幅图象时所执行的例程和指令。PopulateDocumentFragment方法包括将文字或数据填入用户界面所执行的例程和指令。PopulateActiveXProps方法包括获得与文档结构关联的ActiveX功能的例程和指令。PopulateCheckbox方法包括在用户界面如帮助面板135中提供一个检查框控件所执行的例程和指令。OnCheckBoxChange方法包括用户选定或取消选定一个检查框控件时所执行的例程和指令。PopulateListOrComboContent方法包括在用户界面如面板135中填入一个列表框控件所执行的例程和指令。OnListOrComboSelectChange方法包括在一个列表框控件中选择其中一个选项时所执行的例程和指令。PopulateTextBoxContent方法包括在用户界面如面板135中填入一个文本框的例程和指令。OnTextboxContentChange方法包括处理与在用户界面如面板135中的文本框控件的内容变化关联的一个事件所执行的例程和指令。PopulateHelpContent方法包括用要求的文字或数据填入在面板135中一个帮助内容字段所执行的例程和指令。InvokeControl方法包括选定或取消选定一个控件如单选按钮、文本框或检查框时所执行的例程和指令。还是参照图4,在步骤330中,对文档110是否可以用客户-服务器运行方式工作作出判断。也就是说,给应用程序110提供语境感测功能的组件,或者这些组件的更新或改变,可以存贮在与计算机20分开的一个远程服务器位置中。如果将使文档能够从一个远程服务器位置获得应用程序和文档运行所需要的组件,则该方法进行至步骤335,并编写响应位于计算机20的用户所执行的客户端动作的服务器代码。也就是说,编写在计算机20和远程服务器49之间相应的应用程序接口,为提供本发明的语境感测功能获得所需的服务器端数据和应用程序组件。如果希望应用程序指向用于数据和应用程序组件的远程服务器,则增加一个解决方案位置标识符如解决方案URL,使应用程序指向远程服务器的一个位置以获得所需的数据和应用程序组件。在步骤340中,创建所有上面所述编程组件的一份清单以识别将用于给文档110提供各种解决方案和功能的组件、dll、大纲文件和XML文件的列表。给文档110增加一个使文档指向组件清单的指针以获得由各个不同组件所提供的功能。在步骤350中,所有文件、代码和文档110的变化被保存,且文档创建方法在步骤390中结束。因此,文档110现在处于可被用户打开和使用的状态。图5涉及与打开和使用文档110有关的步骤。仅以举例为目的,参照打开一个“聪明的”文档的步骤描述职员业绩回顾文档110,该文档是依照本发明的实施例创建和实现的。方法400开始于步骤405,并进行到步骤410,这里用户启动应用程序100。如本
技术领域:
的技术人员所理解的,应用程序100可以通过选择应用程序或选择应用程序100创建的文档110启动。在步骤415中,用户选择与应用程序100一致的方式打开文档110。在步骤420中,对文档110是否引用一个解决方案作出判断。也就是说,对文档110是否如上所述标注了指向一个或多个用于给文档提供语境感测工具和帮助信息的解决方案的指针作出判断,如上所述。作为确定文档110是否指向一个或多个解决方案的检查的一部分,还对是否如上所述已经给文档附加了大纲作出判断。如果文档引用一个解决方案,例如给用户提供准备用户的职员回顾文档110的帮助的解决方案,该方法进行到步骤425,应用程序100调用大纲105以确定文档110引用的解决方案是否存贮于大纲库105中。在大纲库中,判断包括对在大纲库中所需的组件的判断;也就是说,与解决方案的I.D关联的是什么组件。例如,文档110可能有一个附加的大纲,它定义控制文档110的XML结构的规则,但是创建它时并没有参考某个解决方案。在步骤430中,对解决方案是否存贮在大纲库中作出判断。如应当理解的,文档110可能附加了多个解决方案。例如,一个第一解决方案可能包括帮助信息和动作以提供关于某个用户完成文档110的语境感测信息。可给文档110附加一个向用户的主管提供信息的第二解决方案,这样为主管提供的语境感测信息会给出如怎样评估职员的回顾文档每个段落这样的主管信息。如果文档110引用多个解决方案,则可给用户提供一个提示,如图6所示的对话框500,通知用户多个解决方案可用于此文档。然后用户在文档打开后可从解决方案列表中选择一个给用户提供所需功能的解决方案。在步骤435中,对在文档110打开后用户是否确实想要给用户提供解决方案的作出判断。如应当理解的,类似于对话框500的一个对话框可以向用户显示以询问用户如他是否需要帮助内容和工具的功能。在很多场合用户可能已完成了文档110,而现在不需要额外的帮助功能或动作功能。如果需要,用户在打开文档110时可决定始终接受解决方案。类似地,用户可以决定每次打开文档110时由应用程序100检查文档110并更新解决方案。如果用户拒绝这个解决方案,该方法进行至步骤455,文档不具有“聪明的”文档结构而按照应用程序100所要求和实现的正常步骤打开。如果用户需要文档110引用的解决方案的功能,则该方法进行至步骤440,载入解决方案供应用程序100和文档110使用。如本
技术领域:
的技术人员应当理解的,载入解决方案包括文档110通过应用程序100调用与解决方案关联且存贮于大纲库105中的所有必需的文件、dll、插入组件和XML文件。在被文档110调用时,应用程序100通过计算机操作系统注册每个被调用的文件,并在每个被调用的文件与应用程序100和文档110之间建立一条路径以提供与每个文件关联的功能。例如,如某个用于绘制文档工具面板135的dll必须赋予一个注册键以与应用程序100和文档110正确通信,这个注册过程在步骤440中载入解决方案时完成。在步骤445中,“聪明的”文档110打开并显示于用户的计算机屏幕上,如图1所示。回过来参照步骤420,如果文档不引用一个解决方案,该方法进行至步骤450,对文档是否被附加了一个大纲作出判断。如果文档已经附加了大纲,但没有引用某个解决方案,该方法进行至步骤430,对大纲库作一个“检查”以确定是否存在一个可能与附加在文档110上的大纲关联的解决方案。也就是说,甚至在文档110没有引用解决方案的时候,大纲库可能具有在用户创建文档110之后用户获得的可以用于文档110的解决方案,尽管文档110开始创建时并没有引用解决方案。如果在大纲库中不存在适合于文档110的解决方案,该方法进行至步骤435,如前所述执行随后的步骤。如果文档110没有被附加大纲,该方法进行至步骤455,不使用“聪明的”文档结构打开文档。回过来参照步骤430,如果在大纲库中没有找到与文档110引用的解决方案关联的或与附加的大纲关联的解决方案,该方法进行至步骤460,对用户是否愿意下载一个解决方案作出判断。在步骤460中,应用程序110可以“提示”用户并告诉用户如果用户给用户的文档110下载某个帮助和动作功能,文档110将工作得更有效率或者更为有用。可以用对话框形式将“提示”提供给用户,如图7所示的对话框600。可以对用户作出多种询问以了解用户是否想按照多种方法下载包含所要的解决方案的组件。如果用户拒绝下载解决方案功能和组件,该方法回到步骤455,如前如述不使用“聪明的”文档结构打开文档。如果希望下载提供给用户的解决方案,该方法进行至465。在步骤465中,给文档110提供所需解决方案的组件从一些远程来源如远程基于网络的服务器下载至用户的计算机20。为了定位远程来源,应用程序100使用文档110中的解决方案位置指针118定位并获得必需的解决方案组件。在步骤470中,下载的解决方案被载入客户端的大纲库105,并且如上所述载入这个解决方案这样文档110将包括这个解决方案的功能。图8是流程图,说明确定在使用“聪明的”文档结构打开文档110后在文档工具面板135中所显示的内容。为了参照图8描述所示的步骤,在打开文档110时已经载入并运行“聪明的”文档结构。作为例子,设想用户已经将计算机光标放在文档110的某个位置如“objectives”段落125。该方法700从步骤705开始,进行至步骤710,产生一个围绕光标的XML元素列。光标在XML层次中的位置被定位,并确定了取得光标定位位置的X-路径表达式。例如,参照上面列出的简化的XML代码集,光标可能被定位在“e-mail”标签和在更大的XML树“employeereview”标签中。在步骤715中,对在文档工具面板135中应该出现的工具和帮助内容作出决定。为了作出这个决定,应用程序110进入一个存贮于客户计算机20的包含有关哪个XML元素具有哪个与那些XML元素关联的特定的工具、帮助内容、控件等的查找表。例如,如果光标被定位于在“personalinformation”段落130中的“e-mailname”元素,应用程序100将进入查找表确定与e-mailname元素关联的特定工具或帮助内容。用唯一标识符(ID)填入与每个元素关联的每个文档动作、帮助项和控件,该标识符应用于它所关联的XML元素,这样应用程序100可以容易地定位与XML元素关联的动作、帮助项或工具。在步骤720中,对任何动作、帮助项或控件是否是动态的作出判断。基于语境或对应语境的背景信息一个控件可能不同地出现。在回顾文档110的“objectives”段落完成后这个段落可以与“SubmitReview”按钮关联起来。另一方面,如果这个段落没有完成,“SubmitReview”按钮不会在面板135中出现因为不应该在没有完成“objections”段落时提交文档。因此,在步骤720中按钮“SubmitReview”在这种情况下被确定为是动态的,该方法随后进行至步骤725。在步骤725中,文档110通过应用程序100调用表示“SubmitReview”按钮的组件并在光标位置的语境中提供该组件,例如,“objections”元素已经完成或没有。在步骤730中,在对动作、帮助内容或控件是静态的或动态的作出判断后,在用户计算机屏幕中相邻于文档110绘制文档工具面板135的内容,如图1所示。在步骤735中,对光标是否移动至一个新的语境作出判断。例如,用户在“objections”段落完成输入后,用户可以将光标移动到“personalinformation”段落120以完成那个段落。如果光标没有移动,该方法进行至步骤790结束。也就是说,只要光标还留在当前语境,文档工具面板135中的内容不会产生其它变化。如果光标被移入文档中的一个新的语境,该方法回到步骤710,在这里产生一个新的包含光标的XML元素列,该方法如上所述进行以在文档工具面板135中提供与新的光标位置和语境关联的新内容。回过来参照图1,下面是关于在文档工具面板135中绘制的工具和帮助内容的描述。图1所示的特定文字与控件只是作为举例,如上所述可以随光标位置的语境而改变。名称140是与在文档工具面板135中显示的动作和工具关联的文档XML元素的名称。这个名称可以与附加于文档的大纲有关例如职员业绩回顾表格,或者名称140可以与目前光标所在的XML元素有关。例如,如果光标位于“objections”段落,名称140可能被重新显示为“objectivessection”。根据光标的语境和根据动作是静态的还是动态的显示文档动作145。如上所述,“SubmitReview”动作,例如,可能是一个动态的动作,如果文档110所有要求的段落还没有完成则不在文档动作面板135中显示。“LastYearsObjectives”帮助主题133是以折叠显示方式显示的。选择“+”扩展帮助主题以显示包含在内的其它子主题。“ObjectiveWritingTips”帮助主题以展开方式显示,显示在这个帮助主题下可用的全部内容160。如果在文档110中的一个XML元素没有与之关联的“聪明的”文档动作或工具,这个XML元素不会显示或标识在文档工具面板135中。帮助主题和工具可以嵌套,意思是子帮助主题和子动作可以包括在帮助主题和文档工具中。如果光标因嵌套处在多个元素中,那么在文档工具面板135中的段落数量可以大于二。在这种情况下,嵌套元素按照嵌套顺序显示,即最外层元素在文档工具面板135的顶部,而最里面的元素在文档工具面板135的底部。如果元素、动作、工具和帮助内容在一页内放不下,则可以提供一个滚动条如图1所示,它将扩展整个文档工具面板135。动作和帮助内容是按照向文档110提供它们的dll或组件在响应应用程序100的调用时返回它们的名称的顺序列出的。依照一个实施例,与动作、控件或帮助主题无关的XML元素不向用户显示。不过如果需要显示,所有XML元素可以显示在面板135中让用户了解文档110完整的XML结构。因此,在文档110打开后,如上所述载入和实现“聪明的”文档结构,文档110的用户现在可以在文档工具面板135中提供的“聪明的”文档功能的帮助下输入文档和完成文档。用户在XML结构标记过的文档的不同段落中移动计算机光标时,可以为用户提供与文档的该部分关联的帮助信息和工具。对于本
技术领域:
的技术人员,在本发明中所制作的各种不同修改方案或变化方案很显然没有脱离本发明的范围或精神。对于本
技术领域:
的技术人员,本发明的其它实施例显然来自对在此公开的本发明的规范和实践的思考。权利要求1.一种为计算机生成文档提供解决方案功能的方法,其特征在于,包括以下步骤将一为文档定义可容许的数据内容、数据类型和数据结构的大纲附加在文档上;结构化文档使文档与大纲关联起来;将一解决方案与文档结构关联起来;汇编一组软件组件为文档提供解决方案;以及使文档能够基于文档中的编辑位置调用该组软件组件为文档提供解决方案。2.如权利要求1所述的方法,其特征在于,大纲包括整个文档可容许的数据内容、数据类型和数据结构的定义。3.如权利要求1所述的方法,其特征在于,大纲包括文档特定部分可容许的数据内容、数据类型和数据结构的定义。4.如权利要求1所述的方法,其特征在于,给文档附加大纲的步骤包括给文档附加可扩展标记语言(XML)大纲。5.如权利要求3所述的方法,其特征在于,结构化文档的步骤包括结构化文档的特定部分,使文档的特定部分与大纲所定义的文档特定部分可容许的数据内容、数据类型和数据结构关联起来。6.如权利要求5所述的方法,其特征在于,结构化文档特定部分的步骤包括用XML结构标注文档的特定部分。7..如权利要求6所述的方法,其特征在于,用XML结构标注文档的步骤进一步包括定义与文档的特定部分关联的XML元素。8.如权利要求7所述的方法,其特征在于,定义XML元素的步骤进一步包括定义与文档中一组文字串关联的XML元素。9.如权利要求7所述的方法,其特征在于,定义XML元素的步骤进一步包括定义与文档中一组数据元素关联的XML元素。10.如权利要求6所述的方法,其特征在于,使解决方案与文档结构关联起来的步骤进一步包括使帮助内容和文档工具与XML结构关联起来。11.如权利要求10所述的方法,其特征在于,帮助内容和文档工具与包括XML结构的XML元素关联起来。12.如权利要求6所述的方法,其特征在于,使解决方案与文档结构关联起来的步骤进一步包括使控件与XML结构关联起来。13.如权利要求12所述的方法,其特征在于,使控件与XML结构关联起来的步骤包括使单选按钮、检查框或文本框与XML结构关联起来。14.如权利要求1所述的方法,其特征在于,进一步包括以下步骤将所述软件组件列在软件组件清单中;以及将指向清单的指针存贮在软件组件库中。15.如权利要求14所述的方法,其特征在于,软件组件库是大纲库。16.如权利要求7所述的方法,其特征在于,使文档能够调用软件组件组的步骤进一步包括将一个解决方案属性附加在文档上的步骤,使软件组件组与文档关联起来为文档提供该解决方案。17.如权利要求16所述的方法,进一步包括使解决方案属性与XML结构关联起来。18.如权利要求17所述的方法,其特征在于,将一个解决方案属性附加在文档的步骤进一步包括将一组解决方案属性附加在文档,使一组语境感测与文档的特定部分关联起来。19.如权利要求18所述的方法,进一步包括使解决方案的语境感测组的每一个与一组相应的XML元素关联起来.20.如权利要求19所述的方法,其特征在于,解决方案的语境感测组的每一个包括与一组XML元素的每一个关联起来的帮助内容或文档工具。21.如权利要求7所述的方法,其特征在于,在一个与解决方案关联的XML元素中开始编辑文档基础上,进一步包括使文档能够通过接收文档对解决方案的调用而接收解决方案。22.如权利要求1所述的方法,其特征在于,进一步包括以下步骤引导打开文档的软件应用程序;初始化打开文档;确定文档是否引用解决方案;确定在软件组件库中是否存在提供解决方案的软件组件组;以及调用软件组件组为文档提供解决方案。23.如权利要求22所述的方法,其特征在于,响应调用软件组件组向文档提供解决方案。24..如权利要求22所述的方法,其特征在于,进一步包括确定文档是否引用不止一个解决方案。25.如权利要求22所述的方法,其特征在于,进一步包括确定文档是否包含指向解决方案的解决方案属性。26.如权利要求25所述的方法,其特征在于,进一步包括确定文档是否包含指向解决方案的指针。27.如权利要求26所述的方法,其特征在于,进一步包括确定文档是否包含指向解决方案的语境感测的指针。28.如权利要求22所述的方法,其特征在于,进一步包括完成打开具有可供文档使用的软件组件组提供功能的文档的步骤。29.如权利要求22所述的方法,其特征在于,进一步包括以下步骤文档编辑聚焦在文档特定部分中;生成围绕编辑焦点位置的一列XML元素;确定是否有任何可用的、与该列XML元素关联的解决方案;以及在确定是否有任何可用的、与该列XML元素关联的解决方案后,调用每个关联的解决方案并为文档的使用获得每个关联的解决方案。30.如权利要求29所述的方法,其特征在于,文档编辑聚焦在文档特定部分中的步骤包括将计算机光标放在文档特定部分中。31.如权利要求25所述的方法,其特征在于,确定是否有任何可用的、与XML元素列关联的解决方案的步骤,进一步包括分析一个解决方案的查找表以确定是否有任何可用的、与XML元素列中任何XML元素关联的解决方案的步骤。32.如权利要求31所述的方法,其特征在于,进一步包括确定是否有任何可用的解决方案是动态的通过调用包含任何解决方案的一组软件组件的每一个的步骤。33.如权利要求31所述的方法,其特征在于,进一步包括确定与通过调用一组包含可用解决方案的软件组件的每一个要向文档用户显示的可用解决方案关联的功能类型的步骤。34.如权利要求33所述的方法,其特征在于,响应确定与要向用户显示的可用解决方案关联的功能类型的步骤,指定向用户显示的帮助内容。35.如权利要求34所述的方法,其特征在于,响应确定与要向用户显示的可用解决方案关联的功能类型的步骤,指定向用户显示的文档工具。36.如权利要求33所述的方法,其特征在于,响应确定与要向用户显示的可用解决方案关联的功能类型的步骤,指定向用户显示的控件。37.如权利要求36所述的方法,其特征在于,被指定向用户显示的控件包括单选按钮、检查框和文本框。38.如权利要求29所述的方法,其特征在于,进一步包括以下步骤创建定义和与XML元素列关联的可用解决方案关联的一列文档动作、控件或帮助内容的XML大纲。39.如权利要求33所述的方法,其特征在于,进一步包括运行用于显示为文档的使用而获得的每个解决方案的图形用户界面。40.权利要求39所述的方法,其特征在于,显示为文档的使用而获得的每个解决方案的步骤包括在可向文档用户显示的帮助面板上绘制帮助内容和文档工具。41.如权利要求39所述的方法,其特征在于,显示为文档的使用而获得的每个解决方案的步骤包括在可向文档用户显示的帮助面板上绘制单选按钮、检查框或文本框。42.如权利要求13所述的方法,其特征在于,进一步包括一种实现为文档提供解决方案的应用编程接口(API)的方法,包括以下步骤提供SmartDocXMLTypeCount属性,包含与解决方案关联的XML元素类型的数量;提供SmartDocXMLTypeName属性,包含与解决方案关联的XML元素类型的唯一标识符;提供SmartDocXMLTypeCaption属性,包含与可向用户显示的XML元素的标题;提供ControlCount属性,包含与解决方案关联的控件数量;提供ControlID属性,包含控件的唯一标识符;提供ControlTypeFromID属性,包含解决方案可使用的控件类型;提供ControlNameFromID属性,返回与提供文档的应用程序内部使用的每个控件关联的名字;提供PopulateRadioGroup方法,包括为了填入可能向用户显示的单选控制按钮所执行的例程和指令;提供OnRadioGroupSelectChange方法,包括在选定单选控件时执行的例程和指令;提供PopulateImage方法,包括为提供与解决方案关联的图像而执行的例程和指令;提供ImageClick方法,包括当选定图像时执行的例程和指令;提供PopulateDocumentFragment方法,包括为显示数据而执行的例程和指令;提供PopulateActiveXProps方法,包括为获得与解决方案关联的ActiveX功能而执行的例程和指令;提供PopulateCheckbox方法,包括提供检查框控件所执行的例程和指令;提供OnCheckboxChange方法,包括在选定检查框控件时所执行的例程和指令;提供PopulateListOrComboContent方法,包括填入列表框控件所执行的例程和指令;提供OnListOrComboSelectChange方法,包括在选择列表框控件的一项时所执行的例程和指令;提供PopulateTextboxContent方法,包括填入文本框所执行的例程和指令;提供OnTextContentChange方法,包括处理与文本框控件的内容改变关联的事件所执行的例程和指令;提供PopulateHelpContent方法,包括用数据填入帮助内容字段所执行的例程和指令;以及提供InvokeControl方法,包括在选中控件时所执行的例程和指令。43.一种为一个计算机生成文档提供语境感测功能的方法,其特征在于,包括如下步骤给文档附加为文档定义可容许的数据内容、数据类型和数据结构的可扩展标记语言(XML)大纲;用与大纲为文档特定部分所定义的可容许的数据内容、可容许的数据类型和可容许的数据结构关联的XML结构标注文档的特定部分;使帮助内容和文档工具与包含XML结构的XML元素关联起来;汇编一组软件组件为文档提供帮助内容和文档工具;以及使文档能够有基于在文档中的编辑位置调用软件组件组为文档提供帮助内容和文档工具。44.如权利要求43所述的方法,其特征在于,进一步包括如下步骤将软件组件组列在一个软件组件清单中;以及将清单存贮在一个软件组件库中。45.如权利要求43所述的方法,其特征在于,使文档能够调用软件组件组的步骤进一步包括将一个解决方案属性附加在文档上的步骤,使软件组件组与文档关联起来为文档提供帮助内容和文档工具。46.如权利要求43所述的方法,其特征在于,还包括使文档能够在一个与特定的帮助内容或特定的文档动作关联的XML元素中开始编辑文档基础上通过调用软件组件组,来启动文档接收帮助内容和文档工具的步骤。47.如权利要求43所述的方法,其特征在于,进一步包括如下步骤启动打开文档的软件应用程序;确定文档是否引用帮助内容或文档工具;确定在软件组件库中是否存在提供帮助内容或文档工具的软件组件组;以及调用软件组件组为文档提供帮助内容或文档工具。48.如权利要求47所述的方法,其特征在于,响应调用软件组件组,为文档提供帮助内容或文档工具。49.如权利要求47所述的方法,其特征在于,进一步包括如下步骤打开文档;将计算机光标放在文档的特定部分中;产生围绕光标位置的一列XML元素;确定是否有任何与XML元素列关联的可用的帮助内容或文档工具;以及在确定是否有任何与XML元素列关联的可用的帮助内容或文档工具后,调用每个关联的帮助内容或文档工具;以及为文档的使用获得每个关联的帮助内容或文档工具。50.如权利要求49所述的方法,其特征在于,确定是否有与XML元素列关联的可用的帮助内容或文档工具的步骤,进一步包括分析一个解决方案的查找表以确定是否有与XML元素列中任何一个XML元素关联的帮助内容或文档工具。51.如权利要求50所述的方法,其特征在于,进一步包括如下步骤运行图形用户界面显示为文档的使用而获得的每个帮助内容或文档工具;以及在图形用户界面中显示每个帮助内容或文档动作。52.存储有计算机可执行指令的计算机可读介质,其特征在于,在由一台计算机执行时完成下列步骤将一个为文档定义可容许的数据内容、数据类型和数据结构的可扩展标记语言(XML)大纲附加在文档上;用与由大纲为文档的特定部分定义的可容许的数据内容、数据类型和数据结构关联的XML结构标注文档的特定部分;使帮助内容和文档工具与包含XML结构的XML元素关联起来;汇编一组软件组件为文档提供帮助内容和文档工具;以及使文档能够根据文档中的编辑位置调用为文档提供帮助内容和文档工具的软件组件组。53.如权利要求52所述的在其上存贮了计算机可执行指令的计算机可读介质,其特征在于,在由计算机执行时进一步完成下列步骤将软件组件组列入一个软件组件清单;以及将清单存贮在软件组件库中。54.如权利要求53所述的在其上存贮了计算机可执行指令的计算机可读介质,其特征在于,在由计算机执行时进一步完成下列步骤其中,使文档能够调用软件组件组的步骤还包括将一个解决方案属性附加在文档上使它与为文档提供帮助内容和文档工具的软件组件组关联起来。55.如权利要求54所述的在其上存贮了计算机可执行指令的计算机可读介质,其特征在于,在由计算机执行时进一步完成下列步骤使文档能够在一个与特定帮助内容或特定的文档动作关联的XML元素中开始编辑文档的基础上通过调用软件组件组接收帮助内容和文档工具。56.如权利要求55所述的在其上存贮了计算机可执行指令的计算机可读介质,其特征在于,在由一台计算机执行时进一步完成下列步骤启动打开文档的软件应用程序;确定文档是否引用帮助内容或文档工具;确定在软件组件库中是否存在提供帮助内容或文档工具的软件组件组;以及调用软件组件组为文档提供帮助内容或文档工具。57.如权利要求56所述的在其上存贮了计算机可执行指令的计算机可读介质,其特征在于,在由计算机执行时进一步完成下列步骤响应调用软件组件组,为文档提供帮助内容或文档工具。58.如权利要求57所述的在其上存贮了计算机可执行指令的计算机可读介质,其特征在于,在由计算机执行时进一步完成下列步骤打开文档;将计算机光标放在文档的特定部分中;产生围绕光标位置的一列XML元素;确定是否有任何与XML元素列关联的可用的帮助内容或文档工具;以及在确定是否有任何与XML元素列关联的可用的帮助内容或文档工具后,调用每个关联的帮助内容或文档工具;以及为文档的使用获得每个关联的帮助内容或文档工具。59.如权利要求58所述的在其上存贮了计算机可执行指令的计算机可读介质,其特征在于,在由计算机执行时进一步完成下列步骤所述确定是否有与XML元素列关联的可用的帮助内容或文档工具的步骤,进一步包括分析一个解决方案的查找表以确定是否有与XML元素列中任何一个XML元素关联的帮助内容或文档工具。60.如权利要求59所述的在其上存贮了计算机可执行指令的计算机可读介质,其特征在于,在由计算机执行时进一步完成下列步骤为显示为文档的使用而获得的每个帮助内容或文档工具运行图形用户界面;以及在图形用户界面中显示每个帮助内容或文档动作。全文摘要一种为计算机生成的“聪明的”文档的创建、实现和使用而提供的方法和系统,该文档附加了向那些文档的用户提供语境感测工具、控件和帮助内容的功能。用可扩展记标记语言(XML)标签和结构标注文档的部分这样当一个用户进入这些部分时如将计算机光标放在这些部分中,为用户提供语境感测工具、控件和/或帮助内容。在用户计算机屏幕上可以打开与正被编辑的文档相邻的文档工具面板以提供与光标所在文本或数据的语境关联的文档工具、控件和帮助内容。如果用户将光标移动到文档的另一个部分,用户可以获得与光标所在新的文本部分的语境关联的信息。文档编号G06F9/44GK1495609SQ0314300公开日2004年5月12日申请日期2003年6月6日优先权日2002年6月6日发明者J·雷纳,J雷纳,P·布罗曼,蘼,J·K·亚普,亚普申请人:微软公司