可重用数据标记语言的制作方法

文档序号:6512791阅读:1196来源:国知局

专利名称::可重用数据标记语言的制作方法
技术领域
:本发明一般涉及数据处理系统,特别涉及一种用在数据浏览器和操作器中的计算机标记语言。相关技术目前在因特网上,通常使用称作超文本传输协议(HypertextTransferProtocol,HTTP)的通信协议进行传输和通信,该协议可以用来传送格式为超文本标记语言(HypertextMarkupLanguage,HTML)的文件和文档。标记语言是一种嵌入描述文档的结构和行为并且指示web浏览器或其它程序如何显示文档的标记“标签”(特殊的字符序列)的方式。典型地,格式为HTML的文档或网页是混合普通文本和这些标记标签的简单ASCII文本文件。HTML具有为特定目的定义固定标签集的相对受限结构。而且,HTML典型地只对文本和图象工作,并且典型地只指示浏览器如何显示文档浏览器可以读取并且显示字符串,但是并不“理解”数据内容。在一定程度上,HTML浏览器在它们的显示中表现数字,它们仍不被解释为数字—仅仅是文本。因此,HTML文档不是作为“数据”进行解释,而是作为用于显示图象的格式化指令。用户不能在数值数据中“冲浪”,以观看图象、应用变换、组合来自不同网页的数字、或者以可管理的形式将数字载入到电子表格中。在没有剪切-并-粘贴文本、确定数据类型等人工干预的情况下,不能由分析程序直接读取数字。因此,传统分析程序考虑到对抽象数字进行特别的查看和操作(例如,电子表格程序或数据库程序),但是不能直接从在线源读取它们的数据。数据一经输入并解释,这种程序就可以执行对数据的统计分析、结构分析和简单变换。考虑到HTML的受限能力和SGML不同寻常的复杂性,可扩展标记语言(ExtensiveMarkupLanguage,“XML”)被开发出来用以帮助克服一些这种限制。XML是没有指定标签的自由形式标记语言,它允许开发者开发他们自己的标签,并且,根据特定任务,有效地创建他们自己的标记语言。在XML中,必须根据特定规则组织标签,但是标签的含义是灵活的。不同于HTML,XML描述结构和含义,而不是格式化。因此,不同的专业可以开发它们自己的专业标记语言。例如,如果开发者要用XML创建描述书的标记语言,开发者可以为“标题”、“作者”、和“出版社”创建具有特定含义的标签,这些如果用HTML就不可能。虽然XML自由形式结构允许开发者开发标记语言,但是由于不同用户为不同目的使用标签从而标签的使用没有标准化,因此这种个人化标记语言不能彼此兼容。在今天的商业世界,典型地伴随数据操作的问题经常增加开支和困难。一个这样的问题是经常数据和描述数据的文档化都不是电子格式。数据库和电子表格信息这种传统方法经常要求,任何时候数据要从一个系统传输到另一个系统都需要昂贵的数据库管理员作转换,需要结合任何一种编程任务对打印文档化(documentation)进行昂贵的分析,并且输出很少包含对原始源、结构和创建那个输出的操作的任何指示。在基于PC的系统中,创建数据的文档化传统上留给用户典型地,从用户收集文档化、将它格式化并且将它与数据一起保存,这些工作都没有由机器来完成,从而消除了数据重用的便利性。另一阻碍传统数据库和电子表格效率的障碍是在太低的概念层上计算。典型数值分析程序的计算对电子表格的单个“单元格”或对数据库的单个“记录”进行操作。当涉及很多不同单元格或记录值时,一次分析单个值的操作太慢,并且被证实,成本太高。缺少帮助浏览数字的标准标记语言没有办法在单个图表上读取、自动操作和显示从多个在线源读取的不同类型的数值数据。需要人的干预来识别不同类型的数值数据,并且规范数据,从而让它们可以在图表、图和报表中进行组合和有条理的显示。传统上,当组合一系列不同类型的数据时,显示数值数据的图表格式化需要手工操作。而且,对不同数值数据集之间的关系没有给出可视提示。数据和分析例程没有标准化这一事实进一步阻碍了计算机行业。虽然计算机行业已开发了用于文件格式和函数级接口的标准,但是它尚未开发一种通用数据格式或内容分析标准。这导致了使用不同协议的系统、行业、公司和用户之间昂贵的数据翻译。传统电子表格的分析例程典型地采用“电子表格宏”的形式。宏本质上是执行经过完好定义、通常受限的任务的短程序。上百万电子表格用户已使用电子表格宏来自动完成涉及在操作他们的电子表格中数字的机械任务。但是在电子表格宏上的巨大投入一般都没有得到充分利用,因为这些宏是“编写一次、使用一次”的软件类型;它们很少被其他人使用。当前编程语言和电子表格宏是不可重用或不可移植的至少存在八种原因。其中一个问题是电子表格数据引用通常基于物理位置。假设宏编写者将利率假定放在单元格“C4”中,而另一人的表格将利率假定放在单元格“BR47”中,明确地引用绝对单元格位置C4的宏将不可重用在第二个电子表格中。另一相关问题是电子表格的数字没有描述它们含义的量度或语义指定符。一个电子表格可能以百万美元为单位进行操作,而另一表格以千美元为单位进行操作。没有人的干预不能在两个电子表格中使用同一宏,以挑选出所有的不一致性,并且修改一个电子表格以与另一兼容。作为另一示例,可以编写一个股票价格除以收益来得到P/E比率的宏,但是除了单元格中的词在数字的左边或上边之外,电子表格中的数字没有任何含义。缺少标准位置和词汇表,这些指示符毫无用处。传统电子表格宏的另一问题是缺少文档化。由于宏典型地只能由它们的创建者对为其创建该宏的单个电子表格进行使用,因此它们倾向于是完全没有文档化的没有普通语言描述、没有帮助文件、对于允许值、源联系列表、授权信息等没有数据标准。而且,对于宏没有规模发布的机制。电子表格宏不是web(万维网)友好的它们通常受限于一种牌子的电子表格和一个平台,不支持超链接,并且不能由搜索引擎进行搜索。另外,它们还不被目录或分类系统支持,并且没有完备市场。更进一步,用户典型地在他们所编写的宏中不包括单元测试,合法性测试,错误处理和其他终端用户保护。这样,用户对可能要加入到他们的电子表格的宏的输出不得不小心。传统电子表格宏在制作数据的图形界面上存在困难。外来宏的终端用户不想理解每一个单元格和位置约束,对允许输入的合法值的每一个限制等。缺少相关图形组件进一步加剧了这一问题。最后,传统电子表格宏太小而不具有市场价值,或太难于使用而找不到大量用户。这样的结果是对它们的编写缺少商业刺激。因此克服上述问题和其他相关问题是理想的。概要本发明的方法和系统提供一种称作可重用数据标记语言(ReusableDataMarkupLanguage,“RDML”)的标记语言,它允许对数字进行浏览和操作,并且提供一种充当Web浏览器与电子表格/分析应用的组合体的相关数据查看器,它可以自动从多个在线源读取数字并且对它们进行操作,而不需要人的干预。使用该标记语言,用户可以使用基于数值的查询浏览在线源,并且数据观看器可以自动地在单个显示上组合和操作多个文档。根据本发明的一个实现,提供一种数据处理系统中的方法,其接收第一标记文档和第二标记文档,第一标记文档和第二标记文档均包含数值和反映数值特征的标签。该方法将第一标记文档和第二标记文档自动组合为单个数据集,并且显示该单个数据集。根据另一实现,提供一种数据处理系统中的方法,其接收包含数值的文档,并且接收对数值特征的指示,该特征包括单位和数量级。而且,它将所接收的指示作为与数值关联的标签加入到文档中,以创建标记文档。根据另一实现,提供一种数据处理系统中的方法,其接收具有数值集和表示数值特征的标签的标记文档,并且确定对该数值集的变换以反映新的特征。然后该方法访问该数值集的多个标签,多个表示数量级(magnitude)、标度(scale)、修饰符(modifier)、单位(units)、测度(measure)、调整(adjustment)和集合(aggregation)的标签。而且,该方法确定数量级、标度、修饰符、单位、测度、调整和集合标签的转换因子,以完成向新特征的变换,并且将该数值集乘以所确定的转换因子,以变换该数值集来反映新的特征。本发明的方法和系统提供一种对数值数据进行自动操作和图形显示的图表视图。该操作和显示基于描述数值数据特征,与数值数据相关联的属性。图表视图帮助在单个图表上同时显示不同类型数值的不同序列,并且自动显示适当的描述性文本部分(例如,轴标、轴标题、图表标题、数值精度、图例、脚注、轴标度等)。图表视图允许单击变换数值序列,并且作为响应提供对描述性文本部分的自动格式化。根据本发明的一种实现,提供一种具有显示图表的显示器的数据处理系统中的方法,接收带表示数值特征的标签的数值序列,并且在图表上显示数值。而且,该方法根据至少一个标签自动确定数值标题,并且在图表上显示所确定的标题。根据本发明的另一实现,提供一种具有显示图表的显示器的数据处理系统中的方法,接收具有表示数值特征的标签的第一数值序列,并且在图表上显示第一数值序列,第一数值序列对应于图表上的第一轴。该方法进一步接收要加到图表的第二序列,第二数值序列具有表示第二数值序列特征的标签,并且在图表上自动生成第二轴。最后,该方法在第一数值序列显示在图表上的同时,在对应于第二轴的图表上显示第二数值序列。根据本发明的另一实现,提供一种具有显示图表的显示器的数据处理系统中的方法,接收在显示器上的图表上显示数值序列的指令,该数值具有表示数值特征的标签,并且在图表上显示数值序列以响应所接收的指令。然后该方法根据至少一个标签自动格式化图表,以响应所接收的指令。根据本发明的另一实现,提供一种数据处理系统,包括用于存储用来操作和显示数值数据的图表应用的存储器,该存储器具有带表示与数值相关联的文本信息的标签的所选数值序列。该数据处理系统进一步包括显示具有图例的图表的显示器,显示与所选数值序列相关联的文本信息。当文本信息不能在图表的图例上完全显示时,图例将对与数值数据序列相关联的文本信息进行换行和滚动。该系统进一步包括用于运行图表应用的处理器。本发明的方法和系统提供一种对数值数据进行自动操作和图形显示的树视图。树视图帮助在单个显示器上同时显示不同类型数值的不同序列,并且自动显示适当的描述性文本部分。树视图允许单击变换数值序列,并且作为响应提供对描述性文本部分的自动格式化。它在向用户提供与给定数值数据序列相关联的超链接的同时,进一步向用户可视性地显示数值数据序列之间的关系。根据本发明的一种实现,提供一种数据处理系统中的方法,接收第一数值序列和第二数值序列,并且确定第一与第二数值序列之间的关系。然后该方法根据所确定的关系显示描述第一与第二数值序列之间关系的图标。根据本发明的另一实现,提供一种数据处理系统中的方法,接收数值序列和与该数值序列相关联的链接,该链接具有一个相关超链接列表。该方法显示该数值序列及其相关链接,并且接收激活链接的指令。而且,该方法还显示与链接相关联的超链接列表,以响应所接收的指令。根据本发明的另一实现,提供一种具有显示图表的显示器的数据处理系统中的方法,接收带相关元数据文档化的数值序列。该方法进一步接收选择数字序列的指令,并且在显示与数值序列相关联的元数据文档化的同时在图表上显示数值序列。根据本发明的另一实现,提供一种数据处理系统,包括带一种程序的存储器,该程序用于操作数值,并且存储第一数值序列和第二数值序列。该数据处理系统进一步包括显示器,用于显示第一和第二数值序列和描述第一和第二数值序列之间关系的关系图标。最后,该数据处理系统进一步包括用于运行该程序的处理器。本发明的方法和系统提供一种称作可重用宏标记语言(ReusableMacroMarkupLanguage,“RMML”)的标记语言,用于产生和利用这样的宏它是能快速、便宜地进行编写的可重用数值分析例程,并且采用可由宽范围的RDML(在其上运行宏的平台)数据文档使用的形式。RMML允许可重用电子表格类型宏作为web文档进行张贴,由搜索引擎进行搜索,组合为更加复杂的程序,并且与很多数据文档一起进行重用。RMML带给电子表格处理例程如下经济和效率好处(1)标准化;(2)可互换部分;(3)创建的专业化和流水线技术;和(4)创建和部署的规模经济。另外,RMML带给电子表格宏和数值编程一些万维网(WorldWideWeb)网的好处(1)广泛的按需访问性;(2)搜索文档的能力(在这种情况下,对例程的功能和行为而不是文本或数据进行搜索);和(3)超链接文档的能力(包括远端相互调用的宏能力)。根据本发明的另一实现,提供一种数据处理系统方法,接收定义执行数值序列操作的宏,并且接收带表示数值特征的标签的数值序列。然后该方法使用所表示的特征对该数值序列执行由宏定义的操作。根据本发明的另一实现,提供一种数据处理系统方法,接收定义对数值集操作的宏,并且接收数值的向量或矩阵。然后该方法使用该向量或矩阵作为操作中的变量执行由宏定义的操作。根据本发明的另一实现,提供一种数据处理系统,包括一个包含数值分析程序的存储器,该程序具有定义为对数值序列操作的宏和带表示数值特征的标签的数值序列。它进一步包括处理器,用于运行该程序,从而该程序对该数值序列执行由宏定义的操作;显示器,用于显示操作结果。附图描述图1示出根据本发明方法和系统的可重用数据标记语言(RDML)数据查看器及其输入和输出的高层图;图2示出适合用于本发明方法和系统的数据处理系统200;图3示出图2所示各种RDML软件和硬件组件的相互关联图;图4示出图2和3所示RDML格式器的使用,以将标记标签加入到数据;图5示出图2和3所示RDML格式器的数据库/文档页签和管理屏幕的屏幕图;图6示出当访问图2和3所示的RDML文档服务器时所执行步骤的流程图;图7A示出图2和3所示的RDML数据查看器的内部架构;图7B说明图7A所示符号的含义;图8示出根据本发明方法和系统的,在用于下载、处理和显示RDML文档的方法中由RDML数据查看器执行的步骤的流程图;图9示出根据本发明方法和系统的RDML文档类型定义的元素;图10示出根据本发明方法和系统的,用来自动操作RDML文档以使用行项属性进行显示的步骤的流程图;图11示出由图7A所示x-值变换器执行的步骤,以将新文档存储在主数据存储中的流程图;图12A-C示出根据本发明方法和系统的X-Y图和树视图;图13示出如图7A所示的RDML数据查看器的主数据存储;图14A-F示出根据本发明方法和系统的,如图7A所示的RDML数据查看器的图表视图和树视图15A-C示出根据本发明方法和系统的,在树视图中一选择行项(lineitem)就由图形用户界面、图表管理器和用于将行项加到图表视图的图表数据对象执行的步骤的流程图;图16示出根据本发明方法和系统的,数据查看器的电子表格视图和图表视图;图17示出根据本发明方法和系统的,数据查看器的脚注视图和图表视图;图18示出根据本发明的可重用宏标记语言(RMML)文档类型定义的元素;图19A-C分别示出根据本发明的RMML文档处理、RMML图形界面和RMML宏解释器;图20A-D示出根据本发明的RMML宏面板的屏幕图;图21示出根据本发明的,在将来自电子表格的信息置上标签的方法中使用的步骤的流程图;图22A-D示出根据本发明的,将电子表格信息置上标签以创建文档的示例性屏幕图。详细描述由于详细描述的长度,提供下面目录表。主题章节可重用数据标记语言概述……………………………………………….I可重用宏标记语言概述…………………………………………………I.A系统硬件组件………………………………………………………………II系统概述……………………………………………………………………III系统细节……………………………………………………………………IV内部数据查看器架构………………………………………………………IV.A文档类型定义…………………………………………………………...IV.A.1读取器、分析器和处理器………………………………………………IV.A.2X-值变换器和行项集类型………………………………………………IV.A.3主数据存储…………………………………….………………………..IV.A.4图表视图…………………………………….…………………………..IV.A.5树视图………………………………………….………………..IV.A.6电子表格视图………………………………….………………..IV.A.7脚注视图……………………………………….………………..IV.A.8标签化向导…………………………………….………………..IV.A.9RDML文档方面……………………………………………………IV.A.10图形用户界面和HTML浏览器………………………………………IV.B可重用宏标记语言…………………………………………………IV.CRMML宏包………………………………….…………………….IV.C.11.RDML概述本发明的方法和系统提供一种称作可重用数据标记语言(“RDML”)的标记语言和称作RDML数据查看器的数据查看器,该查看器用于提取、操作和查看使用RDML格式的文档。通常,RDML允许对数字进行浏览和操作,并且允许查看器充当可以自动从多个在线源读取数字,理解它们的含义并且对它们进行操作而不需要人的干预的Web浏览器与电子表格/分析应用的组合体。RDML数据查看器可以如同HTML操作文本一样使用因特网获取所请求的数字集。使用RDML,在因特网上形成真正是数字查询的搜索是可能的。一个这样的请求是创建销售增长率大于10%并且没有应纳税收入的公司的从1996到1997的季度收入列表。接收到任何所请求的数值数据集之后,甚至它们具有不同格式(也就是,一个以千美国美元为单位,另一以百法国法郎为单位),数据查看器也可以在单个图形显示上对它们进行自动变换和组合,而不需用户作手工调整。用户然后可以向显示作单击调整(例如,调整通胀、货币、时期、数字精度等),查看所接收信息的不同方面。RDML通常通过将数字与描述数字含义的属性相关联来帮助数字浏览。虽然RDML的优选实施例是一个完全遵循XML版本1.0的实现,但是其他实现也是可能的。“XML宝典”,ElliotteRustyHarold,IDGBooksWorldwide,1999中对XML有详细描述,在此加入以作参考。RDML数据查看器是数据浏览器、数据操作器、数据查看器(采用图表、电子表格等形式)和数据文档通用用户界面。它大大扩展了由当前电子表格和数据库管理程序提供的功能。除了所扩展的功能之外,通过允许有效地重用数据、函数和报表格式,它降低了商业成本。RDML数据查看器操作RDML格式的数据文档,这些文档是可以在本地、通过网络(包括因特网)或任何源组合存储的文件。RDML数据文件结构允许RDML数据查看器充当可以在其集成的分析程序中自动读取、解释和操作数字的浏览器与分析程序(如电子表格)的组合体。RDML数据查看器还提供允许用户创建用于操作、变换和显示RDML格式数据的自定义例程的“宏”开发和管理机制。下面将对宏及其相关方面进行更加详细的描述。图1示出根据本发明系统和方法的RDML数据查看器100及其输入和输出的高层图。通常,数据查看器100可以是驻留在计算机存储器中的软件,并且接受几种类型的输入102、104和106,其中一个是RDML数据文档102。RDML数据文档102可以是用遵循XML版本1.0的RDML标签格式化的ASCII文本文档。在本发明的一个实现中,RDML数据文档102的标签被有利地组织为包括数据的文档化并且用“行项”,类似于关系数据库中“记录”或“行”的数据值集合(下面讨论),安排数据。在RDML中,行项通常为计算的基本单位,而不同于大多数传统数据库或电子表格中典型的单个数据值或单元格。RDML文档102包含多个行项集(这种行项集类似于关系数据库中的“表”)和有关这些“行项集”的文档化(“元数据”)。RDML文档102由内部存储数据的RDML数据查看器100进行读取,使其可用于很多以不同方式(图表、表格等)向用户(没有显示)表现数据的“视图”108。由于“视图”108可以是从RDML数据查看器100接收其数据的独立软件程序,因此它们还可称作程序或应用。可以为数据开发分析例程,并且将其置于它们自己的称作可重用宏标记语言(“RMML”)宏文档104的文档中,该文档是向数据查看器100的另一输入,并且是可选的。这些例程是可重用的;它们可以应用到实际上任何满足RMML文档104中要求的数据文档。例如,RMML文档104可以包含用于将RDML数据转换为不同货币的例程,并且任何货币数据可以使用该RMML货币转换宏。虽然其它实施例也是可能的,但是RMML的优选实施例还是完全遵循XML版本1.0的实现。类似地,可以对数据文档应用可重用数据样式语言(ReusableDataStyleLanguage,“RDSL”)样式单106,另一向数据查看器100的可选输入,以创建特定格式的输出报表。RDSL是完全遵循可扩展样式语言(ExtensibleStyleLanguage,“XSL”)的实现,“XML宝典”,ElliotteRustyHarold,IDGBooksWorldwide,1999中对XSL有详细描述。这些RDSL文档106是本质上担当RDML数据文档102的报表编写器的遵循XSL的样式单。典型的用途是用于包含公司财务报表的数据文档。单个RDML数据文档102可以包含一组财务报表,但是能应用几个不同的样式单一个用于以年度栏显示数据、一个以季度分类显示数据、一个以欧洲格式显示数据等等。RDML数据查看器100自动组合数据文档102和样式文档106来创建报表。RDML通过解决数据文档化,分析例程的非标准化和数据计算概念层太低的上述问题,大幅度地降低数据操作的开支、时间和复杂度。RDML通过以能交互使用的机器可读形式将数据与其文档化封装在一起解决数据与其文档化的分离问题。这不同于传统关系数据库的方法,其中数据保存在计算机中,而文档化典型地保存在三环活页夹或其它打印文档中。数据与其文档化的分离在每次必须访问、使用或传输数据时经常需要高价格的数据库编程人员。RDML中的文档化还不同于电子表格的文档化,由于这种文档化只存在于创建者的脑中并且是个人记录,因此它趋向于个人性。在本发明的一个实现中,RDML将机器可读文档化与数据封装在一起。由数据查看器100一起使用数据及其文档化(元数据),以解释数据表示什么、它们如何进行使用以及它们如何进行显示。少量改进原始数据上的先期投入可以减少以后访问和重用数据的人力需要。RDML加入几个重要类型的元数据源、联系信息、授权要求、过期和更新信息、数据类型、数据类、处理指令(例如,如何处理空、缺少值等)、单位和量度和产生各种表现所需的其它信息。使用RDML通过定义数据特征和分析例程接口的标准来解决非标准化的问题。标准化导致组件重用、生产自动化和更快速的产品改进开发。虽然计算机行业已经开发出用于文件格式和函数级接口的标准,但是它尚未开发出通用数据格式或内容分析标准。例如,一旦数据输入到一个应用(无论电子表格、数据库或其它),用户可能想要操作数据,并且查看不同行项的基本统计(总和、平均值、百分比改变、变化等)、标准变化的调整(通胀调整、遵循工业指数、股市平均市价的百分比等)或标准比率(债务/股本,价格/收入等)。由于没有标准通用数据格式,也没有标准分析例程接口,因此用户目前从原始编码开始创建每个这些操作例程。在电子表格中,它们必须逐数字地输入公式和转换因子,并且在数据库中,他们必须编写SQL查询或其它编程例程来操作数据。RDML提供数据标准和用于操作例程的函数接口。这意味着可以编写一个例程,应用到任何满足所加条件的行项,并且这些例程是可重用的。目前,传统电子表格宏(类似于RDML宏104)典型地只能在为其设计该宏的电子表格中使用。这些宏典型地不能在数字可能处于不同单元表格中或采用不同单位的另一电子表格中使用。RDML宏104不依赖于单元格位置或人的干预来规范数据它们可以由他人为其它数据集进行直接使用。如果用户编写一个例如对时间序列的变化均值进行计算和画图的例程,它可以由任何RDML文档102中的任何时间序列进行使用。在解决文档化和标准化问题的同时,使用RDML还可以通过在行项和文档层创建数据“对象”来解决计算发生在太低概念层上的问题,而传统电子表格仅在单元格(单个数字)层上操作。例如,可以通用于数据集,即行项,的计算可以更加有效地操作,因为它们可以只应用一次,而不是单个地应用于很多不同的单个数字或单元格。而且,可以组合、连续应用或通过继承使用分析例程(宏)来创建新的例程。面向行项大大降低了需要进行编写的公式数(一行一个代替一数一个)。它还提高了程序代码的可读性,因为用户能在更高的抽象层上检查逻辑。除解决这些问题之外,RDML还减少数据使用者、数据发布者和程序开发者方面的操作成本、时间和复杂度。要使用和操作数据,典型地,通过因特网提取数据的用户观看数据的文本版本,打印数据(用HTML、ASCII或PDF格式),然后输入数字到电子表格或数据库程序中。RDML数据查看器100通过使数据作为可解释数据立即可用于其它程序,自动完成这个过程用户不需要重新输入。一旦从多个在线源定位数值数据集,数据查看器100就自动对数据进行规格化、核对、变换和格式化。一些传统系统使数据作为普通电子表格格式(如Lotus或Excel)或逗号分隔或其它普通文本格式中的数据用于下载。这样至少节省了用户重新输入特定数字的必要,但是产生一个新问题,操作数据使其变为更可用形式(例如,规格化,标准化)。同样地,RDML(及其相关数据查看器)“规格化”数据,以增加效率。规格化数据主要是规范关键域,包括匹配不同域、解决分类冲突、解决重复处理等。为了有用,数据必须规范为能由应用(如画图例程或计算例程)读取的格式。例如,应用可能期望以年为集合的数据,而输入数据可能是以月为集合的数据。用户必须对输入进行操作,以使其符合应用期望的形式。RDML使用有关输入数据的嵌入文档化对输入作出任何必要规范改变,自动执行这些任务。在上述时间序列的示例中,RDML使用嵌入文档化确定集合是总和或均值等,将月份数据转化到年度数据中。此外,比较数据是电子表格的主要用途。例子包括比较不同公司的财务报表、比较来自不同州的统计和比较不同经济时间序列。当这些数据分类来自不同源时,它们通常不直接兼容。如同拼七巧板的方式,用户必须将数据项布置在电子表格或类似程序中。对于规格化,RDML使用嵌入在各种输入文件中的文档化,确定应该如何核对不同行项和值。一旦数据得以规格化和核对,RDML数据查看器100自动变换数据。传统上,用户典型地对数据集中的数字作出一系列的调整。输入数据可能是例如以“百万美元”为单位,而输出希望以“十亿日元”为单位。RDML提供一套最常用变换的指示符,允许将数据从它们的输入状态自动机器翻译到用户所需的状态。在PC上格式化数据以作输出的传统方法是将数据剪切-并-粘贴到格式化应用(字处理器、图表生成器、电子表格或其它),然后标记数据以将格式修改到所需的输出。这很耗时并且不可重复-如果带点小变化再次输入数据,则必须重复整个格式化过程。RDML数据查看器100通过将原始数据保存在中央存储对象(如下描述)中并且应用单独的格式化指令以创建不同视图108,避免剪切-并-粘贴方法。用户可以用鼠标单击在视图108之间切换,并且程序为用户处理所有格式和数值转换。在一些更高级的数据库管理系统中,使用“报表编写器”方法。如同RDML数据查看器l00,该方法应用一个模板到中央存储的数据集。问题是这些数据集不是标准化的;为一个数据集编写的报表编写器模板典型地不能由另一个使用。然而,RDML如同提供数据和宏重用的方式,提供样式单的重用。除了上述问题之外,RDML还解决有关涉及多个源的数值数据的“活动(live)”连接的问题,该问题典型地需要编程技能。无论目标是绘出通过广域网(例如因特网)还是通过公司LAN来自多个源的数字,加入远端数据由于很多问题被复杂化连接协议、编程语言依赖性、数据类型不一致性、错误处理、数据变换等。编程人员能以一定的代价但不是允许重用的灵活方式,克服这些问题,并且用户再次依赖于自定义编程。为应付自定义编程方法的成本、时间要求和不灵活性,临时用户求助于人力解决方案。在典型的情况下,例如以与利润率相关的十个假定创建财务电子表格。每次使用电子表格,创建者在报纸中查找数字,并将结果输入到适当单元格中,并且手工作出任何必要变换。RDML通过提供一种在标准公式中包括来自远端RDML文档102的数字的方法,消除自定义编程和手工输入的需要。RDML数据查看器100自动在网上定位指定地址以提取数字,作出任何必要变换(例如,从日元到美元),并且将结果置于正确的公式中。采用这种方法,RDML文档102或宏104可以立即利用多个文档。因为它的文档化是机器可读的,它可以由多个系统进行读取,没有一个系统需要知道其它的物理布局或数据类型。最后,使用RDML允许使用因特网所提供数据的客户端处理,从而实现很多优点。在提取数据之后,在客户端执行分析例程(宏),这不同于基于web数据分析的传统方法,在服务器端执行分析例程。虽然敏感数据和计算能在RDML数据查看器100中保留在本地,但是用户不必担心敏感数据被运行服务器的公司误用,或数据在通过web时被盗用。另外,它提高了速度,因为由于不需要因特网的来回传输或在繁忙的服务器上执行例程,图、报表和电子表格的更新可以近乎瞬时。用户还可以选择他们所控制并立即访问的数据本地复制。1.A.RMML概览本发明的方法和系统提供宏和RMML,它允许数值分析例程得以快速、便宜地编写,并且采用可由宽范围的RDML数据文档使用的形式。RMML宏提供结合RDML使用的可重用用户定义计算,自动操作和显示包含在RDML标记文档中的数值数据。RMML还允许电子表格类型宏作为web文档进行张贴,由搜索引擎进行搜索,组合为更加复杂的程序,并且与很多数据文档一起进行重用。例如,在RDML数据查看器中查看具有数据序列的图表的用户可以通过一次鼠标单击,将宏应用到那个图表,并观看图表数据序列的立即(或近乎立即)变换。不但数据发生改变,而且标题、图例、脚注、轴标度和其它属性也发生改变。作为进一步的示例,用户可能正在看以百万美元为单位的汽车销售的时间序列趋势。通过单击名为“百分比变化”的宏,图表将根据一个时期一个时期的百分比变化重新计算自身。Y-轴标题从“百万美元”改变为“百分比年度变化”,等。表操作宏可以执行如组合两个表为一个、对表进行排序、搜索特定行项和其它如同数据库的任务这样的功能。其它变换宏可以执行如词翻译、数据格式翻译和报表编写这样的功能。RMML宏是可高度重用的,因为它们采用跨平台、基于文本、可搜索、遵循XML的格式。由于宏是可移植的,因此它们具有更大的市场力。RMML还为很多类型的文档化构建它的语言标签,从而宏可以为原始宏编写者和其它用户重用和理解。传统电子表格程序典型地基于物理位置进行引用,RMML根据数字在图表或公式中的位置或根据标签名称引用数字,避免了这一问题,从而允许数字自身可以在文档中的任意位置。RMML还使用数字的量度和含义,因为RDML标签含有标准词汇表来标识数字的测度、数量级、标度、单位、精确度、类等,并且RMML解释器为用户处理这些差异。另外,RMML还将错误处理建入其解释器,并且使自动测试工具生效,以帮助提高代码质量。用户还可以使用复选框、滑动条、输入框和选择列表从图形上为宏改变参数,并且RMML使宏作者加入这些可视组件变得容易。下面是RDML(在其上运行RMML宏的平台)的详细描述,随后是RMML的详细描述。II.系统硬件组件图2示出适合用于本发明方法和系统的数据处理系统200。数据处理系统200包括计算机201和通过网络214,如因特网相连的服务器计算机203,其中,通过网络214服务器计算机203可以向计算机201提供RDML文档102。计算机201包括中央处理器(CentralProcessingUnit,CPU)202、主存储器204、辅助存储设备206、显示器210和输入设备212。主存储器204可以包括可以是基于个人计算机程序的RDML数据查看器100,虽然本领域的技术人员理解数据查看器也可以驻留在其它地方。除包括用于显示的视图108的数据查看器100之外,主存储器204还包括可以用来将RDML文档102、宏文档104和样式单106输入到数据查看器的相关软件组件。它可以包括用户用来将标签应用到数值数据的RDML文档格式器216,和/或向数据观看器100提供RDML文档102的RDML文档服务器218。主存储器204还可以包括用来编辑RDML文档102文件的RDML文档编辑器220和用于创建样式单106的样式单编辑器222。搜索RDML文档以响应查询的RDML/XML搜索引擎224也可以随同任何附加的插入应用225一起驻留在存储器204中。下面将对这些组件的每一个和它们的交互进行更为详细的描述。存储器204可以包括数据查看器100的各种软件组件,和可以用面向对象语言如JavaTM编程语言进行编程的相关组件。在“JavaTM编程语言”第二版,KenArnold,JamesGosling,Addison-Wesley,1998中对JavaTM编程语言有详细的描述,在此加入作为参考。对于Java语言的进一步描述,请参看“Java语言规格说明”,JamesGosling,BillJoy,GuySteele,Addison-Wesley,1996,在此也加入作为参考。然而本领域的技术人员理解也可以使用其它语言。RDML数据查看器100可以从很多不同源如本地存储硬盘或通过网络214从服务器下载RDML数据文档102。辅助存储设备206可以包括存储有关RDML文档102的文档化标签数据的RDML映像数据库226和用于开发宏的RMML宏软件开发包228。辅助存储器还可以存储现有数据库230,用于保存从中创建RDML文档102的原始数据。这些组件还可以存储在主存储器或另一远端计算机中,下面也将对它们进行更加详细的描述。图2还示出通过网络214与计算机201交互的计算机203上的web服务器232。在本发明的一个系统中,web服务器232通过网络214发送RDML文档102,并且可以连接到保存RDML数据文档102的盘阵列234。该盘阵列234可以从数据库服务器236接收数据文档102,其中数据库服务器236可以从数据库存储器238接收数据。服务器232和计算机201之间的信息传输中使用的协议包括,但不限于HTTP和FTP。本领域的技术人员理解,本发明的方法和系统方面可以在或从除存储器如次级设备如硬盘、软盘和CDROM或网络(如因特网)载波之外的其它计算机可读介质,进行存储或读取。另外,本领域的技术人员还理解数据处理系统可以包含其它或不同组件。III.系统概述图3示出本发明的RDML系统和不同组件之间的关系。这些不同组件可以驻留在计算机如计算机201的存储器204中。现有数据库230存储可以用来创建RDML文档102的数据,并且通常数据被提取为“平文件”格式(例如,逗号分隔或固定宽度的域)或可由Java数据库连接性(JavaDatabaseConnectivity,“JDBC”)读取的形式。RDML文档102还可以被构造为模型平文件,从而单个RDML文档102封装一组行和列。数据库的例子包括Microsoft的SQLServer和Oracle8服务器。RDML文档格式器216是一个图形工具,用户使用它来减少组合数据及其文档化所需的手工劳动量。现有数据库230的内容可能不够创建RDML文档102,因为在本发明的一个系统中,RDML使用内容的文档化。这种文档化经常可以在打印卷册中找到,因此必须手工输入,并且手工与数据进行组合。RDML格式器216允许用户(或数据发布者)将关系数据库、平文件、电子表格文件或文本文档的数据域映射到RDML数据文档102。它还允许数据发布者将文档化加到数据文件(RDML数据文档102)自身。RDML映像数据库226是由RDML格式器216维护的相对小的数据库,保存如果底层数据发生变化重新创建RDML文档102所需的信息。它消除了用户再次手工输入文档化的需要,因为RDML映像数据库226对它进行存储。当正在动态创建RDML文档102时,RDML文档服务器218进行工作。服务器218向现有数据库230查询所需的行项,向映像数据库226查询文档化项和用于构造RDML文档102的指令,并且最终创建一个合法、形式良好的RDML文档。RDML文档编辑器220允许用户编辑典型为ASCII文本文件(可以包含UNICODE数据)的RDML文档102。同样地,它们可以由任何面向文本的编辑器和字处理器进行编辑。然而,这种对RDML(或任何XML)文件进行标记的方法既耗时,又容易出错。专用RDML文档编辑器220允许用户快速地作出修改、检查错误和查看数据和元数据信息。文档编辑器220可以通过因特网操作具有修改文件权限的用户可以通过从RDML数据查看器100发命令,对底层RDML数据文档102作更新或修改。RDML文档102可以是用来向RDML数据查看器100传输数据和元数据的ASCII/UNICODE文本文件。它可以在本地进行存储或通过网络214如公司LAN或因特网(使用HTTP、FTP、电子邮件等)进行传输。要成为合法的RDML文档102,文件必须遵循下面将要详细描述的RDML文档类型定义(DocumentTypeDefinition,“DTD”)。DTD描述必需和可选数据元素、它们的次序、语法和用在特定数据元素中的受控词汇表。在“XML可扩展标记语言”,ElliotteRustyHarold,IDGBooksWorldwide,1998中对DTDs有一般的描述。RDML数据查看器100用作RDML和HTML浏览器的组合体、面向对象的电子表格、报告编写器和应用平台。浏览器功能读取HTML或RDML文档102;HTML文档立即在浏览器窗口中显示,而RDML文档首先缓存在内部数据对象(遵循DOM-“文档对象模型”-下面讨论的标准),然后显示在由用户选择的视图108中。缺省视图典型地是图表和树列表,虽然几个其它缺省视图也可用。RDML数据查看器100使用缓存的RDML数据对象创建视图108,采用各种变换和操作对象以使数据匹配视图期望的形式,或匹配正在与其组合的其它数据对象的形式。RDML宏软件开发包(SoftwareDevelopmentKit,“SDK”)228允许函数设计者创建通用函数,可以应用到任何包含函数所需数据类型的数据文档。SDK是宏编写工具的集合,包括IDE(IntegratedDevelopmentEnvironment,集成开发环境)、编辑器、对象浏览器和合法性测试器。RDML通常将数据的形式从操作数据的通用计算例程中分开。通过格式与功能的分离,数据和功能可以进行重用。在传统的电子表格中,例如,数字可以置于由创建者选择的任意单元格中。如果第二开发者决定创建一个分析例程,那个开发者必须知道每个数字处于哪行哪列。那个例程将不对另一电子表格工作,除非符合准确的相同行列位置。应用函数通常产生一种软件重用形式用户不需要告诉函数它们的数据在什么地方(传统电子表格中的“向导”方法)。第二种重用形式通过继承获得函数开发者可以选择与他们要做的工作匹配最近的现有函数,并且简单地作必要编辑,以创建所需的新函数。SDK228允许第三种重用类型,能够连到web上的远端数据文档和远端宏,利用这些额外资源并提供数据和函数的实时更新。如同RDML数据包含在文本文档中,RMML宏文档104是包含例程的文本文档。该文档包含计算的中心数据的操作规格说明如公式、要执行其它宏的有序列表、或指令列表。RDSL样式单担当用于输出报表的模板。RDML数据查看器100中的RDML数据对象(下面讨论)可以置于使用一个或多个不同样式单的报告中。RDSL,完全遵循XSL的实现,允许数据发布者提供多个对其数据的报告格式。它们是可重用的,因为如果满足特定限制,为一个RDML数据文档102编写的样式单可以为另一个所使用。例如,用于时间序列数据集的样式单可以用于另一时间序列数据集。样式单编辑器222基本上是报告编写器,因为用户可以在图形上从样例文档组合报告,指定该报表可以应用的RDML数据文档102的类型,当结果可接受时自动创建样式单106,然后使用结果样式单从任何合格RDML数据文档102创建报表。类似于HTML搜索引擎搜索HTML文档,RDML搜索引擎224搜索RDML文档102。HTML搜索引擎检索关键词,但是只能告诉用户特定文档包含所请求的词。然而,它们不能提供查询服务。例如,用户可能希望在因特网上搜索“收入增长率大于10%的计算机服务公司的所有财务报表”,而RDML搜索引擎224提供这种功能。然而,RDML搜索引擎214不仅象HTML方法一样对关键词作索引,而且还对元素名称和关键属性作索引。这允许搜索数值,或形成有关内容和/或数据上下文的复杂查询。因此RDML搜索引擎224担当RDML数据文档102、RMML宏104和RDSL样式单106的通用查询处理器。提交日期为2000年2月17日的共同待审美国临时专利申请序列号60/183,152中对搜索引擎224的一些方面有更为详细的描述。如前所述,RDML数据查看器100中的每个视图108本质上是作为各种RDML插入应用225的图3所示的独立应用。例如,图表视图是已经插入到RDML数据查看器的的基本构造(包括因特网浏览器、XML分析器/处理器、RDML变换和操作对象、内部对象管理构架、与其它应用的接口和图象用户界面)的独立图表应用(下面描述)。例如,地图组件可以插入到带图表的面板中。随后,当用户单击行项时,不同国家或州的颜色将改变以显示专题地图,或者将出现不同的点等。RDML数据查看器100可以用模块方式进行设计,以允许修改或加入组件应用来扩充普通组件。IV.系统细节进一步参照图3,下面将对几个组件(RMML和RDSL组件除外)进行更详细的描述。现有数据库230可以是关系数据库、面向对象数据库或任何其它类型的数据库。RDML文档102中的RDML标签将文档化加到在关系数据库中找到的纯数据类型。由于已经存在于关系数据库中的数据可以用来创建RDML文档102,因此可以使数据用于RDML格式器216或RDML服务器218,并且采用平文件格式(行和列)。对于连接,RDML格式器216和RDML服务器218读取开放数据库连接性(OpenDatabaseConnectivity,“ODBC”)和JDBC数据库源。平文件方面基于这样的思想RDML文档102有效地模型化基本行列矩阵。因此,为了产生RDML文档102,原始数据源可以提供单个表,或用查询创建一个表。通过服务器到关系数据库,或间接通过超链接到其它RDML文档或通过超链接到RDML文档服务器218,与RDML文档102的关系链接是可能的。这类似于很多数据库应用从各种底层表收集数据,以创建向用户显示的单个表或屏幕。用作RDML文档102源的数据表可以定向为,使域具有三种基本示例性RDML数据表类型时间序列、分类(category)或X-Y图中的一种。参照RDML格式器216,一旦现有数据库230中存在数据点的平文件数据表,RDML文档102就能通过加入包含有关数据表的文档化的标签进行创建。包含在这些标签中的信息在与原始数据点分开的单独数据表中进行维护。RDML格式器216是帮助用户选择合适文档化标签、在单独数据库(RDML映像数据库226)中保存标签,并且创建实际RDML文档102的应用。图4是示出RDML格式器216如何帮助用户对数据加标签(即加入应用到行项的元数据)的屏幕图。在本发明的一个实现中,对于每个数据行项,至少存在18种不同内在属性(下面将作详细描述),这些属性使用单选按钮402进行应用。当用户选择一个单选按钮402,格式器216提供所选属性的描述404。一旦从最左框选择一个单选按钮402,可能值的列表就在中间选项框406中提供给用户。用户可以双击一个选项,以将它作为所选行项的属性进行加入,或者在中间选项框406上端的文本框中输入新值。格式器216自动更新行项表408,在本例中,该行项表显示行项的ID、标题、格式和Y轴标题(下面讨论的属性)。图5示出由RDML格式器216上的页签502访问的数据库页签和文档管理屏幕的屏幕图。该屏幕管理可从关系数据库230创建的RDML文档102。用户可以指定关系数据库中的数据表的列表504,并且让RDML格式器216使用缺省属性为每一个创建RDML文档102。从这一点来看,RDML格式器216用来修改缺省属性。用户可以使用RDML格式器216为文档102从零开始选择标签(如图4所示),但是这将对用户产生不必要的负担以记住哪个属性是适当的。格式器216引用由文档化URL506指定的数据库230(如图3所示)。数据库230保存数据表的列表,并且格式器216将保存有关数据表的信息的表504插入到数据库230中,以在以后进行引用。该表504通过文档化表名508进行引用。类似地,格式器216在通过li_dataURL510进行引用的数据库中为数据库230存储行项属性408的列表。RDML映像数据库226包含与现有数据库230中单独的数据记录集相关的文档化。RDML格式器216创建并维护RDML映像数据库226。RDML映像数据库226标准化文档化数据文档的过程,并且为元数据提供受控词汇表。RDML映像数据库226还执行文档管理和跟踪,更新和版本控制,错误检查,输入合法性验证和创建状态报表。映像数据库226包含它能产生的RDML文档102的列表。原始数据可以在平文件、关系表或对关系数据库进行查询而产生的表中。映像数据库226包含引用原始数据库230中的原始文档表或平文件的文档元数据。包含在映像数据库226中的文档化信息加入到该数据。它进一步包括用于行项集的行项集元数据,典型地在技术上更自然并作为整体应用到行项集的文档化。这种信息的例子是作为整体应用到行项集的表类型、域定义(“x值”)和超链接。(行项集一般可以类似于表;它是类似于数据库领域中记录的行项的集合。)映像数据库226还包括引用原始数据库230中的原始文档表或平文件的单个记录的行项元数据。可以存在从每个行项的元数据记录到原始数据表中对应记录的指针。每个行项包括原始记录的域,和,在本发明的一个实施例中,至少18种包含“属性”文档化的附加域对象类型、单位指定符、超链接、脚注等。下面对行项的示例性属性列表进行描述。图6示出当访问RDML文档服务器218时由数据查看器100使用的步骤。RDML服务器218占据数据库服务器230与用户数据查看器100或web浏览器之间的中间位置。虽然RDML的一个架构是让RDML文档102从基于硬盘的文本文件进行服务,但是用户有时希望动态创建RDML文档,以响应查询。执行查询并且以RDML文档形式发送结果的任务由RDML服务器218进行执行。为了如此操作,用户通过数据查看器100将数据请求提交给服务器218(步骤602)。RDML服务器218是由响应用户请求的web服务器(没有显示)调用的服务器应用。RDML服务器218使用已知技术查询数据库230(步骤604),并且数据库将结果返回到RDML服务器(步骤606)。然后服务器218创建RDML文档102(步骤608)并且将RDML文档返回到将结果传输到查看器100的web服务器(步骤610)。RDML文档编辑器220允许用户编辑RDML、RMML或RDSL文档(102,104和106)的实际元素和属性。文档可以显示在用于选择和直接编辑的树视图中。基于文本的窗口可以显示所选文档的内容以作编辑。除基本编辑之外,它还执行大量工具功能(1)搜索和替换,(2)合法性验证,(3)形式良好的测试,(4)超链接合法性验证(5)元素的剪切-并-粘贴,和(6)用缺省替换元素。IV.A.内部数据查看器架构图7A示出RDML数据查看器100的内部架构和程序流程的示意图,并且图7B示出图7A中每个符合类型的含义。对于每个标号组件,进一步给出对该组件的输入和输出、内部判决过程、存储格式、对象构架和程序流程的详细信息。然而,在完全描述图7A之前,理解所涉及步骤的概要是重要的,该概要如图8所示,并且结合图7A进行讨论。图8是描述用于下载、处理和显示本发明的RDML文档102的方法中的步骤的流程图。图8描述所涉及步骤的概要,并且随后结合图7A对每个相关组件进行更详细的描述。首先,RDML读取器704查找并接收采用根据RDMLDTD702的结构格式化的文本格式的RDML文档102(步骤802)。RDML读取器704可以是在单独线程中运行的类,并且具有用于检查RDML文档102类型(时间序列、分类、XY)和处理错误的方法。RDML读取器704然后调用解析文本的XML解析器706(步骤804)。RDML处理器708从XML解析器706接收所解析文本,对它进行错误检查,并且根据所接收文本中的数据和结构创建对象(步骤806)。RDML处理器708将结果对象传输到X-值变换器710,该变换器执行类型检查并操作数据域(x-值),从而它可以连贯并同时地与其它相同类型的活动对象一起进行显示和存储(步骤808)。X-值变换器710确定在X轴上画的数据值采用共同的单位。例如,如果文档A为年度时间序列,并且文档B为季度时间序列,那么X-值变换器710在这种情况下将使用文档B中行项的“li_aggregation”属性,将四个季度一次合计到年度数据。作为第二个示例,如果文档A是x-值为证券报价机符号(F、IBM、XON等)的分类文档,并且文档B包含以公司名称(Ford、IntemationalBusinessMachines、Exxon等)命名的x-值,那么X-值变换器710将使用每个文档行项中的“li_class”属性,对它们进行匹配。X-值变换器710将对象发送到主数据存储712(PrimarvDataStore,“PDS”),以与其它相同类型的活动对象一起存储(步骤810)。视图(716、720、724和725)然后使用来自PDS712中活动对象的数据,显示并表现信息(步骤812)。现在结合图7A对所涉及步骤和组件的详细信息进行讨论。首先描述用RDML文档类型定义进行定义的RDML文档102。随后描述数据查看器102的各种软件组件。RDML文档102的数据和元数据可以在表示每个数据元素的开始和结束点的标签内部进行格式化。元素标签还可以包括应用到数据元素的属性、对可以出现在元素内的子元素的描述和用于不同属性值的词汇表选择。一个RDML数据文档102的完全样例如附录B所示。下面示出的是为文档中的一个行项提供数据的RDML文档102的片断。注意在尖括号(“<”和“>”)内指定元素标签,并且列出能应用到数据的属性。<line_itemli_ID="1"li_legend="DepartmentofEnergy"li_title="Outlays-Dept.ofEnergy"li_cat=""y_axis_title="$inThousands"level="1"format="#,##0;(#,##0)"relation="Parent"li_notes=""li_desc=""li_prec="-3"li_unit="$"li_mag="3"li_mod="in"li_measure=""li_scale=""li_adjustment=""li_aggregation=""><data_y>2754567,2699717,2726457,2578954,2343297,2252927,2474440,2392904,2392536,2200326,2298612,2303643,2233062,3229510,3840973,5049308,6412986,7441295,7261157,11756883,11657178,10590471,10991261,10587245,11026443,10692802,11166039,11386923,12083898,12478820,15522633,16941547,17839298,17617000,16203000,14467000,14366000,15240000,15190000,14938000,14412000,14556000</data_y></line_item>在这个示例中,带有“=”的18行是<line_item>元素的“属性”,并且本质上,属性为子元素<y-value>中指定的数据值提供机器可读的文档化。这个特定行项描述“以千美元为单位的能源部费用”,但是下面结合描述RDML文档102的结构和元素的RDML文档类型定义702对属性集的细节进行描述。可以用普通文本编辑器、RDML数据格式器216或RDML数据服务器226创建RDML文档102。(不是RDML数据查看器100的XML浏览器最多只能将文本输入回应到用户屏幕,因为它们不能解释RDML标签。)IVA.1文档类型定义图9从图上示出RDML文档类型定义702的元素。在本发明的一个实现中,RDML文档102遵循由DTD702提供的规则(还如图7所示)。根据本发明的一个实现,RDMLDTD702在附录A中示出。DTD702的属性和元素还可以在图B的完全样例RDML文档102中看到。对于检查DTD702的特定属性和元素,这两个附录A和B是有用的。DTD702数据结构经过优化按照所需次序提供所需信息,以减少新用户所需的对RDML格式化的学习并避免不必要的重复。附录A中DTD702的第一行以“<?xmlencoding="UTF-8">”开始,因为所有XML文档均以告诉客户应用(在本例中,数据查看器100)它是什么文档类型和XML版本的一行开始。进一步参照图9,用来定义RDML数据文档102的DTD702用元素的分层树结构进行组织。每个元素可以包括一个属性列表(在附录A中示出,但没有在图9中示出)和/或与一个或多个子元素的关联。DTD702指定,对于任何DTD实施例,哪个属性是必需的并且哪个属性是可选的。根据设计约束,必需和可选元素可以不同。在最高层,DTD702的根元素<rdmldoc>902下层有两个元素。第一元素,<rdmldoc_header>904包含作为整体的文档元数据,并且第二元素<line_item_set>906包含行项集。在本发明的一个实现中,<rdmldoc_header>元素904包含几个自身属性和可选子元素<data_source>908、<formatting_source>910、<rdml_source>912、<license_terms>914和<link_set>916,每个子元素描述数据源的一个方面。在这个实施例中,<rdmldoc_header>904元素可以包括十个整体描述文档信息的属性。这些属性是“rdml_doc_ID”、“doc_title”、“timestamp”、“version”、“expiration”、“freq_of_update”、“num_lineitems”、“num_datapoints”、“x_indexs”和“first_li_with_data”。rdml_doc_ID属性是RDML文档102的唯一标识并且典型地为一个文件名或URL。doc_title是将出现在由用户使用的文档报表和视图顶端的无格式文档语言描述。timestamp典型地由创建文档的应用生成并且可以表示创建文档的时间或者为创建文档访问数据的时间。version描述RDML文档102的版本,并且可以由创建者进行命名。expiration描述文档102中的数据可能失效的日期和时间,典型地是下一更新的期望发布时间。freq_of_update描述文档更新的频率,并且可以由想要安排数据更新的应用进行使用。下两个属性num_lineitems和num_datapoints是分别描述行项总数目和数据值数目的整数。这些属性是可选的,并且可以由一接收应用作为校验和进行使用,以保证数据没有被偶然改变或破坏。下一域x_indexs表示用作树视图720(下面将详细描述)中的代表性数据域的三个数据域。x_indexs是逗号分隔的三个整数的字符串,其中每个整数均为对所选域的索引。为了效率起见,索引可以表示域列表的末端,从而,例如,“-3,-2,-1”示出树视图720的最后三个域。基于末端的索引是有用的,这是因为大多数读取时间序列的人想要知道最近数据。接着,类似行first_li_with_data属性是指出当文档102载入到数据查看器100时哪个行项要显示在图表上的整数索引。<data_source>908、<formatting_source>910、<rdml_source>912、<license_terms>914元素(<rdmldoc_header>元素904的子元素)可以可选地包含一个或多个包含联系信息的<contact_info>918子元素。该元素可以由目标应用进行使用来创建电子邮件、更新联系列表或填充信息源数据库。对于所有联系信息子元素918,都使用相同的元素结构,从而创建文档102的应用只需创建一个结构。在一个实现中,该联系信息用七个属性表示“role”、“name”、“company”、“address”、“city”、“state”、“zip”、“country”、“email”、“form”和“comments”。role是文档创建时参与方扮演的角色,即对于<data_source>908为“数据源”,对于<formatting_source>元素910为“格式化源”等。“form”确定超链接是“简单”链接还是“扩展”链接。在Xlink规格说明(设计实现XML文档和资源之间链接的语言)下,超链接可以是简单或扩展的。“XMLIE5编程人员参考手册”,AlexHomer,WroxPress,1999对Xlink有描述,在此加入作为参考。简单的链接是传统的“跳转”超链接,单击该链接将关闭当前页面并打开目标页面。扩展链接特定于应用,并且能够辨认不同类型的资源,如多媒体文件和其它非文档资源。<data_source>908中的联系信息描述谁或哪个收集数据来创建原始数据库,而<formatting_source>910中的同一属性描述谁或哪个将RDML标签加入到原始数据,以创建RDML文档102。<rdml_source>912中的相同信息描述创建该特定文档并使其可用于外部世界的人或公司。除<license_terms>914中的<contact_info>918子元素描述有关授权信息的联系信息之外,<license_terms>元素具有其自身的与授权相关的属性集。这些属性包括“copyright_cite”、“holder”、“license_type”、“warranty”、“disclaimer”、“terms”、“date”、“email”、“state”、“country”。copyright_cite是可以出现在有关RDML文档102中特定数据集的所有权的报表上的字符串。典型的例子可能是“Copyright2000,e-NumerateSolutions,Inc.AllRightsReserved”。holder属性列出版权所有者的完全法定名称。license_type列出授权类型,如“无-私有并保密”、“公用域”、“每次使用支付”等,并且terms列出支付条目,如果有的话,如“每次下载一美元”。这些属性中的信息可以由与RDML处理器708相关联的例程进行使用,以自动跟踪和实现授权和支付。<license_terms>914的另一子元素是<linkset>元素916,在一个实现中,该元素具有两个属性和其自己的子元素<link>922。<linkset>916是超链接的集合。这些超链接可以是HTML文件或RDML文件。单个<link>元素922拥有实际的链接和属性。<linkset>元素的两个属性是form,如上所述,和href,URL或web地址标准字符串,并且它们指定可以找到超链接页面的HTML或RDML页。当创建者不想列出文档102自身中所有超链接时,这是有用的。<link>元素922描述到其它文档的超链接,并且,在一个实施例中,包含九个属性“form”、“href”、“behavior”、“content-role”、“content-title”、“role”、“title”、“show”和“actuate”。在XMLIE5编程人员参考手册,95-97页中对这些与链接相关的属性有描述。title是作为超链接标题出现在应用中的字符串。例如,在HTML浏览器中,它将作为高亮、带下划线的文本出现。actuate指定什么时候需要激活(traverse)该链接-什么时候提取或访问链接所指向的资源,并且示出将如何显示目标资源的细节。behavior指定显示内容或激活链接时控制链接行为的指令,并且role描述目标资源在链接中扮演什么角色。content-role和content-title交替用于标题和角色,但是它们没有在Xlink标准中指定。最后,<rdmldoc_header>元素904可以包括其自己的具有<link>元素922的<linkset>916。RDML允许用户将超链接附属到不同元素,如整个文档、特定行项或RDML文档102中的其它元素。可以将超链接置于多个位置的原因是这样用户可以在一个地方查看仅应用于当前考虑元素的所有链接。例如,RDML文档102可以包含公司财务报表的数据。文档的创建者可以决定将特定链接应用于整个公司(到产品线、竞争者等的链接)而将其它链接仅应用于单个行项(如指向那个行项脚注的,附属到“设备租赁”行项的链接,或者可应用于那个帐目的记帐规则)。即使它们附属到不同元素,链接也可以具有同一形式。多个linkset元素的另一原因是帮助将链接与它们的逻辑所有者保持在一起。继续参照图9,在<rdmldoc>902的行项上,<line_item_set>906不仅包含有关RDML文档102中行项集合的信息,还包括几个属性和几个元素。这些属性包括“line_item_set_type”、“time_period”、“character_set”、“missing_values”、“null_values”、“zero_values”、“dates_values”和“percentages”。在一个实现中,第一属性line_item_set_type是将行项集归类为三种类型中的一种时间序列、分类(或交叉表)和x-y图。通常,该上下文中的“类型”是指x-轴值的特征,和它们是否表示时间序列、分类、x-y图或其它。下面将结合操作具有相同集类型的行项的x-值变换器710对这些行项集类型进行详细描述。通常,不可以一起活动操作不同行项集类型的行项集。如果行项是时间序列,time_period属性中的合法长度可以为年、季、月、日等。character_set指定表示哪个标准字符集,从而允许支持外国语言。missing_values保存一个用于表示缺少值的数值的指定符,因为数据的很多视图,特别是图表视图需要知道哪个数字代表空白。否则空白可能被解释为“0”。Null_values指示作为空处理的字符,从而不把它与“不适用”或“缺少”或“0”混淆。最后,zero_values指定需要作为“0”而不是“空”、“缺少”、“不适用”等解释的字符。在一个实现中,<line_item_set>906具有几个子元素,包括<data_x>924、<li_class_set>926、<linkset>916和一个或多个<line_item>元素928。在行项集的层面上,将一些行项作为一个集元数据在所有行项之间共享,从而不需要重复数据。特别,<data_x>924包含对行项集中所有行项通用的域信息。<data_x>元素924包括RDML文档102的行项集中行项的x-值和有关x-值的信息。例如,如果行项集是时间序列,x-values可以代表与数据关联的,列在图表底部的年、月或其它时间单位(例如,1990、1991等)。由于该信息对于行项集中的每个行项均相同,因此它在RDML文档102中仅包括一次。在一个实施例中,除实际x-值之外,<data_x>924还包含如下属性“x_title”、“format”、“x_notes”、“x_desc”、“x_prec”、“x_unit”、“x_mag”、“x_mod”、“x_measure”、“x_scale”、“x_adjustment”和“x_links”。在<data_x>924中,x_title是当数据显示在图表上时显示在x-轴上的标题。format是为x-轴值的缺省表示提供模板的字符串。这些字符串常见于电子表格程序(例子还可以参见图4)#-数字,不显示零0-数字,显示零.-小数点,-分隔符a-z、其它字符-原样显示。也可以使用其它格式代码(例如,在脚本语言中使用的代码)。x_notes可以包含有关行项集x-值的各种脚注,而x_desc可以描述有关x-轴值的附加描述。x_prec属性描述显示轴标的精确度或有效位数。在这个属性中,负数表示大于零的量的四舍五入。例如,精确度为2将把数字显示为“8,254.43”,精确度为“-2”的同样数字将显示为“8300”。数字的底层表示将为全值;仅仅屏幕上的格式化和表示将发生变化。数据查看器100使用该属性,主要用于格式化轴标,但是该属性也可用于缺省格式化和其它用途,如报表、脚注等。随后属性x_unit、x_mag、x_mod、x_measure、x_scale、x_adjustment表示x-值的含义,并且由RDML数据查看器100使用,用于操作、协调和显示其它RDML文档102。在RDML中,数字由描述数字单位的这些属性进行统一描述。它们如下所示单位(Unit)分子的物理单位数量级(Magnitude)分子的大小修饰符(Modifier)分子与分母的关系标度(Scale)分母的大小测度(Measure)分母的物理单位调整(Adjustment)特殊限定符(即,所调整的通胀率)例如,一个用“$(以千为单位)/百万人”公布的行项可以表示为[1$US]*(1000)--------------------[1人]*(1,000,000)因此,行项的属性为单位$US数量级1000修饰符/测度1人标度1,000,000对行项这些属性的访问大大增强了数据查看器100的能力。它帮助对数字进行解释和变换。它允许将多个行置于单个图表中而不发生冲突,并且允许应用宏而不需要人的干预来回答有关单位的问题。它还允许报表模板作自动调整,以提供最可读报表。特别,当用户已作出变换并且“y_axis_label”属性不再适用时,数据查看器100使用这些属性构造y-轴标和描述符。为提高效率,可以使用单位和量度的标准词汇表,并且数量级和标度可以更加简单地表示为10的乘方,例如3表示千、6表示百万等。这允许更快速的变换,并且消除潜在不同用法和拼写的混乱(例如,million,mille,MM等)。作为使用这些属性的一个例子,假定RDML数据查看器100已绘制如下值/量度426美国美元(以千为单位)/小时,通胀调整(1996=100)用户现在想将它转换为“X”意大利里拉(以十亿为单位)/天,使用标额里拉其中“X”为要进行计算的值,并且该行的其余部分为量度。数据查看器100为用户自动完成该变换,因为它具有如下转换因子数据查看器100乘上转换因子(或执行其它任何适当数学操作)以操作显示。用户不必查每个转换因子,将它们以正确顺序排列,做算术运算,并且作修正如四舍五入调整。用户可以简单地从下拉框中选择新的单位、数量级等,并作出选择。图10示出由RDML数据查看器100使用的步骤,以操作RDML文档102中的数值信息,来产生所需的经过转换的显示。首先,数据查看器100定位RDML文档102(步骤1002)。文档可以在本地进行定位,或使用URL、搜索引擎224或任何其它技术进行在线定位。下一步,数据查看器100选择并访问所需文档102(步骤1004)。数据查看器100然后访问需要进行变换的行项(步骤1006),并且确定所需变换(步骤1008)。所需变换可以从用户进行接收,或可以由数据查看器100自动确定,以,例如,将新文档102的加入容纳到当前文档的显示中。数据查看器100访问要变换文档或行项的单位、数量级、修饰符、标度、测度和调整属性(步骤1010)。使用这些属性,数据查看器100,为每个属性(如果存在的话)确定转换因子(步骤1012)。这些转换因子可以存储在本地,或通过网络214在线提取。然后数据查看器100乘上转换因子,以将数值数据变换成所需的显示(步骤1014),并且显示经过变换的行项或文档(步骤1016)。如果要显示多个行项,数据查看器100可以重复这些步骤,从而所有适当行项可以变换到所需的显示格式(步骤1018)。类似地,如果需要变换多个文档102,可以为每个文档重复这些步骤。采用这种方法,具有不同数值集的文档102可以得到自动操作,以同时显示或快速变换显示格式而无需人的干预。系统通过将不同格式变换为一个所需格式,自动解决不同文档之间不同格式的冲突。在一个实现中,当系统将一个单位转换为另一个单位时,它将原始源单位转换为系统已知的基本单位,然后将该基本单位转换为目标单位。系统将从基本单位到其它单位的转换因子存储在单位列表XML文件中,该文件的一部分显示在附录C中。例如,假定由长度系统使用的基本单位是“米”,数值要从“码”转换为“英里”。查看器100使用所存储的转换因子,将码转换为米,然后使用适当所存储转换因子将米转换为英里。这样,单位列表文件只需要包含从基本单位到各种不同单位的转换因子,并且不需要列出各种单位两者之间每一种可能组合的转换因子。单位列表文件的结构如下所示<unitlist>元素是根,并且它具有一层子节点,每一个均为<unit>元素。这些unit元素每个均具有大量属性和元素,它们描述将那个单位转换为其它单位或单位集所需的单位特征。转换元素包括源单位和目标单位具有相同类型时作转换所需的属性。例如,将“英里”转换为“英寸”只是简单地查找应用到英里数的正确乘数因子的事情,因为这两个单位都是“长度”类型的量度。转换元素包含六个元素(1)“conv_target”描述下面将引起转换的转换因子的量度目标单位;(2)“conv_factor”是要得到目标值由源值乘以的数;(3)“conv_constant”是要加到源值与转换因子的乘积的常数。例如,在将华氏温度转换到摄氏温度的转换公式(F=32+9/5C)中,“cony_constant”就为32;(4)类似地,如果转换涉及对数转换,必要的因子包括在“conv_log”中;(5)“cony_source”是对提出该特定转换因子的标准体的描述;和(6)“cony_href”包含认可标准体的URL。类型元素包含如下文本串中的一个(1)长度(基本单位=米);(2)面积(基本单位=平方米);(3)体积(基本单位=立方米);(4)质量(基本单位=克);(5)时间(基本单位=秒);(6)温度(基本单位=摄氏度);(7)能量(基本单位=焦耳);(8)货币(基本单位=$美元);(9)组合(Compound,没有基本单位);(10)变化(Diverse,没有基本单位);(11)集合(Collection,没有基本单位);和(12)事件(Occurrence,没有基本单位)。组合和变化类型从一个或多个基本单位进行构造。组合类型是其它类型的简单组合。例如,“英里/小时”是长度单位和时间单位的组合。为了将组合类型转换为另一类型,能够作分开单位的必要转换是必要的。变化类型是由描述构成的类型。例如,“ohm”是一个电学单位,描述为“通过在溶化冰的温度、14.4521克质量、恒定的截面积和106.3厘米的长度的水银柱提供给不变化的电流的电阻”。集合类型是人员、地点、事情等的集合。例如,以“百万人”表示的数据序列意味着这种类型的一个单位就是一百万人的集合。集合类型可以使用任何转换元素。作为简单的转换例子,假设在一个抽样中每个家庭为2.4人。那么通过简单地除以2.4转换因子,就能将“人”转换为“家庭”。事件类型是事件的集合。“循环”是能够除以“秒”产生组合“循环/秒”度量单位的事件类型。“subtype”元素用于类型间更精细的区分。“plural”元素用于在转换操作完成时构造新的标题、图例和标注。提供“alias”元素,用于允许以常用但非标准的形式输入数据的转换。例如,表格经常使用“in”而不是“inches”。提供“desc”元素,从而可以向用户给出无格式语言描述。“icon”元素提供一个地方,用于给单位一个用在列表、下拉框等中的图标。回到图9的元素和属性,<x_data>924中存在一个x_links属性,它可以是逗号分隔的,用于链接到其它源的URL字符串。除这个元素之外,<li_class_set>926元素表示行项类元素集,并且,在一个实现中,没有属性,但是具有一个或多个表示行项类<li_class>930的子元素。这些行项类标签指定数字所属的各种分类系统中的分类,如“<USDollars>”或“<TotalRevenues>”。数据查看器100使用这些类标签选择哪个宏可以应用,以调整报表格式,并且在分析处理中作出正确的假定选择。类指定允许合法化和规范不同数据集,从而允许数据查看器100将来自无关源的文档组合为单个统一源。类标签可以由查找类标签列表的宏使用,以查看它是否限定在特定行项上操作。例如,如果财务报表中的行项被标记为类“债务”,宏知道在计算“债-对-权益”比率时它可以使用该行。但是,例如,如果行项被标记为“钢琴”,就不能应用该宏。注意,在这个实现中,类的元素名称输入为逗号分隔的字符串。在一个实现中,<li_class>元素930具有五个属性。它们是“class_name”、“parent_class”、“form”、“href”和“description”。class_name是行项集所属的类名,并且parent_class表示父类的名称。这些属性可以由数据查看器100的更高级特性如宏进行使用。<line_item_set>元素906进一步包含类似于前面所述<linkset>的<linkset>916。如同以前,该<linkset>916进一步具有前面所述的<link>元素922。在本发明的一个实现中,<line_item>928元素可以具有4个子元素和18个属性。这些元素是<data_x>938,如果该行项的x-值不同于line_item_set中的缺省x-值,<data_x>938包含该行项的x-值;<data_y>932,包含行项y-数据值,数据数字或值;<linkset>916,具有如前所述的<link>922;和<note_set>元素934,包含一个或多个具有有关行项的用户可读、无格式语言备注的<note>元素936。行项的属性包括“li_ID”、“li_legend”、“li_title”、“li_cat”、“y_axis_title”、“level”、“format”、“relation”、“li_notes”、“li_desc”、“li_prec”、“li_unit”、“li_mag”、“li_mod”、“li_measure”、“li_scale”、“li_adjustment”和“li_aggregation”。这些属性中有几个具有与前面所述的属性相同的含义,除了它们特定地仅描述它们所附属的行项和y-值。li_ID是<line_item>元素928的唯一标识号,并且可以从0标号到n(其中,其中n是line_item元素的数目)。在本发明的一个实现中,这些号码是唯一且有序的。li_legend属性是描述行项的无格式语言字符串,它不需要是唯一的。通常,它出现在视图的最左栏。li_title是定义行项一般主题的字符串。在数据查看器100中,这可以用作图表的标题和报表的标题。典型地,成组的行项具有相同标题,但是它们不要求相同。li_cat表示行项分类。与li_legend和li_title不同,这两个属性显示在数据查看器100的图表上,li_cat一般不进行显示。它通常是行项可能所属分类的非打印指定符。经常,这可以是表名、或数据库中的主键、或其它一些组织标识符。它可以用于为报表对行项进行分组。y_axis_title属性是出现在y-轴作为y-轴标题的字符串。然而,如果用户将变换应用到描述符中的任意变量,该硬编码的y-轴标题将被使用其它属性由数据查看器100生成的标题替换。level属性和relationship属性指定行项之间的层次关系。关系数据库中的传统关联通过根据“键域”匹配记录来保持。这个方法的一个缺点是对关系的特征,除是否存在之外,什么都不知道,并且其它地方缺少特定文档化,没有办法告诉一个记录是另一个的孩子或父亲,或者性质是包含、派生和继承等。在RDML中,数据的创建者可以指定每个行项的层次和那个层次级关系的性质。数据查看器100使用level属性和relationship属性,创建分层结构树,将表示关系的图标置于每个行项的前面,以概括数字的派生关系并描述它们的上下文,并且协助宏和更新数据表。level属性指定行项在父节点下面多少层,而relationship属性指定关系的性质,如行项是另一行项的孩子,或者包含在另一行项中。它还可以确定行项是父亲的增减性子成分,或是依赖于其它孩子行项的部分和。前面所述的这些属性和元素构成本发明方法和系统的DTD702。如果用户想要根据不同的x-轴变换“合计”或“分解”数据,li_aggregation属性就很有用。该属性向数据查看器100说明当尝试这种变换时如何处理该特定行项。例如,如果行项集表示银行帐目信息,每个行项可能是时间序列,并且表示季度数据,但是用户可能希望基于年度的数据。对于该集的一些行项,只是简单地将四个季度的数据(例如,存款)累加的事情,在这种情况下,属性值为“sum”,但是对于其它行项(例如,结存余额),只需要显示最后一个季度的值,在这种情况下,属性值将为“last”。类似地,如果最小年度余额希望是四个季度的最小余额,将只需要所有四个季度的最低余额。这种行项的li_aggregation属性值将为“minimum”。可能接受值包括“sum”、“average”、“minimum”、“maximum”、“first”、“last”和“none”。IV.A.2.读取器、解析器和处理器回到图7A,RDML读取器704可以是RDML数据查看器100内的一个对象,它管理查找RDML文档102(在本地、在LAN或广域网如因特网)的过程,将它传到XML解析器706,向用户传递错误通知和协调其它组件状态的更新,以反映被拒绝或被破坏的RDML文档102。RDML数据查看器100的用户可以用很多不同的方式启动RDML文档102的下载,这些方式包括单击RDML超链接(这些如同其它任何超链接,除了目标文档可能以“.rdm”结束),在RDML数据查看器的“地址”框内键入“.rdm”URL,或者请求在宏中载入文档。另外,虽然传统HTML浏览器只有HTML文档的缓存,表示为浏览器的“历史”,但是该浏览器可以一次仅显示这些文档中的一个。给定URL地址,RDML读取器704读入遵循文档对象模型(DocumentObjectModel,DOM)的文档(例如,RDML文档102),下面讨论。XML读取器704可以通过第三方Java类集,如由IBM开发和授权的XML4J解析器进行实现,但是也可以使用其它解析器。如果多个文档与活动数据集兼容,RDML读取器704可以在RAM中对它们进行缓存。不仅这些文档立即可用,而且文档的子元素也立即可用,这是因为数据查看器100可以维护文档中重要数据和元数据的索引。另外,可以使用宏在由RDML读取器704读取的文档中查找特定元素。XML解析器706从RDML数据文档102获得文本字符的序列化流,执行基本功能如消除白空格、将输入划分为词和词组,并且搜索开字符和闭字符(主要是“<”和“>”)。在RDML数据查看器100中使用的XML解析器706还可以是第三方Java类集,如由IBM开发和授权的XML4J解析器,但是也可以使用其它解析器。处理器708匹配RDMLDTD702分层结构,接收经过解析的文本,并且创建数据元素的树状结构。分层结构符合DOM模型,意味着可以用标准形式使用数据,并且可以使用标准方法和函数库访问数据、编辑元素、搜索节点以查找特定元素等。XMLDOM标准由万维网联盟进行控制,并且可以在“http//www.w3.org/TR/REC-DOM-Level-1/”找到。RDML处理器708通常对输入解析文本执行三个主要功能错误检查、结构化和增加功能性,以创建内部软件对象。处理器708的错误检查功能简单地将解析器706的输出与由DTD702所定义的期望文本进行比较。如果输入文档不符合,处理器708确定该缺陷是否是(1)不关键,在这种情况下,发送一个警告到日志,并且继续工作;或(2)关键,在这种情况下,停止工作,并且将一个错误消息发送到调用解析器706的例程。结构化功能是指将文本组装到匹配在DTD702中描述的层次的分层数据结构中。目标数据结构可以是向量的向量或其它集合的集合。当创建该数据结构时,它被“包”入一个将接口加到数据的软件对象(“RDMLDoc”对象)中,从而其它软件对象能与它进行通信。大部分所加函数(“方法”)提供对数据特定子集或特定元素或属性的访问。可以由与RDML读取器704相同的类执行RDML处理器708的功能,其中,RDML读取器704与XML解析器706已经设置“回调”关系。这样,当解析器706从RDML文档102得到一个新元素时,它通知RDML读取器704它发现元素并且将它返回到读取器。通过这种方式,RDML读取器704担当处理器和读取器(即使它可以将实际的元素处理交给另一类)。IVA.3X-值变换器和行项集类型对于X-值变换器710,术语“X-值”是指缺省情况下沿着图表视图716的x-轴绘制输入数据记录的域这一事实。(在Y轴上绘制每个域的每个记录值。)例如,缺省地,用在X轴上绘制年时间周期,在图表中绘制时间序列。当输入多个数据文档时,在它们的数据域可以一起显示在公共视图之前,这些数据域必须相互关联。X-值变换器710确定需要作何调整,然后完成它们。通常,RDML数据查看器100识别三种不同类型的行项集(即,(1)“时间序列”、(2)“分类”、和(3)“X-Y图”),它们占多数终端用户表。X-值变换器710,通过识别这些类型,能自动提供正确的显示和变换例程,节省用户修改大范围细节的时间和开支。给出一个这样的例子,当遇到时间序列表时,数据查看器100能识别x-值必须符合可允许日期类型,检查它们、规范它们,并且格式化它们,从而节省用户工作。在本发明的一个实现中,行项集类型是行项集元素906的必要属性。图11示出由X-值变换器710使用的步骤,以将新的文档存储在如下描述的主数据存储712(PrimaryDataStore,PDS)中。通常,X-值变换器710确定新输入的数据文档是否具有与当前存储在PDS712的“活动文档”列表中的数据文档相同的类型。活动文档可用于在树视图720中显示、绘入图表、加入到电子表格724等。首先,X-值变换器710接收新文档102(步骤1102)。然后它确定PDS712中活动文档的类型(步骤1104)。如果新到达的文档具有与活动文档相同的行项集类型(步骤1106),它将加入到PDS712中的文档(步骤1108)。如果它具有与PDS712中当前活动文档不同的类型,通知用户它与当前活动文档不匹配(步骤1110)。用户可以选择拒绝新文档102(步骤1112),在这种情况下,对象不加入到PDS712(步骤1114)。如果用户选择删除当前活动文档(步骤1116),则删除当前活动文档(步骤1118)并且载入新的文档(步骤1120)。否则,新文档102放在PDS712中作为“备用”文档(步骤1122)。备用文档可以用于向脚本和宏提供数据,但是不干涉活动文档视图。可选地,如果x-值变换器710不需要执行任何变换,RDML读取器704可以在PDS712中存储文档。如果新到达的文档具有与活动文档相同的行项集类型,X-值变换器710将新文档的data_x域与现有文档进行匹配。它们可以采用不同的次序、不同的拼写、不同的格式,或其它不立即兼容的形式。X-值变换器710根据行项集的类型作必要的调整。例如,时间序列行项集具有以时间排序的元素。一个明显的不兼容是周期可能不同。经常,例如,一个数据集采用年,而另一个采用月。X-值变换器710使用行项集的属性正确处理每一个。然而,月份数据不能仅仅进行累加来产生年度值,例如,因为数字可能表示非累加性的值。例如,行项可能是“末期银行余额”,但是累加12个月终余额不产生年终余额。行项提供指定它是“期末”值的周期长度属性,并且X-值变换器710仅使用最后一个月,创建年度值。在另一例子中,月份“存款”将一起累加,并且月份“平均利息率”可能是“周期-平均”。每个行项提供如何通过转换将它处理为其它周期的指示;它由li_aggregation属性进行提供。可能要作的另一改变是日期格式。一些数据集可能简单地显示年(“YYYY”),其它可能使用标准日期格式(“YYYY-MMDDHHMMSS.MSS”)或其它一些变型。X-值变换器710将它们转换为一个共用格式。数据查看器100另外提供描述如果发生周期加长/变短,或周期偏移,如何对它进行处理的标签。数字可以标记作“sum(和)”、“median(中值)”、“average(平均数)”、“lastvalue(最后值)”、“firstvalue(最前值)”或特定公式。X-值变换器710和数据查看器100还可以处理“周期偏移”,一个相关规范类型。例如,第一数据源可以基于年终12月31日的历年,而第二数据源基于年终9月30日的财政年。RDML数据查看器100可以结合y_data元素的li_aggregation属性,使用x_data元素924的period_length属性,指定数据的周期长度。li_aggregation属性用来评估规范变换。当x-值已经得以规范时,Y-值,行项中的数据值可能发生变化。例如,如果组合十二个月的“平均利息率”产生“年度平均利润率”,将出现在图例或轴标题的数字更新表示将发生变化。数据查看器100知道结果值可能根据单位、数量级、修饰符、标度、测度和调整属性进行变换。这些属性允许对行项中的数据进行有效和自动的解释、翻译、操作和表示。它们进一步帮助自动改变要由宏自动改变的图表和报表中的文本描述。另外,规范不同文档的不同时间周期,X-值变换器710和数据查看器100可以在需要时提示要求用户的帮助。例如,第一数据源可能用域如“1星期”、“2星期”等表示,而第二数据源可能用“1999年4月4日”、“1999年4月11日”等表示。X-值变换器710识别这一问题(和一组广泛的类似情况),并且显示一个对话框,询问用户“1星期”开始的实际日期。分类行项集类型是经常称作“交叉表(crosstab)”的行项集类型。在这个行项集类型中,x-值是分类。例如,在一个图表中,x-轴可以为8个公司分为8个类别,y-轴显示收入或利润值。有时,通过名称匹配不同源文档的域太依赖于措词、拼写或语言,而不允许有效的匹配。对于分类行项集的挑战是处理用法上的不同。例如,公司收入报表可能以“销售”的概念开始,但是所使用的实际词可能是“收入”、“总收入”、“毛收入”或在不同语言、方言或工业特定术语中使用的任何其它名称。为了处理这些行项集,X-值变换器710通过首先匹配任何实际拼写匹配(忽略缺省情况)排列来自多个数据集的分类。第二,它查看类元素930,以查看是否存在标准词汇表标签;这些标准对于不同的行业或使用,可以不同。例如,当处理公司时,自动收报机(ticker)符号可以用作匹配标签。例如,一个数据集的分类可能为“Ford”,另一个为“FordMotorCompany”,而另一个为“F”。所有这些将通过类元素930中的共同表示,标签<"F">进行匹配。如果这样不能提供匹配,数据查看器100向用户显示一个带两个域列表的对话框。使用“拖放”技术,用户能快速地匹配两组域,没有匹配的域简单地作为新域进行添加。除了根据文本、类集和用户输入创建映射字典外,数据查看器100能使用由用户指定的映射文件或输入文档,自动组合文件。图12A、12B和12C示出本发明的X-Y图1202的屏幕图。在科学统计序列中最常见的X-Y图1202由于它的性质将每个x-值都看作不同。该显示在图上绘制单个数据点。X-值变换器710仅要求只核对准确的匹配。该屏幕图还显示对应于X-Y图1202中数据的树视图720和图例1204。如图12A所示,X-Y图1202显示所选的行项1206,并且图例1204随着行项选择的改变发生改变。图12B和12C示出在树视图720中选择不同行项1206而产生的X-Y图1202。IV.A.4.主数据存储图13示出主数据存储712及其存储的一些对象。主数据存储712是所载入RDML文档102的缓存,它可以用很多方式(例如,作为向量、作为字典或散列表、或作为其它一些对象集合)进行实现。一旦X-值变换器710已确定新到达数据文档102的活动或备用状态,并且对X-值作出任何必要修改,它就将新RDMLDoc对象13Q2传到PDS712,它管理与各种视图或插入应用的通信。该PDS712中央存储允许不同视图(716、720、724和728)访问表示原始源数据的对象1302。单个视图(下面描述)制作它们自己的所需数据部分的副本,并且采用它们所需的变换形式。PDS对象712通常不执行数据变换;它简单地保存它们,增加并删除它们,并且使它们在公共接口可用于其它对象。下面的表1示出PDS对象712的示例性类图。注意,在这个实现中使用向量保存RDML文档102;使用散列表或集合数据结构也是可能的。表1在这个类图中,上面部分列出对象的变量名称,随后是它们的类型。下面部分列出在括号中带参数名称和类型的方法名称,随后是方法的输出类型。正如所示,PDS712提供用于存储活动和备用RDMLDocs1302和RDMLLineItems1304的变量和方法。PDS712对象包括增加、提取和清除文档和行项的方法,和用于确定文档和行项数的方法。RDMLDoc对象1302是RDML文档102的完全内部表示。它包含在文档原始标签中包含的树结构数据元素作为其中心属性,并且实现DOM接口。操作DOM对象的应用也可以操作RDMLDoc对象1302。RDMLDoc对象1302为RDML数据查看器100的不同视图提供高层接口。下面的表2示出本发明示例性RDMLDoc对象1302的类图。表2下面对根据本发明的一个实现的RDMLDoc对象1302的表2所示的类方法进行描述。首先,RDMLDoc()是用于创建内部RDMLDoc对象1302的构造器。方法“createDoc”读入由输入URL指示的文件,对它进行分析,并且创建新TXDocument,然后用户通常将此TXDocument赋给该RDMLDoc对象1302。TXDocument是实现文档对象模型(DOM)接口的对象。TXDocument为文件创建DOM结构,并且用各种访问和管理性方法“包装(wraps)”它。它是遵循DOM的文档原始表示。“setTXDoc”方法设置底层TXDocument,并且初始化对象属性,如行项数,并且“getTXDoc”返回底层TXDocument。鉴于RDML文档102形成具有带值属性的元素树,“getAttributeValue”方法返回命名元素的属性值,并且“getAttVal”以字符串形式返回根据所输入的元素名和属性名找到的属性值。“getLinkAttValue”方法根据所指定的元素名和属性得到超链接元素的属性值,并且“getLinkText”得到相应的超链接文本。当调用时,“getNumLineItems”返回RDMLDoc1302中的行项数,并且类似地“getNumLinksForElement”返回元素的链接数。“getRDMLLineItem”方法根据具体属性值提供第一个RDMLLineItem1304(下面描述)。例如,指定“li-ID”和“3”将返回“li-ID”属性等于“3”的RDML行项。“makeRDMLLineItem”方法接受所指示的节点,将其赋给新RDMLLineItem对象1304,并且初始化该对象。方法“getData_Defaults”返回缺省X-值的向量。而且,“parseCommaDelimString”接受逗号分隔的字符串为输入,并且返回逗号之间的值作为向量元素,并且返回字符串向量。最后,“traverseDOMBranch”将输入节点当作参数,然后从那个节点向下进行遍历,并且在每个节点,可以出现一个操作如查找带特定名称的元素。类似于RDMLDoc对象1302,“RDMLLineItem”1304是一个对象,提供用于提取行项上的数据、任何相关链接或备注和属性的高层方法。RDML数据查看器100的视图操作RDMLDoc1302和RDMLLineItem1304创建它们的表示。下面的表3示出示例性RDMLLineItem对象1304的类图。表3下面对根据本发明的一个实现的RDMLLineItem1304的表3所示的类方法进行描述。尽管与上面所述RDMLDoc对象1302同名的方法具有相同的一般功能,但由于行项已经具体到元素,因此这些方法采用不同的参数,因为它们一般不需要在给定参数中指定元素。RDMLLineItem()是创建RDMLLineItem对象的构造器,并且“initLineItem”将行项初始化为在RDMLDocument找到的值。方法“get_jcvDataX”和“get_jcvData_Y”返回所指示行项号的x-和y-值向量。方法“get_strX_Value”和“get_strY_Value”以字符串形式返回x-值向量中行项号的x-和y-值。调用“getNumDataPoints”方法得到行项中的数据点数目,即x-值数目。方法“set_li”允许调用例程设置特定RDMLLineItem所表示的RDML文档102中的行项。回到图7A,在本发明的一个实现中,图表管理器对象714从PDS712接收可达6个RDMLLineItem1304,并且将它们显示在图形用户界面734所显示的图表上,并且典型地结合树视图720和宏面板732进行使用。当用户在树视图720的行项上单击鼠标时,该行项将添加到图表中。当用户在宏面板732中的宏行上单击鼠标时,加到图表中的所选行项将根据宏的编程进行变换。如果有更需要的不同或更好图形图表组件,图表管理器714可以从图形图表视图716中分离出来,以允许方便地改变图表软件组件。视图数据查看器100向用户显示很多不同的视图(如图7A所示的716、720、724和728),用户可以使用这些视图查看存储在PDS712中的RDML文档102的信息。这些视图包括显示图形图表和数据图的图表视图716,和显示行项分层表示的的树视图720。另外,数据查看器100提供显示类似于电子表格的数据单的电子表格视图724,和显示与RDML文档100关联的脚注文本的脚注视图728。这些视图将在下面进行详细讨论。IV.A.5图表视图一接收到RDML标记文档,图表视图使用描述数据含义的属性,对存储在标记文档中的数据进行变换、格式化、操作和显示。图表视图使用数字属性,例如,帮助在一个图表上同时显示不同类型的不同数字序列,并且自动显示适当的描述文本部分。例如,图表视图自动确定第一序列是“美国美元”并且第二序列是“法国法郎”;它可以自动地将它们放置在单独的轴上,或者自动解释这些单位。它还可以确定这些轴的标题,并且设置轴标。图表使用标记文档的单个元素的属性,自动地构造自身,并且这些操作可以通过单击鼠标来发起。图14A-F示出屏幕上半部的图表视图716和下半部的树视图720。图表视图716有两个主要组件图表本身和图表图例1402。在树视图720中所选择的行项1206自动画在图表716中。图表管理器714一般具有三种主要的职责(1)从树视图720,宏面板732和主菜单(没有显示)收集有关对图表716作改变的消息;(2)从PDS712或宏管理器732获得正确的行项或宏,并且协调数据变换;和(3)管理图表数据对象(“图表数据”对象715),该对象包含采用将在图表中所使用形式的数据,和这些行项的属性。通常,图表管理器714处理对图表本身的更新和操作(例如,轴、轴标等),而图表数据对象715处理图表716上的数据绘制。图表管理器对象714提供图表数据对象715所需信息,以更新其内部数据结构。图表数据715是中央图形图表716绘画自身所使用的数据模型,但是其它组件还使用数据脚注,图表图例和标题,和操作该数据的任何宏。一种可视化图表管理器714(及其数据伙伴,图表数据对象715)角色的方法是查看一个完整样例场景方法的步骤用户在树视图720中已选择行项1206,并且图表管理器714被通知该行项将加入到图表716中。存在各种不同的用于设置图表数据/图表管理器架构的方法。下面详细描述的一种方法是预先创建图表,然后向它输入数据变化(初始化、清除、更新数据序列等)。第二种通用方法是一有变化请求,就使用数据创建新的图表。下面将更详细地描述图14A-F,特别图14A和14B将结合图15A,15B和15C进行描述,图15A-C示出在本发明的一个示例性场景中,一旦在树视图720中选择行项1206,就更新图表视图716的方法步骤。图15A示出主要涉及树视图720和图形界面734的步骤,而图15B和15C分别示出主要涉及图表数据对象715和图表管理器714的步骤。如图15A所示,用户在图形界面734的树视图720中选择一个行项1206(步骤1502)。树视图720获得所选行项1206的ID(步骤1504),并且删除任何所应用的旧宏(步骤1506)。然后图表管理器714从图表视图716删除最后序列(所显示的行项数据),以让位于最新所选行项(步骤1508)。现在参照图15B,图表数据对象715从图表716删除现有数据(步骤1512)。然后它从PDS712获得RDMLDoc对象1302(步骤1514),并且从RDMLDoc对象获得RDMLLineItem对象1304(步骤1516)。此后,图表数据对象715规格化X-值数据(步骤1518)。例如,如果一个图表序列显示从1961到1998的数据,并且最新的序列显示从1973到2005的数据,图表数据对象715确定图表显示从1961到2005的数据。然后,图表数据对象715用数据填充x-轴1404(步骤1520)和用数据填充y-轴1406(步骤1522)。如图14B所示,图表可以一次绘制多个y-轴(即,图表两边不同的y-轴),以同时显示多个行项。因此,图表数据对象715进一步标记序列在哪个轴上(步骤1524),并且如果它位于Y2轴1408(第二轴)上(步骤1526),它添加那个轴(步骤1528)。图表数据对象715为轴标1406和1408设置数字格式(步骤1530),并且设置数字精度(步骤1532)。最后,它更新脚注(步骤1534)并且运行任何所应用的宏(步骤1536)。现在参照图15C,图表管理器714然后使用行项属性,设置Y1标题(步骤1538)和Y2标题(步骤1540)。此后,它更新序列样式(步骤1542)、图表标题1410(步骤1544)、图例1402(步骤1546)和x-轴1404(步骤1548)。完成这些更新之后,图表管理器714更新数字精度(步骤1550),y-轴1406(步骤1552)和图表类型(即,面积,条形,堆积条形,线形,饼形,点形等)(步骤1554)。随后,它更新脚注1412(步骤1556),并且将x值的最大值设置为最后所使用值的范围,消除图表716右边的空白区(步骤1558)。最后,图形界面734用新近创建的更新重新绘制图形图表716(步骤1560)。图表管理器714和图表视图716可以在同一图表上绘制不同序列类型,并且自动处理变换。因为来自不同源文档102的两个(或更多)序列可以放置在图表716上,因此对它们进行同步,以放置在共同图形上。图表管理器714使用data_x元素或者元数据标签来自动变换数据,以允许不同序列类型一起出现在一个图表上。例如,它们识别何时第一序列用“美国美元”并且第二序列用“法国法郎”。它自动作出安排,将它们放置在不同的轴上。这样不需要用户经历图表向导,或者查找、理解并且翻译不同的单位、标题、和调整。在树视图720的每个序列行上单击(可能带被压下的修饰键(例如CTRL键)),指示图表视图716使用单个元素的元数据构造自身。图表管理器714和图表数据对象715考虑如下图表更新单元类型、数量级、标度、修饰符、测度、y轴标题、图表标题、图表脚注、精度、数字格式、图表类型(线形,条形等)、图例和各种组件的颜色。数据视图100还允许使用单击或命令将序列加入图表。将序列加入图表增加显示在图表上的序列数。在传统的电子表格、图表程序和数据图形界面中,这种任务要求用户通过向导重建整个图表,用新序列的信息填充对话框,或者通过自定义编程加入数字。当数据查看器100用单击鼠标将新序列加入图表时,原有的数据保持不变,并且由图表管理器714和图表视图716自动作出图表类型、格式、标度等任何必要的改变,以容纳新的序列。正如可以通过一次鼠标单击(或一个来自菜单的命令)加入一个序列,同样也可以删除它。用户不需要担心偶然删除了某些东西,因为没有实际信息从数据查看器100中丢失。通过简单的鼠标单击,它总能加回到图表716。图表视图716还提供一种可扩展图例1402,如图14A所示。对于大多数电子表格程序的用户,一个重要的问题是用户不能控制图例1402的尺寸、格式和处理。结果,图表通常结束于如“MSFT”和“SUNW”的图例,而不是带多种颜色、字体、换行和其它阅读性改进的更长描述。图表视图716图表提供如下特性的图例(1)能无限制地加大尺寸;(2)支持换行;(3)能包含多种字体;(4)能包含多种字体类型(粗体、斜体、常规)和(5)能包含起突出作用的可变颜色。如果行项的图例信息(典型地存储在li_legend属性中)相对图表上的图例框太长,该信息可以进行换行和滚动,以容纳额外的信息。图表视图716通过自动指定y轴标题1414允许进一步的方便。目前电子表格和图表程序通常通过图表向导或者指定查看标题的位置,要求用户提供y轴标题。RDML将这个负担转移给更适合准确指定y轴值描述的数据创作者(originator)。由数据创作者指定的Y轴标题1414位于行项元素标签的一个属性域(y_axis_title)中,并且当该行项加入图表视图716时,由图表视图716用作缺省y-轴标题1414。然而,经常用户希望改变数字,并且在图表716上显示所变换的序列。在这种情况下,缺省y-轴标题1414可能不再正确。不是要求用户手工计算新值描述是什么(用目前分析程序可能会花几分钟或者更长的过程),图表管理器714和图表视图716数据使用行项1206的修改单位、数量级、修饰符、标度、测度和调整属性中所提供的信息,自动生成基于值变换的新y-轴标题1414。例如,假定第一序列作为“百万美元”加到图表,并且用户应用一个将序列的每个数除以1000的宏。图表管理器714自动创建“十亿美元”的新y-轴标题1414。数字变换可以导致y-轴标题1414的相当复杂的转换。用户可以将第一序列(“百万加仑”)乘以第二序列(“美国$/加仑”);结果将是一个数字序列,第三序列("百万美国$")。如果存在歧义,数据查看器100向用户显示一个对话框,显示所有有关所涉及数量的已知信息,并且要求用户提供标题。类似地,图表管理器714和图表视图716能使用元数据属性自动生成x-轴标题和图表标题1410。除生成y-轴和x-轴标题之外,数据查看器100在已加到图表的序列发生改变或多个序列加入相同图表时自动执行创建新图表标题1410的任务。例如,第一序列具有缺省标题“总销售”,第二序列具有缺省图表标题“总开支”,并且第三序列具有缺省标题“总销售”。数据查看器100将通过组合不同的元素并且消除重复元素,创建所组合图表标题“总销售;总开支”。三个例子说明其它自动标题操作类型。在第一个例子中,假设图表上面具有两个序列序列A具有标题“GDP”和图例“中国”,并且序列B具有标题“GDP”和图例“马来西亚”。如果它们放在该图表中,标题将相互重复。在本发明的一个实现中,将删除重复标题,从而这个图表的标题将简单地为“GDP”。由于序列图例不同,因此图表左边的图例将有两个条目“中国”和“马来西亚”。作为第二个例子,假定图例是重复的序列A具有标题“中国”和图例“GDP”,并且序列B具有标题“马来西亚”和图例“GDP”。由于图例条目均为“GDP”,因此会存在哪个图例应用于图表上的哪个行项的混淆。在这种情况下,数据查看器100调换图例和图表标题条目,从而结果与上面第一个例子相同;图表的标题为“GDP”(重复被删除),并且图例条目为“中国”和“马来西亚”。最后,在第三个例子中,假定序列具有不同的标题和不同的图例。序列A具有标题“GDP”和图例“中国”,并且序列B具有标题“国家储蓄”和图例“马来西亚”。图例不加改变,并且通过用“;”将标题相互分隔,创建新的图表标题。因此显示上的图表标题变为“GDP;国家储蓄”,并且第一图例变为“GDP-中国”并且第二图例变为“国家储蓄-马来西亚”。所有这三个改变均为字符串操作(选择和/或添加)。图表管理器714和图表视图716还能自动删除开始和结束x-值1404,从而解除了用户从图表删除空头尾值的需要。在传统电子表格和图表程序中,当加大或缩减底层数据时,必须重新创建或手工调整图表指针。例如,如果从1990到1998的序列已加到图表,并且它由从1990到1996的数据进行替换,图表的右边将出现两个空白位置。数据查看器100和图表管理器714通过将行项前部和后部的缺少或空值处理为需要自动重构图表的指令,避免这一问题。图表管理器714还自动格式化x-和y-轴标1404和1406。RDML将格式化x-轴1404和y-轴1406数字的负担从用户(可能存在上千或上百万个,每个手工重新格式化数字一次或多次)转交给数据创作者(一个,只需要格式化一次)。格式模板是目前电子表格和编程语言中的常规表达字符串。数据查看器100为图表视图716的轴标、树视图720的数字,并且作为报表中数字的缺省格式,使用格式化字符串。如果宏将数字移到图表716所允许的精度范围之外,或树视图720或报表中有意义的格式之外,将自动改变格式化模板。如前所述,一个RDML行项元素属性为数字的精度,要显示在图表上的有效位数。不同于传统产品,将这个任务完全交给用户进行计算,数据查看器100使用指定精度,设置y-轴1406的标度及其轴标和刻度线的格式和精度。另外,图表管理器714自动创建并删除第二y-轴1408,如图14B所示。其上绘有两个不同序列的图表将需要两个轴。y-值的单位、测度或标度可以不同。例如,用户可能已绘制以“百万$”表示的序列,并且想要将以“%GDP”表示的序列加入同一图表716,并且这两个序列不能共享共同的y-轴。图表管理器714识别这一不兼容性,创建新y-轴1408,并且将所有随后的格式化、宏等引导到合适的轴。目前电子表格和图表程序要求用户用图表向导(需要很多要输入的指示,和得到各种标度、颜色等的大量试验和错误,修正)或通过自定义编程重构图表。如果由行项的单位和标度属性的细节要求,数据查看器100自动进行该过程,创建和格式化一新轴。如果从图表删除序列,将删除相关的轴并且更新剩余序列的各种标度、颜色等以使图表立即可读。表4示出图表管理器714的类图。表4下面对根据本发明一个实现的图表管理器对象的类方法进行描述。ChartManager()是图表管理器对象714的构造器,并且“initChart”将图表初始化为空,并且“getChartData”得到图表数据对象715。“addSeries”方法将一个序列加入到图表,而“deleteLastSeries”删除最后所加入的序列。类似地,“deleteSeriesAfterFirst”删除除第一序列之外的所有序列。如果保留已加到图表的序列,再加入下一序列,序列标志设为“真”。“假”标志告诉图表删除最后当前序列,并且将其替换为新序列。“getAddSeriesFlag”和“setAddSeriesFlag”方法提取和设置该标志。“getYAxisTitle”方法返回y-值标题,并且“checkYAxisTitle”检查当前y-轴标题,查看新近绘制的序列是否在当前轴上,或者是否要创建新轴。“AddY2AXis”在需要时将第二y-轴添加到图表。“markWhichYAxis”告诉ChartData对象新的行项已被绘制在哪个轴上。“resetChart”方法将图表复位为当数据查看器100启动时它所处的状态。而“replotChart”更新图表的物理方面。同样地,“replotSeries”根据变化重新绘制序列。“setChartType”方法告诉图表管理器调用replotChart时显示哪种图表类型,并且“setDataStore”告诉图表管理器它将处理哪个数据存储对象712。如果数据是一个时间序列,“setStartPeriod”为图表起始周期设置内部变量。最后,多个更新方法每个更新图表的相应方面以响应可能的操作或变化,例如,“updatePrecision”更新图表的精度。表5示出图表数据对象715的类图。表5下面是根据本发明的一个实现的图表数据对象的表5所示的类方法。与图表管理器的方法同名的方法将不作描述,因为它们单独对数据执行相同的功能。图表数据对象使用方法“fillXAxis_CT”,“FillXAxis_TS”,“fillYAxis_CT”,和“fillYAxis_TS”填充时间序列和图表数据集的x-和y-轴。“decrementNumSeries”和“incrementNumSeries”方法改变存储图表上的序列数的计数器。“getChtData”方法返回一个chtData向量,它是多个向量的向量外部向量的每个元素是一个行项数据的向量。“getChtHeader”方法返回一个chtHeader向量,它包含每个行项标题信息的向量。该向量是行项属性值的列表,例如,数量级,标题等,并且“getChtHeaderElement”从所指示序列的ChtHeader获得特定元素的值。对数据集进行操作,“getName”返回数据集的名称,并且“getNumRows”返回数据集中的行数。“getRow”方法返回序列的一行,而“getSeriesLabel”返回标注。“getDifferencesInX”方法排列时间周期用于时间序列图表。并且“getNumSeries”返回num_series变量中的序列数。很多get(得到)方法有相应的设置值而不是接收值的set(设置)方法。chtData变量是多个向量的向量(每个子向量为一个序列数据),并且“getDataItem”返回chtData特定行列的数据值。由构造器进行使用,“zeroChtData”给出一个空图表。“getPointLabels”方法返回一个字符串数组,其中每个字符串是chtData的点标注。对于时间序列,“getStartPeriod”提取时间序列的起始周期,并且“normalizeValues”规格化加入图表的序列值。“getDataInterpretation”方法返回“数组(array)”或者“一般(general)”来描述数据源结构采用哪种形式。(对于时间序列和分类数据,返回值为“数组”-它们共享X值,并且对于XY数据,返回值为“一般”-其中X值通常是独立的。)IV.A.6树视图回到图14A,该屏幕图还包含屏幕下半部分的树视图720。树视图720显示数据的分层视图。树视图720用作与传统电子表格和数据库管理系统的“数据单视图”不同的目的。它将数字在它们的上下文中进行可视化显示。用户可以了解依赖性关系,从图标和可视提示确定不同的行项是如何与它们的父亲,同辈,和孩子相关联的。“单位”栏1416突出显示每个行项的单位、标度、数量级等,混合数据集的一个重要显示,其中,单位内容的上下文逐行项地发生改变。不同活动RDML文档102中的每个行项以原始次序进行显示。在树视图720中,每个RDML文档102以一个新顶层节点开始。显示在树视图720中的信息是来自且关于行项的重要数据的概要,而不是在典型电子表格视图中所见的所有数据点的显示。不是显示可能引起混淆的原始数据数字矩阵,这使模式的辨别很困难,树视图720在一个实现中,为每个行项显示如下信息图例1402、单位1416、三个用户可选择代表性数据点1418和一个或多个概要栏1420。在图14A的例子中,有一些重要文档化1416(描述、单位)、一些代表性数据1418(在本例中,三年金额)和概要数据栏1420(在本例中,所有数据点的和)。第一栏1416显示行项的图例。这是无格式语言描述;它在必须由人来识别行项的每个视图中进行重复。树视图720中的代表性数据栏1418向用户给出行项的相对重要性、类型和格式的可视提示。RDML数据查看器100允许用户选择要显示的不同域。例如,一个用户可能想要查看“1940、1970、2000”来感受长期趋势,而另一用户可能仅希望查看“1998、1999、2000”来查看近期趋势。概要栏1420允许用户选择用来更好理解行及其上下文所需的统计或者用于对栏进行从最大到最小或相反的排序所需的统计。任何栏都可以通过简单地单击它们进行排序。概要栏为用户提供比数据库或电子表格公式更加容易的统计,因为RDML数据查看器100提供对统计方法的单击选择,从而消除了编写公式、为缺少值调整、处理分母中的空等的需要。一些概要统计的例子包括(1)和;(2)平均数;(3)中值;(4)最小数;(5)最大数;(6)移动平均数;(7)方差/标准偏差;(8)%差异(所选的周期或分类);(9)%父亲;(10)%指定行项;(11)与父亲的相互关系和(12)自定义公式。对于每个这些统计量度,RDML数据查看器100提供一个对话框,其中,用户可以调整假定。例如,“移动平均数”可以用于一个周期、五个周期、十个周期等。树视图720强调行项是RDML数据查看器100中的主要数据单位,而不同于电子表格中所见的作为单元格的单个数字。由于每个行项1206是一个对象,RDML数据查看器100可以被看作面向对象的电子表格。每个行项的图标1422标识行项的上下文。例如,“+”图标1422表示将那个行项加到它的同辈将产生父亲行项。这个特性解决了电子表格和数据库数据单视图的一个缺点不能同时查看公式和数据。它向用户显示数字是如何相互关联的。传统数据库管理系统、电子表格和数值分析工具都没有内置的表示,说明记录是如何相互关联的。在关系数据库中,位置或行可以与其数据没有相关性。RDML和树视图720通过使行项在集合中的位置作为可由用户使用的信息,改变这一情况,并且图标1422可以可视化地指定行项与其父节点的关系。在本发明的一个实现中,为关系图标使用如下值(1)加;(2)减;(3)乘;(4)除;(5)等于;(6)计算于;(7)成员;(8)集合;(9)孩子;(10)父亲;(11)MEMO;(12)一般;(13)备注;(14)无;和(15)根。子行项可以加到父行项(或者可以用它们兄弟行项的其它关系进行修改)。“加”可以加到兄弟,而“减”减去它们。例如称作“净销售”的行项可以有两个孩子“总收入”和“所售出商品成本”。如果“总收入”的li_relationship属性为“加”,并且“所售出商品成本”的li_relationship属性为“减”,那么树视图720能显示“净销售”等于“总收入”减去“所售出商品成本”。“乘”和“除”分别表示行项的乘和除。“等于”与“加”相同,但是显示依次计算其上行项的结果。“计算于”用于假定,如百分比、利率等,而“成员”表示行项简单地是由父行项表示的行项集合的成员。在这种情况下,即使有,也不作有关算术关系的假定。“集合”表示行项有其直接下一级的孩子成员并且表示集合的概念。“孩子”说明行项简单地是“父”行项的“孩子”。它意味着一种遗传,派生,或继承。即使有,也不作有关算术关系的假定。“MEMO”是一个可能为查看兄弟行项的人感兴趣的行项。但是它不一定与其兄弟相关,而“一般”是一个通用指定符。“备注”通常用于带文本值的行项,并且“无”表示没有隐含关系。“根”表示行项是根行项。树视图720还提供其它功能。它允许用户通过按下“shift”键将多个行项1206绘入图表。虽然数字浏览可以通过鼠标在数据视图100中完成,但是对于用户,使用箭头键把行项绘入图表也是可能的。当焦点处于树视图720上,用箭头键上下浏览自动将所选行项1206绘入图表。如果按下“shift”键,随后的数据序列将加入图表,而不只是替换前面所选的序列。图14C示出,在本发明的一个实现中,当用户右击所选序列时,显示一个弹出式菜单1424,显示可用的不同文档化类型。如图14D所示,选择“描述”显示一个包含特定序列信息的窗口1426,所传递的信息从标签形式到无格式语言(用户友好格式)。图14E示出,在本发明一个实现中,用户可简单地通过选择树视图720的行项中不同的“复选框”1450,将多个行项绘入图表。在该实现中,所选行项的集合传给图表数据对象,然后由图表管理器714将该集合绘入图表。在本发明的一个实施例中,通过一系列鼠标事件帮助选择少于树视图720中所有行的连续行集。首先,在一行上(例如,BristolCenter)执行鼠标按下事件。然后拖动鼠标(高亮显示过程中的行)到该组中要包括的最后行(例如,HamletWestCenter)。通过拖动鼠标到要包括的最后行,然后放开鼠标,用户能够通知系统(并且系统能够检测)要加入所选/高亮显示组的所有元素。因此,系统检查它们对应的复选框。树视图720还通过拖放技术提供一种创建RDML文档102的便利方法。在传统电子表格和DBMS应用中,通过选择数据行并且剪切和粘贴它们,或者通过编写SQL查询从现存表来创建新表是可能的。在树视图720中,可以通过将所需行项拖放到表示新文档的图标上来创建一个带有必要文档化的新RDML文档102。还可以用同样方式创建和操作宏。数据查看器100还可以将宏设置为当所选行项发生改变时进行自动执行。作为宏“锁定”为人所知,这允许在经过变换的状态下浏览数据。图14F示出行项可以有与它相关联的可视链接,该链接可以被用户激活。一旦激活链接1430,就显示一个相关超链接1432的列表,以便用户选择。链接1430本身可以表示相关超链接1432的数。然后,用户可以选择任何超链接访问相应的网站。IV.A.7电子表格视16示出在下半部显示电子表格视图724,并且在上半部显示图表视图716的屏幕图。很多用户的最终目标是获得以适合他们现有电子表格的格式安排的数字集。虽然很多程序提供剪切和粘贴操作将数字从源应用传送到目标电子表格,这种方法将操作、规格化、排列和变换数据的任务留给用户。因此剪切和粘贴操作经常跟随着对每个数字的手工重新计算和重新输入。作为对比,RDML数据查看器100,允许用户在将数字载入到电子表格之前,通过鼠标操作作必要数据变换。参照图16,当行项1206加入到图表视图716或树视图724并且从中删除时,它们加入到电子表格724并且从中删除。另外任何对绘制在图表视图716行的改变(作为应用宏和宏组合的结果)立即反映在电子表格724的数字中。这提供将信息加入电子表格视图724的单击操作。因此,这种将数据复制到电子表格中的方法是简单地将它们加入到图表716。将整个数据文档102或数据文档集合从树视图720复制到电子表格视图724,在过程中作出任何所需宏改变是可能的。而且,RDML文档102可以直接从电子表格视图724进行创建。虽然数据表显示在电子表格724中(从另一RDML文档102创建或者从零开始输入),但是RDML文档可以从由用户指定的缺省数据进行创建。这执行类似与XML编辑器的任务,但是用数据表格式,而不是目前XML编辑器的树结构完成这一任务,这是输入表数据更为自然的方式。电子表格视图724还可以使用URL1602直接读取因特网数据。它将排除使用Xpointer(由Xlink使用来指定链接目标)的公式,以从远端RDML文档102读入数据。通过这种方式,数据可以从多个源加入到单个电子表格,而不需要准备查询或提供自定义编程代码。如下面表6的类图所示,电子表格管理器722可以是简单的对象;图表管理器/图表数据714和716组合体可以是实际的数据存放地。图表管理器714将数据输入到电子表格管理器722,它将数据放在正确的单元格中。电子表格管理器722直接与图形电子表格对象724通信。在RDML数据查看器100的情况下,它可以是第三方组件。表6IV.A.8.脚注视17是在下半部显示脚注视图728的屏幕图。通常脚注是在传输和显示数字中经常丢失的扩展文档化类型。每个行项均有提供短脚注的文本字符串作为属性,该脚注可以通过鼠标单击进行访问(也就是,通过在数据查看器100的底部单击“脚注”页签1702)。对于电子表格视图724缺省值是仅为已绘制的序列显示它们的脚注。然而,在电子表格或样式单报表视图中,显示RDML文档102的所有脚注是可能的。脚注视图728中的脚注的目的是关于数据简单重要的备忘录。典型地,它们包括常用周期(财政年度)、调整、特殊问题等。缺省情况下,脚注视图728还显示RDML文档102的源和原始底层数据。在本发明的一个实现中,要求多于255字节的任何内容表示在行项中有对其的超链接的HTML页面中。这些更长的脚注可以作为HTML文档显示在HTML窗口中。而且,当用户将序列加到图表并且从中删除时,即使存在多个源文档,也自动从源数据更新脚注。RDML“脚注”页签中的脚注还自动更新它们的数字和标注,以匹配图表。这不同于目前电子表格和图表程序,它们要求用户而不是自动查找例程,提供脚注。宏管理器730操作和实现数据查看器100中的宏。宏允许用户通过单击将变换或计算应用到行项,而不是必须编写公式或查询。IV.A.9标签化向导数据查看器100还可以从电子表格文件创建XML和RDML文档102。为达到这个目标,它可以使用电子表格“向导”,从电子表格的数据表创建带标签的文档。在本发明的一个实现中,用脚本语言(例如,ExcelVisualBasicforApplications)创建向导(使用至少一个对话框)。允许电子表格(例如,Excel)中的表数据用作创建RDML格式的带标签文本文档。图21示出说明根据本发明将来自电子表格的信息置上标签的方法中使用的步骤的流程图。图22A-D示出文档创建过程中不同阶段的屏幕图。图22A示出,用户将数据以表形式准备好(步骤2102),每行将成为一个行项;第一行2202将成为“data_x”元素924的数据,第一列2204将填充各个行项的“li-legend”属性。注意,大多数表数据本质上已采用这种形式分类(或时间周期)描述居于上端,无格式语言行项描述居于左边,从上向下,并且将值本身填在表中。然后用户高亮显示最左栏2204中的图例,并且打开第一对话框2206(步骤2104),如图22B所示,这将在数据表的前面插入新的信息栏,每栏包含一种属性类型(步骤2106)。图22C示出在对话框2206上按“确定”创建一栏,并且填入缺省数据(步骤2108)。向导输入所需的缺省值,节省大部分烦琐的键盘输入工作,并且用户检查栏2208,查看是否需要作修改。附录F示出执行这些功能的例程的示例性代码。对于每个属性,一栏加入到电子表格,选择正确的属性值(例如,空白、手工措词、或从对话框的适当域中获得),并且在适当的栏2208中用那个值填入正确的单元格数。图22D示出用户然后带来文档创建对话框2210(步骤2110)。用户首先使用第一条目域2212,指定数据表的范围(包括属性栏)。“缺省”数据文件将用来为rdmldocheader元素904值和line_item_set元素906中的其它元素和属性值提供缺省值(步骤2112)。最后,用户填写剩余域,并且按“确定”,这将导致创建并保存带标签的RDML文档102(步骤2114)。本领域的普通技术人员理解,在创建遵循RDML的数据之前,能用单个对话框代替示例性多个对话框来收集信息。附录G提供在一个实现中使用的,创建RDML文档102的代码。通常,该过程包括如下步骤(1)打开用于写的文件和缓冲区;(2)为DTD702中每个元素调用元素创建方法,其中元素能嵌套在其它元素之内;(3)完成时,保存和关闭文件。IV.A.10.RDML标记文档方面RDML被设计为用来描述跨行业和域的数字。为了达到这一目的,它提供一个基本标签集和匹配词汇表来描述数字表的六个方面(1)值、(2)结构、(3)格式、(4)语义、(5)起源、(6)量度。值表示数字作为字符串进行传输,并且带附加的标签定义它们的数据类型、精度度、缺少值的处理、空的处理和其它对终端应用的指示。结构是指数据在表内的结构化。RDML允许在表内分层安排记录。虽然不是关系表的标准方法,但这允许多个信息层放在单个二维表中。例如,当查看财务报表,其中单个行项(例如,“设备租赁”)可能具有几个子部分(“汽车”、“卡车”、“办公设备”)时,用户希望这种方式。格式允许应用向用户将数字以人可读形式进行显示。标签指定数字缺省格式、国际化问题如逗号/小数点处理,和缺省图例和图表标题。这些格式可以由用户在动态运行时进行改变。语义是指RDML提供能在其中放置数字“含义”指示符的一般标签,包括其它SGML和XML标记语言的词汇表这一事实。这允许RDML担当来自其它标记语言文档的数据的“包装器”。语义还用基于文本的属性进行传达图例、标题、标注、脚注等。起源是各种元素的文档化。RDML元素包括数据源信息,这种元素将它标记,加时间戳和链接地址和授权信息等。最后,在一般数字的上下文中,“量度”指描述数字域的量度方面所需的特征单位(“米”、“英尺”)、数量级(“百万”、“十亿”)、修饰符(“通胀调整,1997指数”)等。这允许宏确定任何计算结果充分地获得并描述给终端用户。IV.B.图形用户界面和HTML浏览器图14A-D、16和17的屏幕图就属于具有几种职责的图形用户界面(graphicaluserinterface,GUI)。通常,在应用启动时它创建自身和其它可视组件,并且为最小量的应用全局变量(例如,文件目录等)提供中心存储位置。而且,它响应用户操作,如鼠标单击和键盘快捷键,并且在适当的时候重画屏幕或屏幕部分。HTML浏览器736可以是显示HTML文件的第三方组件。虽然该浏览器已被指定为HTML浏览器,但本领域的技术人员从本公布中理解,可以同样地使用其它浏览器(例如,XML浏览器)。该组件提供基本web浏览功能和观看RDML文档102超链接的方式。另外,它担当由RDML数据查看器100生成的特定页面(如RDML文档源代码、图表文档化等)的显示窗口。IV.C可重用宏标记语言图18通过图形示出RMML文档类型定义1800的元素。在本发明的一个实现中,RMML文档104遵循由DTD1800提供的规则。根据本发明的一个实现,RMMLDTD1800如附录D所示。DTD1800元素属性还可以在附录E的完全样例RMML文档104中见到。这两个附录D和E对于检查RMMLDTD1800的特定属性和元素是有用的。RMMLDTD1800数据结构经过优化按照一定次序提供所需信息,以减少新用户对RMML宏开发的学习,并且避免不必要的重复。附录D中的DTD1800第一行以“<?Xmlencoding="UTF-8"?>开始,因为XML文档均以一行开始,告诉客户应用(在本例中,RMML解释器1970(下面描述)和数据查看器100)它是什么文档类型和XML版本。进一步参照图18,用来定义RMML宏文档104的DTD1800以元素的分层树结构进行构造。每个单元可以包括一个属性列表(显示在附录D中,但没有显示在图18上)和/或与一个或多个子元素的关联。对于如上所述的RDMLDTD,依赖于设计参数,一些属性可以是必需的,而其它可以是可选的。在最高层,DTD1800在根元素<macrodoc>1802下有三个元素。第一元素<macro_header>1804包含作为整体文档的元数据。第二元素<macro_code>1806包含要求值的源代码表达式、相关变量和用于任何参数对有关图形用户界面的应用的指令。第三元素<macro_reference>1808包含与远端数据(RDML文档102)或其它宏(RMML文档104)相关的元素。macro_header元素1804设计为尽可能接近地匹配RDML文档102的rdmldoc_header元素。这将节省开发者和终端用户的学习时间,并且允许可重用代码模块考虑双方进行构建。然而,在本发明的一个实现中,<macro_header>元素1804包含几个唯一的属性。在这个实现中,<macro_header>元素1804有8个唯一属性。这些中的第一个是“macro_type”。该属性告诉应用该特定宏在那个应用的上下文中需要哪个通用功能。应用在工厂类1912中使用这个属性,创建宏对象的正确类型,以作内部使用。这个实现的两个例子类型是(1)“TSL”(时间序列行,操作时间序列在图表上创建新的一行或多行的宏;(2)“TSO”(时间序列覆盖图,操作时间序列以在图表716上创建新的覆盖图,如特定时间周期背后的灰背景)。result_type属性告诉RDML数据查看器100如何显示由宏创建的任何变换结果。在一个实现中,对于该字符串有五个允许值“ReplaceEach(替换每个)”、“ReplaceAll(替换所有)”、“ReplaceAB(替换AB)”、“AddNew(加入新的)”、“AddAnnotation(加入注释)”和“AddOverlay(加入覆盖图)”。“ReplaceEach”删除RDML数据查看器100的图表716上的每一行,并且将它替换为所变换版本。例如,如果图表上有四个序列,所有均以“英里”表示,并且用户选择“到公里”宏,然后每一行将转换为公里,删除英里行,并且将公里行置于它们在图表上的位置。当所有行均用一行来替换时,使用ReplaceAll。例如,如果A和B已绘入图表,命为“B作为A的%”的宏将用单个行替换它们。ReplaceAB是ReplaceAll的特殊情况,其中仅有两个绘入图表的行。AddNew将一行加到所绘制内容。例如,名为“平均”的宏可能在平均水平上画一个经过现有行的行。AddAnnotation加入带指向图表上特定值的指针的标注(例如,“2-3股票拆分”)。AddOverlay在特定图表区域加入阴影区域。“rdmldoc_type”属性指定所设计宏要操作的RDML文档102类型。该属性的合法字符串为TS、CT和XY,对应于RDML文档102的类型。元素<macro_source>1810和<license_terms>1812与RDML文档类型定义702中的<data_source>908和<license_terms>914相同,并且扮演相同的角色。<documentation>1814元素是两个子元素<macro_description>1816和<help_page>1818的容器。<macro_description>元素包含描述宏基本功能性的短字符串(例如,50字符以下)。它出现在参数面板1960的描述标注中(如图20A-D所述和如下所述)。对于想要更详细描述宏的用户,<help_page>1818元素包含提供该信息的文本块。该文本块能由数据查看器100读入HTML面板,作为常规帮助系统的一部分。该文本块用于提供用户可能感兴趣的有关宏各个方面的信息它的使用,它的代码,和其输入。第二高层元素是<macro_code>1806。该部分包含实际源代码和相关变量。<code>1820元素包含一个或多个在RDML数据查看器100中对特定数字的变换进行求值的表达式。在本发明的一个实现中,变换应用到RDML数据查看器102中的图表视图716。但是变换还可以应用到树视图720或其它视图。这个元素中的表达式是类似于电子表格公式中所见的表达式是如下组成部分的序列(1)操作符、(2)常量(literal)、(3)变量、(4)函数和(5)各种表达式分隔符。与传统电子表格公式最主要的不同是根据源或上下文,变量可以代表标量或向量。一个样例表达式如下所示A*(B+2000)-IF(A>3,12,45)操作符是加(+)、减(-)、乘(*)、除(/)、小于(<)、大于(>)、或(|)、与(&)。这些操作符根据它们所操作子表达式的类型具有不同的含义。操作两个向量被解释为在两个向量上逐元素的操作。因此A*B,其中A和B为向量,为C={a1*b1,……an*bn}。常量直接定义在表达式中(例如,“46”)或赋给变量(例如,“pi=3.1415”)。在RMML中变量可以来自六个不同地方。首先,它们可以直接在RMML文档104中定义为变量。这个操作通过创建<variable>元素,并且赋给它缺省值来完成。第二,变量可以与RDML数据查看器102的参数面板1960中的图形组件相关联。在本发明的一个实现中,有四种不同类型的“gui组件”。这些在<gui>元素1824下面进行列出和描述。第三,变量可以从与RDML文档102所见相同的行项元素进行定义。由于它们相同,行项可以简单地从RDML文档102剪切并复制到RMML文档104。第四,变量可以从远端源获得。在本发明的一个实现中,那个远端源可以是到RDML文档102中行项的超链接。这通过使用变量元素的“href”属性中的Xpointer超链接来完成。第五,变量可以被定义为目前绘制在图表上的数据序列中的一个。在本发明的一个实现中,图表上最大可以有六个序列;每个序列可以通过使用保留字A、B、C、D、E和F进行访问。本领域的普通技术人员理解,可以使用任何数目的可唯一定义序列。如果宏的结果类型属性为ReplaceAll,那么为每个序列计算表达式一次,A为当前正在进行变换的序列。第六,变量可以从已载入在RDML数据查看器100中的RDML文档102获得。在这种情况下,表达式指出可在行项元素的li_class元素中的一个找到的URL和类字符串。然后表达式使用那个行项作为变量值。内置函数在本发明的一个实现中由解释器1980进行提供,并且是扩展语言的主要装置。它们采用“函数名(表达式)”的形式。函数包括IF(x,y,z);SUM(x);AVERAGE(x);COUNT(x);MIN(x);MAX(x)等。各种分隔符通过用分号(;)分隔表达式来实现。这表示表达式要按次序进行求值。还可以用括号对表达式进行分组,告诉解释器1980如何对子表达式进行求值。出现在<instructions>元素1822中的任何字符串将显示在参数面板1960中,给用户任何最后时刻的指示或建议。<gui>元素1824包含任意数目的描述图形组件的元素。这些图形组件将出现在参数面板1960中,让用户能够对宏的参数作修改。四个gui组件(没有显示)可以是<comp_vector>、<comp_list>、<comp_rbutton>和<comp_ipanel>。<comp_vector>是向量变量,其中向量的单个值可以在滚动列表框中进行查看。<comp_list>元素是滚动列表;每次用户单击不同的项,附属于那个组件的变量值就改变为与那个项相关联的值。<comp_rbutton>是圆形按钮的集合;每个按钮均与不同值相关联。当用户单击不同按钮时,将改变与组件自身相关联的值,并且重新运行宏。<comp_ipanel>是允许用户直接输入对宏的修改的输入域。通常,宏并不是盲目地对所有数据运行。首先,解释器1980检查是否宏具有任何必须对数据进行检查的“限定符”。如果RMML文档104的<qualifiers>元素1826中有任何字符串,对数据的<li_class>元素930或者其它元素或属性中的字符串进行检查。如果数据合格,解释器1980将继续运行宏。例如,如果宏的<qualifiers>元素1826指定“li_unit=currency”,那么只有正在操作数据的li_unit属性为货币值,才运行宏。<error_handling>元素1828保存如果存在所指示类型的问题,能由RDML数据查看器100进行显示的错误消息。<testing>元素1830保存测试有关自动测试例程的应用的指令。这些应用承担基本单元测试,如检查出界问题、缺少值问题、除零问题等。RMML文档104的第三主要部分,<macro_reference>元素1808保存对外部宏的引用和通过引用可能加入到宏中的数据集。因此两个子元素为<rmmldocs>元素1832和<data_docs>元素1834。IV.C.1RMML宏包通常,RMML宏包有三个主要部分RMML文档处理类(图19A)、图形界面(图19B)和宏解释器(图19C)。在本发明的一个实现中,该软件类包仅在很少地方与RDML数据查看器100进行连接它从ChartManager714/ChartData715对象得到数据、通过GUI734对象显示它的图形组件,并且能访问载入在主数据存储712中的RDML文档102。RMML文档处理图19A示出负责管理RMML文档处理过程的对象,该过程包括载入文档,从它们中创建内部宏对象,对它们编制目录并对它们进行缓存,并且使它们作好用作对象的准备。RMMLDoc读入器1910定位RMML文档104(在本地或通过网络),将它传给XML分析器(可以是第三方组件),如果有,将错误消息传达给RDML数据查看器100,创建RMML文档104的内部表示作为RMMLDoc1906对象,并且将对RMMLDoc1906的引用放在RMML_Lib1908中。可以用两种方式组织RMMLDoc1906将TXDocument对象包装得到RMMLDoc对象,或用来自TXDocument的数据创建新的RMMLDoc1906对象。RMMLDoc1906对象包含用于以在宏包上下文中容易理解的方式访问文档的单个元素和属性的方法。RMML_Lib1908对象是用于所载入和活动RMMLDoc对象1906的缓存。RMMLDoc1906是宏数据的原始集合--它的公式、它的帮助文本等--并且通常不对数据集操作,以变换它们。首先必须使用宏功能创建能够做计算的内部对象(宏接口758)。该内部宏对象758通过MacroLibrary1926对象(活动宏的图形对象缓存)和MacroFactory1912(确定创建哪种类型的内部宏)之间的协作进行创建。内部宏有四种类型时间序列(TS)、分类(CT)、xy图(XY)和覆盖图(OVERLAY)。由MacroFactory1912使用macro_type属性,创建正确类型的内部宏Macro_TSL1918,Macro_CT1920,Macro_XY1922,和Macro_OVER1924。MacroAdapter1916类执行宏的工作。表7下面描述的是根据本发明的一个实现的MacroAdapter对象760的表7所示的类方法。首先,MacroAdapter()是创建MacroAdapter760对象的构造器。在运行宏之前,有机会对要进行变换的数据制作一个副本,从而可以执行撤销操作。createMemento()方法通过将ChartData对象715复制到一个Mememto对象,得到对绘在图表上数据的快照。另外,在运行宏之前,运行initMacro()方法,并且给宏一个载入任何远端数据或宏代码的机会。replaceVariable()方法对一个图表上的多个序列运行宏。例如,如果result_type为“ReplaceEach”并且图表上绘有四个序列,该宏将运行四次。第一次,公式中的A表示第一序列,第二次,它表示第二序列等等。performTransformation()方法计算变换字符串,并且更新各种标题和图例。performTransformation()代码的一个重要部分是确定宏的result_type,并且以正确方式调用evaluateFormula()方法。对于“ReplaceEach”,它为每个序列调用一次,而对于“ReplaceAll”,它仅运行一次。performTransformation()方法还调用四个更新方法updateChartTitle()、updateLabels()、updateLegend()和updateYAxisTitle()。每一个这些方法修改ChartData对象715的相关字符串,从而它能传递到图表。RMML图形界面图19B示出负责管理创建、管理并处理来自图形用户界面734的事件的过程的对象。图20A示出RDML数据查看器100的屏幕图;NewMacroPanel732显示在屏幕的下半部。可用宏显示在下面面板左边的MacroLibrary面板1926的单个窗口内。宏面板732的右边是宏信息面板2002,包含宏描述面板1958和参数面板1960。NewMacroPanel732可以是Java的Swing类集中JPanel1942的子类。本领域的技术人员能够选择适当类,用于其它主要平台。NewMacroPanel732的左边是用于多个文件接口的框架(在本例中,桌面用于JavaSwing集的JintemalFrame)。所打开的每个MacroLibrary1926创建一个新的内部框架,这允许用户同时从多个库选择宏。当打开MacroLibrary1926时,其内的所有宏被载入和登记。“登记”是一系列方法,其中,在RMMLDoc104的各种元素中查找宏变量,并且为这些变量构建图形表示,以包括在参数面板1960中。在MacroAssumptionGroup1944类中创建所有与宏集相关联的变量的图形组件。该类具有检查由RMMLDoc104报表的变量属性(变量名、变量值、gui类型、缺省值等)和创建适当MacroGUI类的方法,这些MacroGUI类包括MacroGUI_List1952(参看图20A)、MacroGUI_RadioButton1954(参看图20B)、MacroGUI_Vector1956(参看图20C)或MacroGUI_Default1950(参看图20D)。如屏幕图所示,这些图形组件中的每一个都不同地出现在参数面板1960中。MacroLibrary1926的宏登记还涉及创建伴随每个变量的MVariable1946对象,并且将它们加入到可用MVariable1946的缓存。这些MVariable1946对象用在实际的表达式计算中。登记过程还涉及将MacroGUI1948登记为MacroManager1980对象可以用来触发运行宏的事件源。MVariable1946封装变量的各种特征它的值、缺省和源。当在MacroLibrary1926内部框架的树视图720列表中选择特定宏时,用图形组件和文本填充描述面板1958和参数面板1960。所选宏提供描述文本、各种标注和MacroGUI1948组件。RMML解释器MacroManager(宏管理器对象)730负责检测宏已被选择,或参数发生改变,召集各种数据集和变量,并使其可用于Evaluator(计算器)对象1984,并且负责获得已绘入图表的数据集,对其进行变换,并将其送回到图表716重新绘画,或树视图重新列出。ChartData715包含当前图表716(或活动树视图720,依赖于宏类型)的数据。它使该数据仅作为另一变量可用于Evaluator对象1984,并且接收Evaluator对象1984的最后结果。Evaluator1984计算RMML文档104的<code>元素1920中的字符串表达式,或来自所选宏的各种表达式。表达式由Tokenizer(符号分解器)类1994分解为多个符号。这些符号是在如上所述RMML表达式语言中使用的各种操作符、变量、常量、函数和其它控制符号。从这些符号,Formula(公式)对象1990通过向下递归,构建由从符号创建的FormulaNode1992对象组成的分析树。FormulaNode1992对象使用解算器对象VariableResolver1986和FunctionResolver1988,对自身进行求值。这些解算器反过来调用Evaluator对象1984,为它们给出变量或函数的当前值。例如,FormulaNode1992计算过程可能含有“A”符号;Evaluator对象1984知道这表示图表上的序列A,并且使用当前在图表716中找到的数据向量(它可能是数组或其它数据结构)。公式异常1996传达与函数处理相关联的错误。前面对本发明实现的描述是为说明和描述的目的而提供的。它并不详尽,并且不将本发明限于所公布的准确形式。根据上述学习或通过本发明的实践,作修改和变动是可能的。本发明范围由权利要求及其等价物进行限定。附录ARDML文档类型定义("DTD")<?xmlencoding="UTF-8"?><!--Therootelementawholeportfolioofdataisan"rdmldoc"--><!ELEMENTrdmldoc(rdmldoc_header,line_item_set)><!--RDMLDOC_HEADER--><!--Informationabouttherdmldoc.Anrdmldocconsistsofanrdmldoc_headerandaline_item_set.Lineitemsintheline_item_setshareacommondatastructure.--><!ELEMENTrdmldoc_header(data_source?,formatting_source?,rdmldoc_source?,license_terms?,linkset?)><!ATTLISTrdmldoc_headerrdmldoc_IDCDATA#REQUIREDdoc_titleCDATA#REQUIREDtimestampCDATA#REQUIREDversionCDATA#IMPLIEDexpirationCDATA#IMPLIEDfreq_ofupdateCDATA#IMPLIEDnum_line_itemsCDATA#IMPLIEDnum_datapointsCDATA#IMPLIEDx_indexesCDATA#IMPLIEDfirst_li_withdataCDATA#IMPLIED><!ELEMENTdata_source(contact_info+)><!ELEMENTformatting_source(contact_info+)><!ELEMENTrdmldoc_source(contact_info+)><!ELEMENTlicense_terms(contact_info?,linkset?)><!ATTLISTlicense_termscopyright_citeCDATA#REQUIREDholderCDATA#REQUIREDlicense_typeCDATA#IMPLIEDwarrantyCDATA#IMPLIEDdisclaimerCDATA#IMPLIEDtermsCDATA#IMPLIEDdateCDATA#IMPLIEDemailCDATA#IMPLIEDstateCDATA#IMPLIEDcountryCDATA#IMPLIED><!ELEMENTcontact_info(#PCDATA)><!ATTLISTcontact_inforoleCDATA#REQUIREDnameCDATA#IMPLIEDcompanyCDATA#IMPLIEDaddressCDATA#IMPLIEDcityCDATA#IMPLIEDstateCDATA#IMPLIEDzipCDATA#IMPLIEDcountryCDATA#IMPLIEDemailCDATA#IMPLIEDformCDATA#IMPLIEDhrefCDATA#IMPLIEDcommentsCDATA#IMPLIED><!ELEMENTlinkset(link*)><!ATTLISTlinksetformCDATA#FIXED'extended'hrefCDATA#IMPLIED><!ELEMENTlink(#PCDATA)><!ATTLISTlinkformCDATA#FIXED'simple'hrefCDATA#REQUIREDbehaviorCDATA#IMPLIEDcontent-roleCDATA#IMPLIEDcontent-titleCDATA#IMPLIEDroleCDATA#IMPLIEDtitleCDATA#IMPLIEDshowCDATA#FIXED'new'actuateCDATA#FIXED'user'><!--LINE_ITEM_SET--><!--Informationaboutthecollectionoflineitems--><!ELEMENTline__item_set(data_x,li_class_set?,linkset?,line_item+)><!ATTLISTline_item_setline_item_set_typeCDATA#REQUIREDtime_periodCDATA#REQUIREDcharacter_setCDATA#IMPLIEDmissing_valuesCDATA#IMPLIEDnull__valuesCDATA#IMPLIEDzero_valuesCDATA#IMPLIEDdates_valuesCDATA#IMPLIEDpercentagesCDATA#IMPLIED><!ELEMENTdata_x(#PCDATA)><!ATTLISTdata_xx_titleCDATA#REQUIREDformatCDATA#REQUIREDx_notesCDATA#IMPLIEDx_descCDATA#IMPLIEDx_precCDATA#REQUIREDx_unitCDATA#REQUIREDx_magCDATA#REQUIREDx_modCDATA#REQUIREDx_measureCDATA#REQUIREDx_scaleCDATA#REQUIREDx_adjustmentCDATA#REQUIREDx_linksCDATA#REQUIRED><!ELEMENTli_class_set(li_class+)><!ELEMENTli_class(#PCDATA)><!ATTLISTli_classclass_nameCDATA#REQUIREDparent_classCDATA#REQUIREDformCDATA#FIXED'simple'hrefCDATA#IMPLIEDdescriptionCDATA#IMPLIED><!--LINE_ITEM--><!--InformationabouttheLineItem--><!ELEMENTline_item(data_x?,data_y,linkset?,note_set?)><!ATTLISTline_itemli_IDCDATA#REQUIREDli_legendCDATA#REQUIREDli_titleCDATA#REQUIREDli_catCDATA#IMPLIEDy_axis_titleCDATA#REQUIREDlevelCDATA#REQUIREDformatCDATA#REQUIREDrelationCDATA#REQUIREDli_notesCDATA#REQUIREDli_descCDATA#REQUIREDli_precCDATA#REQUIREDli_unitCDATA#REQUIREDli_magCDATA#REQUIREDli_modCDATA#REQUIREDli_measureCDATA#REQUIREDli_scaleCDATA#REQUIREDli_adjustmentCDATA#REQUIREDli_aggregationCDATA#IMPLIED><!ELEMENTdata_y(#PCDATA)><!ELEMENTanalysis(linkset?)><!ELEMENTnote_set(note+)><!ELEMENTnote(#PCDATA)><!ATTLISTnotenote_typeCDATA#IMPLIED>附录B样例RDML文档<rdmldoc><rdmldoc_headerrdmldoc_ID="rdml_thomson_csl"doc_title="ComputerServicesCompanies"timestamp="1999-01-19T23:00:00"version="1.0.0"expiration="2000-01-19T23:00:00"freq_of_update="Annual"num_line_items="0"num_datapoints="0"x_indexes="-9,-8,-7"first_li_withdata="3"><data_source><contact_inforole="DataSource"name="RussellT.Davis"company="RDML,Inc."address="2WisconsinCircle,Suite700"city="ChevyChase"state="MD"zip="20815"country="USA"email="rt_davis@sprynet.com"xlinkform="simple"href="http//www.rdml.com"comments=""></contact_info></data_source><formatting_source><contact_inforole="FormattingSource"name="RussellT.Davis"company="RDML,Inc."address="2WisconsinCircle,Suite700"city="ChevyChase"state="MD"zip="20815"country="USA"email="rt_davis@sprynet.com"xlirkform="simple"href="http//www.rdml.com"comments=""></contact_info></formatting_source><rdmldoc_source><contact_inforole="RDMLDocSource"name="RussellT.Davis"company="RDML,Inc."address="2WisconsinCircle,Suite700"city="ChevyChase"state="MD"zip="20815"country="USA"email="rt_davis@sprynet.com"xlinkform="simple"href="http//www.rdml.com"comments=""></contact_info></rdmldoc_source><license_termscopyright_cite="Copyright1998,RDML,Inc.AllRightsReserved"holder="RDML,Inc."license_type="PaymentPerDownload"warranty="Nowarrantyisexpressedorimplied.Usethisdataatyourownrisk."disclaimer="Thisdataisprovided'as-is'.Theproviderassumesnoresponsibilityforitsuseormisuse."terms="$1perRDMLDocdownload"date="1999.0123000000.00"email="license@rdml.com"href="http//www.rdml.com"state="MD"country="USA"><contact_inforole="RDMLDocSource"name="RussellT.Davis"company="RDML,Inc."address="2WisconsinCircle,Suite700"city="ChevyChase"state="MD"zip="20815"country="USA"email="rt_davis@sprynet.com"xlinkform="simple"href="http//www.rdml.com"comments=""></contact_info></license_terms></rdmldoc_header><line_item_setline_item_set_type="Category"time_period=""character_set=""missing_values=""null_values=""zero_values=""dates_values=""percentages=""><data_xx_title="Company"format=""x_notes=""x_desc=""x_prec=""x_unit=""x_mag=""x_mod=""x_measure=""x_scale=""x_adjustment=""x_links="">AUD,BSYS,CEN,CSC,CVG,DST,EDS,FISV,GLC,PAYX,TSG,SDS</data_x><li_class_set><li_classclass_name=""parent_class=""xlinkform="simple"href=""description=""></li_class></li_classset><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset><line_itemli_ID="1"li_legend="ComputerServicesCompanies"li_title=""li_cat=""y_axis_title=""level="1"format=""relation="Parent"li_notes=""li_desc=""li_prec=""li_unit=""li_mag=""li_mod=""li_measure=""li_scale=""li_adjustment=""><data_y>,,,,,,,,,,,,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="2"li_legend="StockPerformance"li_title="StockOverview"li_cat=""y_axis_title=""level="2"format=""relation="Parent"li_notes=""li_desc=""li_prec=""li_unit=""li_mag=""li_mod=""li_measure=""li_scale=""li_adjustment=""><data_y>,,,,,,,,,,,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="3"li_legend="StockPrice(12/31/98)"li_title="StockOverview"li_cat=""y_axis_title="$pershare(12/31/98)"level="3"format="#,##0.00;(#,##0.00)"relation="ChildStyle"li_notes=""li_desc=""li_prec="2"li_unit="$"li_mag="0"li_mod="per"li_measure="share"li_scale=""li_adjustment=""><data_y>40.1,51.63,69.81,64.44,22.13,67.06,50.19,51.44,43.5,51.44,44.5,39.69,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="4"li_legend="SharesOutstanding"li_title="StockOverview"li_cat=""y_axis_title="Sharesoutstanding"level="3"format="#,##0;(#,##0)"relation="ChildStyle"li_notes=""li_desc=""li_prec="0"li_unit="shares"li_mag="6"li_mod=""li_measure=""li_scale=""li_adjustment=""><data_y>627,27,74,162,145,64,494,85,105,166,131,107,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="5"li_legend="%InstitutionalHoldings"li_title="StockOverview"li_cat=""y_axis_title="%ofoutstandingshares"level="3"format="0.00%;(0.00%)"relation="ChildStyle"li_notes=""li_desc=""li_prec="2"li_unit="%"li_mag="0"li_mod="of"li_measure="outstandingshares"li_scale=""li_adjustment=""><data_y>0.65,0.8,0.75,0.64,0,0.44,0.49,0.67,0.25,0.53,0.13,0.71,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="6"li_legend="MarketCapitalization"li_ritle="StockOverview"li_cat=""y_axis_title="$inMillions"level="3"format="#,##0;(#,##0)"relation="ChildStyle"li_notes=""li_desc=""li_prec="0"li_unit="$"li_mag="6"li_mod="in"li_measure=""li_scale=""li_adjustment=""><data_y>25142.7,1394.01,5165.94,10439.28,3208.85,4291.84,24793.86,4372.4,4567.5,8539.04,5829.5,4246.83,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="7"li_legend="ReportedEPS"li_title="StockOverview"li_cat=""y_axis_title="Earningspershare"level="3"format="#,##0.00;(#,##0.00)"relation="ChildStyle"li_notes=""li_desc=""li_prec="2"li_unit="$"li_mag="0"li_mod="per"li_measure="share"li_scale=""li_adjustment=""><data_y>1.13,2.05,1.9,2.1,0.71,1.48,1.7,1.35,1.86,0.82,1.72,1.17,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="8"li_legend="Earnings"li_title="StockOverview"li_cat=""y_axis_title="$inMillions"level="3"format="#,##0;(#,##0)"relation="ChildStyle"li_notes=""li_desc=""li_prec="0"li_unit="$"li_mag="6"li_mod="in"li_measure=""li_scale=""li_adjustment=""><data_y>708.51,55.35,140.6,340.2,102.95,94.72,839.8,114.75,195.3,136.12,225.32,125.19,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="9"li_legend="CashFlowpershare"li_title="StockOverview"li_cat=""y_axis_title="$pershare"level="3"format="#,##0;(#,##0)"relation="ChildStyle"li_notes=""li_desc=""li_prec="2"li_unit="$"li_mag="0"li_mod="per"li_measure="share"li_scale=""li_adjustment=""><data_y>1.41,2.13,3.71,4.95,1.39,3.18,4,1.98,3.44,0.96,3.2,2.5,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="10"li_legend="CashFlow"li_title="StockOverview"li_cat=""y_axis_title="$inMillions"level="3"format="#,##0;(#,##0)"relation="ChildStyle"li_notes=""li_desc=""li_prec="0"li_unit="$"li_mag="6"li_mod="in"li_measure=""li_scale=""li_adjustment=""><data_y>884.07,57.51,274.54,801.9,201.55,203.52,1976,168.3,361.2,159.36,419.2,267.5,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="11"li_legend="Price/EarningsRatio(PE)"li_title="StockOverview"li_cat=""y_axis_title="P/ERatio"level="3"format="#,##0;(#,##0)"relation="ChildStyle"li_notes=""li_desc=""li_prec="2"li_unit="P/ERatio"li_mag="0"li_mod=""li_measure=""li_scale=""li_adjustment=""><data_y>35.4867256637168,25.1853658536585,36.7421052631579,30.6857142857143,31.169014084507,45.3108108108108,29.5235294117647,38.1037037037037,23.3870967741935,62.7317073170732,25.8720930232558,33.9230769230769,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="12"li_legend="Estimated5-yeargrowth"li_title="StockOverview"li_cat=""y_axis_title="%growth"level="3"format="0.00%;(0.00%)"relation="ChildStyle"li_notes=""li_desc=""li_prec="2"li_unit="%"li_mag="0"lit_mod=""li_measure=""li_scale=""li_adjustment=""><data_y>0.15,0.18,0.2,0.22,0.23,0.22,0.15,0.2,0.15,0.3,0.13,0.2,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSources"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item><line_itemli_ID="13"li_legend="ReturnonEquity"li_title="StockOverview"li_cat=""y_axis_title="Earningsas%ofBookValue"level="3"format="0.00%;(0.00%)"relation="ChildStyle"li_notes=""li_desc=""li_prec="2"li_unit="%"li_mag="0"li_mod=""li_measure=""li_scale=""li_adjustment=""><data_y>,,,,,,,,,,</data_y><linkset><linkxlinkform="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role="OriginalDataSource"title="RDMLFormattedSourceTable"show="new"actuate="user"></link></linkset></line_item></line_item_set></rdmldoc>附录CUnitListXML文档<?xmlversion="1.0"encoding="utf-8"?><unitlist><unitname="inch"><conversionconv_target="centimeter"conv_factor="2.5400050"conv_constant=""conv_log=""conv_source="FGM"conv_href=""></conversion><type>Length</type><subtype>Linear</subtype><plural>inches</plural><alias>in</alias><desc>Approximatelythewidthofaman'sthumb.</desc><iconhref="inch.gif"></icon></unit><unitname="foot"><conversionconv_target="meter"conv_factor="0.30480060"conv_constant=""conv_log=""conv_source="ISO"conv_href=""></conversion><type>length</type><subtype>Linear</subtype><plural>feet</plural><alias>ft</alias><desc>Originally,theaveragelengthofahumanfoot</desc><iconhref="foot.gif"></icon></unit><unitname="yard"><conversionconv_target="meter"conv_factor="1.082"conv_constant=""conv_log=""cornv_source="ISO"conv_href=""></conversion><type>length</type><subtype>Linear</subtype><plural>yards</plural><alias></alias><desc>Threefeet</desc><iconhref="yard.gif"></icon></unit><unitname="meter"><conversionconv_target="meter"conv_factor="1.0"conv_constant=""conv_log=""conv_source="ISO"conv_href=""></conversion><type>length</type><subtype>Linear</subtype><plural>meters</plural><alias>m,mtr</alias><desc>Onethousandthofakilometer</desc><iconhref="meter.gif"></icon></unit><unitname="mile"><conversionconv_target="kilometer"conv_factor="1.6093472"conv_constant=""conv_log=""conv_source="FGM"conv_href=""></conversion><type>length</type><subtype>Linear</subtype><plural>miles</plural><alias></alias><desc>Englishsurveyingunit,settobeequalto8furlongs.</desc><iconhref="mile.gif"></icon></unit><unitname="dollar"><conversionconv_target="pound"conv_factor="1.312"conv_constant=""conv_log=""conv_source="ISO"conv_href=""></conversion><type>currency</type><plural>pounds</plural><alias>sterling</alias><desc>Britishpoundsterling.</desc><iconhref="pound.gif"></icon></unit><unitname="Deutschmark"><conversionconv_target="dollar"conv_factor="1.732"conv_constant=""conv_log=""conv_source="ISO"conv_href=""></conversion><type>currency</type><plural>Duetschmarks</plural><alias>Marks</alias><desc>GermanDeutschmarks</desc><iconhref="marks.gif"></icon></unit><unitname="Frsncs"><conversionconv_target="dollar"conv_factor="0.812"conv_constant=""conv_log=""conv_source="ISO"conv_href=""></conversion><type>currency</type><plural>francs</plural><alias>ff</alias><desc>Frenchfrancs</desc><iconhref="ffancs.gif"></icon></unit><unitname="acres"><conversionconv_target="squaremeter"conv_factor="5125"conv_constant=""conv_log=""conv_source="ISO"conv_href=""></conversion><type>area</type><plural>acres</plural><alias>acr</alias><desc>Inmedievaltimes,theamountoflandonemancouldplowinoneday.</desc><iconhref="acre.gif"></icon></unit><unitname="squarefoot"><conversionconv_target="squaremeter"conv_factor="0.15"conv_constant=""conv_log=""conv_source="ISO"conv_href=""></conversion><type>area</type><plural>squarefeet</plural><alias>sqft</alias><desc>Anareaonefootbyonefoot.</desc><iconhref="sqfoot.gif"></icon></unit></unitlist>附录DRMML文档类型定义("DTD")<?xmlencoding="UTF-8"?><!--Therootelementawholemacroisa"macrodoc".Amacrodocconsistsofthreeelementsamacro_header,amacro_code,andamacro_referenceselement.--><!ELEMENTmacrodoc(macro_header,macro_code,macro_references)><!--MACRO_HEADER--><!--Informationaboutthemacro.--><!ELEMENTmacro_header(macro_source,license_terms,linkset?,documentation)><!ATTLISTmacro_headermacrodoc_IDCDATA#REQUIREDmacro_titleCDATA#REQUIREDmacro_typeCDATA#REQUIREDresult_typeCDATA#REQUIREDrdmldoc_typeCDATA#REQUIREDtimestampCDATA#IMPLIEDversionCDATA#IMPLIEDexpirationCDATA#IMPLIEDfreq_of_updateCDATA#IMPLIED><!ELEMENTmacro_source(contact_info+)><!ELEMENTlicense_terms(contact_info,linkset?)><!ATTLISTlicense_termscopyright_citeCDATA#REQUIREDholderCDATA#IMPLIEDlicense_typeCDATA#IMPLIEDwarrantyCDATA#IMPLIEDdisclaimerCDATA#IMPLIEDtermsCDATA#IMPLIEDdateCDATA#IMPLIEDemailCDATA#IMPLIEDstateCDATA#IMPLIEDcountryCDATA#IMPLIED><!ELEMENTcontact_info(#PCDATA)><!ATTLISTcontact_inforoleCDATA#IMPLIEDnameCDATA#IMPLIEDcompanyCDATA#IMPLIEDaddressCDATA#IMPLIEDcityCDATA#IMPLIEDstateCDATA#IMPLIEDzipCDATA#IMPLIEDcountryCDATA#IMPLIEDemailCDATA#IMPLIEDxlinkformCDATA#IMPLIEDhrefCDATA#IMPLIEDcommentsCDATA#IMPLIED><!ELEMENTlinkset(link*)><!ATTLISTlinksetxlink_formCDATA#FIXED'extended'hrefCDATA#IMPLIED><!ELEMENTlink(#PCDATA)><!ATTLISTlinkxlink_formCDATA#FIXED'simple'hrefCDATA#REQUIREDbehaviorCDATA#IMPLIEDcontent-roleCDATA#IMPLIEDcontent-titleCDATA#IMPLIEDroleCDATA#IMPLIEDtitleCDATA#IMPLIEDshowCDATA#FIXED'new'actuateCDATA#FIXED'user'><!ELEMENTdocumentation(macro_description,help_page*)><!ELEMENTmacro_description(#PCDATA)><!ELEMENThelp_page(#PCDATA)><!ELEMENTmacro_code(code,instructions,gui,variable_set?,qualifiers,error_handling,testing)><!ELEMENTcode(#PCDATA)><!ELEMENTinstructions(#PCDATA)><!ELEMENTgui(comp_rpanel?|comp_ipanel?|comp_list?|comp_vector?)><!ELEMENTcomp_rpanel(comp_rbutton*)><!ATTLISTcomp_rpanelvariable_nameCDATA#REQUIREDintro_labelCDATA#IMPLIEDvisibleCDATA#IMPLIEDlegendCDATA#IMPLIEDlegend_typeCDATA#IMPLIED><!ELEMENTcomp_rbutton(#PCDATA)><!ATTLISTcomp_rbuttonlabelCDATA#REQUIREDvalueCDATA#REQUIREDisDefaultCDATA#REQUIREDiconCDATA#IMPLIEDdescCDATA#IMPLIEDlegendCDATA#IMPLIEDlegend_typeCDATA#IMPLIED><!ELEMENTcomp_ipanel(comp_ifield*)><!ELEMENTcomp_ifield(#PCDATA)><!ATTLISTcomp_ifieldvariable_nameCDATA#REQUIREDvariable_labelCDATA#REQUIREDintro_labelCDATA#REQUIREDdefault_valueCDATA#REQUIREDdescCDATA#IMPLIEDlegendCDATA#IMPLIEDlegend_typeCDATA#IMPLIED><!ELEMENTcomp_list(comp_listitem*)><!ATTLISTcomp_listvariable_nameCDATA#REQUIREDintro_labelCDATA#REQUIREDdefault_itemCDATA#REQUIREDlegendCDATA#IMPLIEDlegend_typeCDATA#IMPLIED><!ELEMENTcomp_listitem(#PCDATA)><!ATTLISTcomp_listitemlabelCDATA#REQUIREDvalueCDATA#REQUIREDiconCDATA#IMPLIEDdescCDATA#IMPLIEDlegendCDATA#IMPLIEDlegend_typeCDATA#IMPLIED><!ELEMENTcomp_vector(line_item)><!ATTLISTcomp_vectorvariable_nameCDATA#REQUIREDintro_labelCDATA#REQUIREDdefault_itemCDATA#REQUIREDdescCDATA#IMPLIEDlegendCDATA#IMPLIEDlegend_typeCDATA#IMPLIED><!ELEMENTvariable_set(variable*)><!ELEMENTvariable(#PCDATA|line_item)*><!ATTLISTvariablevariable_nameCDATA#REQUIREDvariable_typeCDATA#REQUIREDvalueCDATA#REQUIREDhrefCDATA#IMPLIEDsubrefCDATA#IMPLIED><!ELEMENTqualifiers(#PCDATA)><!ELEMENTerror_handling(#PCDATA)><!ELEMENTtesting(#PCDATA)><!ELEMENTmacro_references(macrodocs?,datadocs?)><!ELEMENTmacrodocs(#PCDATA)><!ELEMENTdatadocs(#PCDATA)><!ELEMENTline_item(data_x?,data_y,linkset?,note_set?)><!ATTLISTline_itemli_IDCDATA#REQUIREDli_legendCDATA#REQUIREDli_titleCDATA#REQUIREDli_catCDATA#IMPLIEDy_axis_titleCDATA#REQUIREDlevelCDATA#REQUIREDformatCDATA#REQUIREDrelationCDATA#REQUIREDli_notesCDATA#REQUIREDli_descCDATA#REQUIREDli_precCDATA#REQUIREDli_unitCDATA#REQUIREDli_magCDATA#REQUIREDli_modCDATA#REQUIREDli_measureCDATA#REQUIREDli_scaleCDATA#REQUIREDli_adjustmentCDATA#REQUIREDli_aggregationCDATA#IMPLIED><!ELEMENTdata_y(#PCDATA)><!ELEMENTnote_set(note+)><!ELEMENTnote(#PCDATA)><!ATTLISTnotenote_typeCDATA#IMPLIED><!ELEMENTdata_x(#PCDATA)><!ATTLISTdata_xx_titleCDATA#REQUIREDformatCDATA#REQUIREDx_notesCDATA#IMPLIEDx_descCDATA#IMPLIEDx_precCDATA#REQUIREDx_unitCDATA#REQUIREDx_magCDATA#REQUIREDx_modCDATA#REQUIREDx_measureCDATA#REQUIREDx_scaleCDATA#REQUIREDx_adjustmentCDATA#REQUIREDx_linksCDATA#REQUIRED>附录E样例RMML文档<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><!DOCTYPEmacrodocPUBLIC"-//..""RMML1.dtd"><macrodoc><macro_headermacrodoc_ID="rmml_sort"macro_title="Sort"macro_type="TSL"result_type="replace_each"rdmldoc_type="TS"timestamp="1999-01-19T23:00:00"version="1.0.0"expiration="2000-01-19T23:00:00"freq_of_update="Annual"><macro_source><contact_inforole="MacroSource"name="RussellT.Davis"company="RDML,Inc."address="2WisconsinCircle,Suite700"city="ChevyChase"state="MD"zip="20815"country="USA"email="rt_davis@sprynet.com"href="http//www.rdml.com"comments=""></contact_info></macro_source><license_termscopyright_cite="Copyright1998,RDML,Inc.AllRightsReserved"holder="RDML,Inc."license_type="PaymentPerDownload"warranty="Nowarrantyisexpressedorimplied.Usethisdataatyourownrisk."disclaimer="Thisdataisprovided'as-is'.Theproviderassumesnoresponsibilityforitsuseormisuse."terms="$1perRMMLDocdownload"date="1999.0123000000.00"email="license@rdml.com"state="MD"country="USA"><contact_inforole="Licensee"name="RussellT.Davis"company="RDML,Inc."address="2WisconsinCircle,Suite700"city="ChevyChase"state="MD"zip="20815"country="USA"email="rt_davis@sprynet.com"href="http//www.rdml.com"comments=""></contact_info></license_terms><linksetxlink_form="extended"href="http//www.rdml.com"><linkxlink_form="simple"href="http//www.rdml.com"behavior=""content-role=""content-title=""role=""title=""show="new"actuate="user"></link></linkset><documentation><macro_description>Addsalineshowingtheminimumormaximum,accordingtotheparameters</macro_description><help_page>NoHelpPageiscurrentlyavailable</help_page></documentation></macro_header><macro_code><code>IF(ichoice=0,SORT(A,0),IF(ichoice=1,SORT(A,1),A))</code><instructions></instructions><gui><comp_rpanelvariable_name="ichoice"intro_label="Selectaparameter"><comp_rbuttonlabel="Ascending"value="0"isDefault="true"icon=""></comp_rbutton><comp_rbuttonlabel="Descending"value="1"isDefault="false"icon=""></comp_rbutton></comp_rpanel></gui><qualifiers></qualifiers><error_handling></error_handling><testing></testing></macro_code><macro_references><macrodocs></macrodocs><datadocs></datadocs></macro_references></macrodoc>附录FMSExcelVisualBasic例程用于将"attributevaluecolumns"加到数据表PrivateSubUserForm_Initialize()cmdOK.SetFocustxtChartTitle.Text=""txtYAxisTitle.Text=""cboFormat.AddItem("#,##0;(#,##0)")cboFormat.AddItem("#,##0.00;(#,##0.00)")cboFormat.AddItem("0.00%;(0.00%)")cboFormat.ListIndex=0txtFootnote.Text="Source"DimNodeXAsNodeSetNodeR=treeUnit.Nodes.Add(,,"r","SelectOne(Defaultisblank)")'CurrencySetNodeA=treeUnit.Nodes.Add("r",tvwChild,"c","Currency")SetNodes=treeUnit.Nodes.Add("c",tvwChild,"dus","$US")SetNodeX=treeUnit.Nodes.Add("c",tvwChild,"puk","PoundsUK")SetNodeX=treeUnit.Nodes.Add("c",tvwChild,"yjp","YenJapanese")'LengthSetNodeX=treeUnit.Nodes.Add("r",tvwChild,"l","Length")SetNodeX=treeUnit.Nodes.Add("1",tvwChild,"Feet","Feet")SetNodeX=treeUnit.Nodes.Add("1",tvwChild,"Meters","Meters")'AreaSetNodeX=treeUnit.Nodes.Add("r",tvwChild,"a","Area")SetNodeX=treeUnit.Nodes.Add("a",tvwChild,"SqFeet","SquareFeet")SetNodeX=treeUnit.Nodes.Add("a",tvwChild,"SqMeters","SquareMeters")'treeformattingNodeA.EnsureVisible'MagnitudeComboBoxcboMagnitude.AddItem("As-Is")cboMagnitude.AddItem("Thousands")cboMagnitude.AddItem("Millions")cboMagnitude.AddItem("Billions")cboMagnitude.ListIndex=0EndSubPrivateSubcmdCancel_Click()EndEndSubPrivateSubcmdOK_Click()rcount=Selection.Rows.Count'li_IDSelection.EntireColumn.InsertActiveCell.SelectActiveCell.FormulaR1C1="li_ID"ActiveCell.Offset(1,0).Range("A1").SelectActiveCell.FormulaR1C1="1"ActiveCell.Offset(1,0).Range("A1").SelectActiveCell.FormulaR1C1="=R[-1]C+1"ActiveCell.SelectSelection.Copyr="A1A"&(rcount-3)ActiveCell.Offset(1,0).Range(r).SelectActiveSheet.PasteApplication.CutCopyMode=False'li_legendActiveCell.Offset(-3,1).Range("A1").SelectActiveCell.FormulaR1C1="li_legend"'li_titleActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_title"ActiveCell.Offset(1,0).Range("A1").SelectActiveCell.FormulaR1C1=txtChartTitle.TextActiveCell.SelectSelection.Copyr="A1A"&(rcount-2)ActiveCell.Offset(1,0).Range(r).SelectActiveSheet.PasteApplication.CutCopyMode=False'li_catActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_cat"'y_axis_titleActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="y_axis_title"ActiveCell.Offset(1,0).Range("A1").SelectActiveCell.FormulaR1C1=txtYAxisTitle.TextActiveCell.SelectSelection.Copyr="A1A"&(rcount-2)Selection.ColumnWidth=8ActiveCell.Offset(1,0).Range(r).SelectActiveSheet.PasteApplication.CutCopyMode=False'levelActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="level"ActiveCell.Offset(1,0).Range("A1").SelectActiveCell.FormulaR1C1="1"ActiveCell.SelectSelection.Copyr="A1A"&(rcount-2)Selection.ColumnWidth=8ActiveCell.Offset(1,0).Range(r).SelectActiveSheet.PasteApplication.CutCopyMode=False'formatActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="format"ActiveCell.Offset(1,0).Range("A1").SelectActiveCell.FormulaR1C1=cboFormat.valueActiveCell.SelectSelection.Copyr="A1A"&(rcount-2)ActiveCell.Offset(1,0).Range(r).SelectActiveSheet.PasteApplication.CutCopyMode=False'relationActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="relation"ActiveCell.Offset(1,0).Range("A1").SelectActiveCell.FormulaR1C1="Parent"ActiveCell.SelectSelection.Copyr="A1A"&(rcount-2)ActiveCell.Offset(1,0).Range(r).SelectActiveSheet.PasteApplication.CutCopyMode=False'li_notesActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_notes"ActiveCell.Offset(1,0).Range("A1").SelectActiveCell.FormulaR1C1=txtFootnote.TextActiveCell.SelectSelection.Copyr="A1A"&(rcount-2)Selection.ColumnWidth=8ActiveGell.Offset(1,0).Range(r).SelectActiveSheet.PasteApplication.CutCopyMode=False'li_descActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_desc"'li_precActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_prec"'li_unitActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_unit"ActiveCell.Offset(1,0).Range("A1").Selectu=""OnErrorResumeNextu=treeUnit.SelectedItem.TextActiveCell.FormulaR1C1=uActiveCell.SelectSelection.Copyr="A1A"&(rcount-2)ActiveCell.Offset(1,0).Range(r).SelectActiveSheet.PasteApplication.CutCopyMode=False'li_mag'firstcalculatethevaluetoputinIf(StrComp(cboMagnitude.value,"As-Is")=0)Thenm=0EndIfIf(StrComp(cboMagnitude.value,"Thousands")=0)Thenm=3EndIfIf(StrComp(cboMagnitude.value,"Millions")=0)Thenm=6EndIfIf(StrComp(cboMagnitude.value,"Billions")=0)Thenm=9EndIfActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_mag"ActiveCell.Offset(1,0).Range("A1").SelectActiveCell.FormulaR1C1=mActiveCell.SelectSelection.Copyr="A1A"&(rcount-2)ActiveCell.Offset(1,0).Range(r).SelectActiveShect.PasteApplication.CutCopyMode=False'li_modActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveGell.SelectActiveCell.FormulaR1C1="li_mod"'li_measureActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_measure"'li_scaleActiveCell.Offset(0,1).Golumns("AA").EntireGolumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_scale"'li_adjustmentActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_adjustment"'li_aggregationActiveCell.Offset(0,1).Columns("AA").EntireColumn.SelectSelection.InsertShift=xlToRightActiveCell.SelectActiveCell.FormulaR1C1="li_aggregation"EndEndSub附录GMSExcelVisualBasic例程,从电子表格数据表创建加标签文档PrivateSubFramel_Click()EndSubPrivateSubUserForm_Initialize()cmdOK.SetFocusRefEdit_data.value="Sheetl!$A$1$AB$51"txtDefaultFile.Text="D\defaultl.rdm"txtOutputDir.Text="D\"txtOutputFile.Text="out.rdm"cboLineItemType.AddItem("TimeSeries")cboLineItemType.AddItem("Category")cboLineItemType.AddItem("XYPlot")cboLineItemType.ListIndex=0cbNonFileDefaults.value=FalseEndSubPrivateSubcmdCancel_Click()EndEndSubPrivateSubcmdOK_Click()DimbuffAsStringbuff=createIntrobuff=buff&createHeaderbuff=buff&createLISetbuff=buff&createLineItemsbuff=buff&"</line_item_set>"&Chr(10)buff=buff&createEndingreplaceAttributebuff,"rdmldoc_header","rdmldoc_ID",txtOutputFile.valuereplaceAttributebuff,"rdmldoc_header","doc_title",txtDocTitle.valuereplaceAttributebuff,"line_item_set","line_item_set_type",cboLineItemType.SelTextreplaceAttributebuff,"data_x","x_title",txtXAxisTitle.valuefillXDatabuffCreateFile(buff)EndEndSubPrivateSubcmdBrowseDefault_Click()CommonDialog1.ShowOpentxtDefaultFile.Text=CommonDialog1.FilenameEndSubPrivateSubcmdBrowseOutputDir_Click()CommonDialog1.ShowOpentxtOutputFile.Text=CommonDialog1.FilenameEndSubPrivateSubUserForm_Click()EndSubPrivateSubgetConfiguration()EndSubPrivateFunctioncreateHeader()'buffwillbethebufferthatcollectsthestringDimbuffAsString'IfuserwantstheprogramtocreateadefaultIfcbNonFileDefaults.value=TrueThenbuff=buff&defHeaderEndIf'Orgetthedefaultheadervaluesfromafilebuff=createDefHeader'returncreateHeader=buffEndFunctionPrivateFunctioncreateDefHeader()'DeclarationsDimhAsStringDimwholefileAsString'openthedefaultfileDimDef_fileAsStringDef_file=txtDefaultFile.TextOpenDef_fileForInputAs#2wholefile=Input$(LOF(2),2)Close#2'puttherdmldoc_headerintoastringh=getElementByTagName(wholefile,"rdmldoc_header")createDefHeader=hEndFunctionPrivateFunctioncreateLISet()'DeclarationsDimhAsStringDimwholefileAsString'openthedefaultfileDimDef_fileAsStringDef_file=txtDefaultFile.TextOpenDef_fileForInputAs#2wholefile=Input$(LOF(2),2)Close#2'putthethelineitemsetoveralltagsintoastringh=getOpeningElementTag(wholefile,"line_item_set")h=h&getElementByTagName(wholefile,"data_x")h=h&getElementByTagName(wholefile,"li_class_set")h=h&getElementByTagName(wholefile,"linkset")createLISet=hEndFunctionPublicFunctiongetElementByTagName(strAsString,elAsString)startPos=InStr(1,str,"<"&el,1)endPos=InStr(1,str,"</"&el,1)element=Mid(str,startPos,endPos-startPos+Len(el)+4)getElementByTagName=elementEndFunctionPublicFunctiongetOpeningElementTag(strAsString,elAsString)startPos=InStr(1,str,"<"&el,1)endPos=InStr(startPos,str,">",1)element=Mid(str,startPos,endPos-startPos+5)getOpeningElementTag=elementEndFunctionPrivateSubCreateFile(buff)DimOutfileAsStringOutfile=txtOutputDir.Text&txtOutputFile.TextOpenOutfileForOutputAs#1Print#1,buffClose#1EndSubPrivateFunctioncreateIntro()buff=""'HeaderInformationbuff=buff&"<?.xmlversion="&Chr(34)&"1.0"&Chr(34)buff=buff&"encoding="&Chr(34)&"UTF-8"&Chr(34)buff=buff&"standalone="&Chr(34)&"no"&Chr(34)buff=buff&"?>"&Chr(10)'DTDDeclarationbuff=buff&"<!DOCTYPErdmldocPUBLIC"buff=buff&Chr(34)&"-//.."&Chr(34)&""buff=buff&Chr(34)&"RDML1.dtd"&Chr(34)buff=buff&">"&Chr(10)'beginrdmldoctagbuff=buff&"<rdmldoc>"&Chr(10)'returncreateIntro=buffEndFunctionPrivateFunctioncreateEnding()buff=""buff=buff&"</rdmldoc>"&Chr(10)'returncreateEnding=buffEndFunctionPrivateFunctiondefHeader()buff=""'returndefHeader=buffEndFunctionPrivateFunctioncreateLineItems()DimdataAsRanget=RefEdit_data.valuecreateLineItems=fillLineItems(Range(t),cboLineItemType.value)EndFunction'-----------------------------------------------------------'ProcedureFill_line_item()'PurposePreparetheline_itemelement'Thiselementcontainsinformationabouttheline_item'FromDTD'<!ELEMENTline_item(data_x?,data_y,li_class_set?,analysis?,'link_set?,note_set?)>'<!ATTLISTline_item'li_IDCDATA#REQUIRED'li_legendCDATA#REQUIRED'li_titleCDATA#REQUIRED'li_tableCDATA#IMPLIED'y_axis_titleCDATA#REQUIRED'levelCDATA#REQUIRED'formatCDATA#REQUIRED'relationCDATA#REQUIRED'li_notesCDATA#REQUIRED'li_descCDATA#REQUIRED'li_precCDATA#REQUIRED'li_unitCDATA#REQUIRED'li_magCDATA#REQUIRED'li_modCDATA#REQUIRED'li_measureCDATA#REQUIRED'li_scaleCDATA#REQUIRED'li_adjustmentCDATA#REQUIRED>'--------------------------------------------PublicFunctionfillLineItems(dataAsRange,litypeAsString)'DeclarationsDimJ,KAsIntegerDimMaxAsInteger'IfthisisanXYPlot,usetheotherroutineIflitype="XYPlot"Then'Fill_line_item_xyElse'InitializationsK=1buff=""NumLI=data.Rows.Count'CyclethroughallthelineitemsForN=2ToNumLI'Insertopeningtagbuff=buff&"<line_item"&Chr(10)'InserttheAttributesaddAttributebuff,"li_ID",data.Cells(N,1),6,0addAttributebuff,"li_legend",data.Cells(N,2),6,0addAttributebuff,"li_title",data.Cells(N,3),6,0addAttributebuff,"li_cat",data.Cells(N,4),6,0addAttributebuff,"y_axis_title",data.Cells(N,5),6,0addAttributebuff,"level",data.Cells(N,6),6,0addAttributebuff,"format",data.Cells(N,7),6,0addAttributebuff,"relation",data.Cells(N,8),6,0addAttributebuff,"li_notes",data.Cells(N,9),6,0addAttributebuff,"li_desc",data.Cells(N,10),6,0addAttributebuff,"li_prec",data.Cells(N,11),6,0addAttributebuff,"li_unit",data.Cells(N,12),6,0addAttributebuff,"li_mag",data.Cells(N,13),6,0addAttributebuff,"li_mod",data.Cells(N,14),6,0addAttributebuff,"li_measure",data.Cells(N,15),6,0addAttributebuff,"li_scale",data.Cells(N,16),6,0addAttributebuff,"li_adjustment",data.Cells(N,17),6,1'Fillthebodyofthetagwithacomma-delimitedstringofthey-datanumbersbuff=buff&"<data_y>"&Chr(10)MaxLI=NumLI-2MaxDP=data.Columns.Count-17ForK=1ToMaxDPbuff=buff&data.Cells(N,18+K)&","If(KMod10)=0Thenbuff=buff&Cbr(10)EndIfNextKbuff=buff&Chr(10)&"</data_y>"&Chr(10)'InsertELEMENTanalysis'InsertELEMENTli_class_set'InsertELEMENT'linkset''CallFillTag("linkset")'InsertELEMENTnote_set'Insertclosingtagforthatlineitembuff=buff&Chr(10)&"</line_item>"&Chr(10)'Every10lineitems,flushthebuffer'IfNMod5=0Then'CallSaveToFile(buff)'EndIfNextN'ClosesthetestforXYPlotatbeginningofroutineEndIffillLineItems=buffEndFunction'-----------------------------------------------'ProcedureaddAttribute(name,value)''PurposeAddsanattributelineto"buff"''-----------------------------------------------PublicSubaddAttribute(buff,name,value,indent,last)'BuildtheindentationDimstrIndentAsStringstrIndent=""ForJ=1ToindentstrIndent=strIndent&""NextJ'Buildthestringbuff=buff&strIndent&name&"="&Chr(34)&value&Chr(34)'Addanending'>'tagif"last"is1;elsesimpleaddacarriagereturnIflast=1Thenbuff=buff&">"&Chr(10)Elsebuff=buff&Chr(10)EndIfEndSubPrivateSubreplaceAttribute(fAsString,elAsString,attAsString,valAsString)f=Replace(f,att&"="&Chr(34)&Chr(34),att&"="&Chr(34)&val&Chr(34))EndSubPrivateSubfillXData(fAsString)'buildthestringofXvalues'DimdataAsRangeDimvAsStringt=RefEdit_data.valuev=Chr(10)&Range(t).Cells(1,19)ForJ=20ToRange(t).Columns.Countv=v&","&Range(t).Cells(1,J)NextJv=v&Chr(10)'replacethecurrentxdataelementtextf=Replace(f,"></data_x>",">"&v&"</data_x>")EndSub权利要求1.一种数据处理系统中的方法,包括如下步骤接收包含数值的文档;接收对数值特征的指示,特征包括单位和数量级;和将所接收的指示作为与数值关联的标签加入到文档中,以创建标记文档。2.如权利要求1所述的方法,进一步包括如下步骤显示所述标记文档。3.如权利要求2所述的方法,进一步包括如下步骤使用与数值关联的标签操作标记文档的显示。4.如权利要求3所述的方法,进一步包括如下步骤将所述显示上的标记文档与带表示兼容特征的标签的第二标记文档合并。5.如权利要求1所述的方法,其中,所述特征进一步包括标度。6.如权利要求1所述的方法,其中,所述特征进一步包括修饰符。7.如权利要求1所述的方法,其中,所述特征进一步包括测度。8.如权利要求1所述的方法,其中,所述特征进一步包括调整。9.如权利要求1所述的方法,其中,所述特征进一步包括数值集类型。10.如权利要求9所述的方法,其中,所述集类型至少为时间序列、分类和x-y图中的一个。11.如权利要求1所述的方法,其中,所述特征进一步包括数值类类型。12.如权利要求1所述的方法,其中,所述特征进一步包括到第二标记文档的链接。13.一种数据处理系统中的方法,包括如下步骤接收第一标记文档和第二标记文档,第一标记文档和第二标记文档均包含数值和反映数值特征的标签;使用标签,将第一标记文档和第二标记文档自动组合为单个数据集;和显示所述单个数据集。14.如权利要求13所述的方法,其中,自动组合步骤进一步包括如下步骤解决第一标记文档和第二标记文档特征之间的冲突。15.如权利要求13所述的方法,其中,显示步骤进一步包括如下步骤使用反映数值特征的标签,操作单个数据集的显示。16.如权利要求13所述的方法,其中,所述特征包括数量级、标度、修饰符、单位和测度中的至少一个,并且所述操作步骤包括如下步骤使用反映数量级、标度、修饰符、单位和测度数值特征中至少一个的标签,操作单个数据集的显示。17.如权利要求13所述的方法,其中,所述特征包括数量级,并且所述操作步骤包括如下步骤使用反映数值数量级的标签,操作单个数据集的显示。18.如权利要求13所述的方法,其中,所述特征包括标度,并且所述操作步骤包括如下步骤使用反映数值标度的标签,操作单个数据集的显示。19.如权利要求13所述的方法,其中,所述特征包括修饰符,并且所述操作步骤包括如下步骤使用反映数值修饰符的标签,操作单个数据集的显示。20.如权利要求13所述的方法,其中,所述特征包括单位,并且所述操作步骤包括如下步骤使用反映数值单位的标签,操作单个数据集的显示。21.如权利要求13所述的方法,其中,所述特征包括测度,并且所述操作步骤包括如下步骤使用反映数值测度的标签,操作单个数据集的显示。22.一种数据处理系统中的方法,包括如下步骤接收具有数值集和表示数值特征的标签的标记文档;确定对数值集的变换以反映新特征;访问数值集的多个标签,多个表示数量级、标度、修饰符、单位和测度的标签;确定数量级、标度、修饰符、单位和测度标签的转换因子,以完成向新特征的变换;和将数值集乘以所确定的转换因子,以变换数值集来反映新特征。23.如权利要求22所述的方法,进一步包括如下步骤显示经过变换的数值集。24.一种数据处理系统中的方法,包括如下步骤接收对数值的请求,该请求指示数值的至少一个特征;接收第一标记文档和第二标记文档,第一标记文档和第二标记文档均包含数值和反映数值特征的标签,至少一个标签具有所请求数值的所指示特征;通过解决第一标记文档和第二标记文档特征之间的冲突,将第一标记文档和第二标记文档自动组合为单个数据集;显示单个数据集;和使用反映数值特征的标签,操作单个数据集的显示。25.一种数据处理系统包括永久性存储设备,带有第一标记文档和第二标记文档,第一标记文档和第二标记文档均包含数值和反映数值特征的标签;存储器,带有一个程序,该程序接收第一标记文档和第二标记文档,并且使用标签将第一标记文档和第二标记文档自动组合为单个数据集;和处理器,运行所述程序。26.如权利要求25所述的数据处理系统,其中,永久性存储设备进一步包括数据库,并且从存储在数据库中的信息创建至少一个标记文档。27.如权利要求25所述的数据处理系统,其中,所述标记语言遵循可扩展标记语言版本1.0。28.如权利要求25所述的数据处理系统,进一步包括显示器,其中,所述程序指示显示器在图表视图上显示单个数据集。29.如权利要求25所述的数据处理系统,进一步包括显示器,其中,所述程序指示显示器在树视图上显示单个数据集。30.如权利要求25所述的数据处理系统,进一步包括显示器,其中,所述程序指示显示器在电子表格视图上显示单个数据集。31.如权利要求25所述的数据处理系统,进一步包括显示器,其中,所述程序指示显示器在脚注视图上显示单个数据集。32.一种计算机可读介质,包含用于控制数据处理系统,以执行包括如下步骤的方法的指令接收包含数值的文档,特征包括单位和数量级;接收对数值特征的指示;和将所接收的指示作为与数值关联的标签加入到文档中,以创建标记文档。33.如权利要求32所述的计算机可读介质,其中,所述方法进一步包括如下步骤显示所述标记文档。34.如权利要求32所述的计算机可读介质,其中,所述方法进一步包括如下步骤使用与数值关联的标签操作标记文档的显示。35.如权利要求33所述的计算机可读介质,其中,所述方法进一步包括如下步骤将显示的标记文档与带表示兼容特征的标签的第二标记文档合并。36.如权利要求32所述的计算机可读介质,其中,所述特征进一步包括标度。37.如权利要求32所述的计算机可读介质,其中,所述特征进一步包括修饰符。38.如权利要求32所述的计算机可读介质,其中,所述特征进一步包括测度。39.如权利要求32所述的计算机可读介质,其中,所述特征进一步包括调整。40.一种计算机可读介质,包含用于控制数据处理系统的指令,以执行包括如下步骤的方法接收第一标记文档和第二标记文档,第一标记文档和第二标记文档均包含数值和反映数值特征的标签;使用标签,将第一标记文档和第二标记文档自动组合为单个数据集;和显示单个数据集。41.如权利要求40所述的计算机可读介质,其中,所述自动组合步骤进一步包括如下步骤解决第一标记文档和第二标记文档特征之间的冲突。42.如权利要求40所述的计算机可读介质,其中,所述显示步骤进一步包括如下步骤使用反映数值特征的标签,操作单个数据集的显示。43.如权利要求40所述的计算机可读介质,其中,所述特征包括数量级、标度、修饰符、单位和测度,并且所述操作步骤包括如下步骤使用反映数量级、标度、修饰符、单位和测度数值特征的标签,操作单个数据集的显示。44.如权利要求40所述的计算机可读介质,其中,所述特征包括数量级,并且所述操作步骤包括如下步骤使用反映数值数量级特征的标签,操作单个数据集的显示。45.如权利要求40所述的计算机可读介质,其中,所述特征包括标度,并且所述操作步骤包括如下步骤使用反映数值标度特征的标签,操作单个数据集的显示。46.如权利要求40所述的计算机可读介质,其中,所述特征包括修饰符,并且所述操作步骤包括如下步骤使用反映数值修饰符特征的标签,操作单个数据集的显示。47.如权利要求40所述的计算机可读介质,其中,所述特征包括单位,并且操作步骤包括如下步骤使用反映数值单位特征的标签,操作单个数据集的显示。48.如权利要求40所述的计算机可读介质,其中,所述特征包括测度,并且所述操作步骤包括如下步骤使用反映数值测度特征的标签,操作单个数据集的显示。49.一种计算机可读介质,包含用于控制数据处理系统,以执行包括如下步骤的方法的指令接收具有数值集和表示数值特征的标签的标记文档;确定对数值集的变换以反映新特征;访问数值集的多个标签,多个表示数量级、标度、修饰符、单位和测度的标签;确定数量级、标度、修饰符、单位和测度标签的转换因子,以完成向新特征的变换;和将数值集乘以所确定的转换因子,以变换数值集来反映新特征。50.如权利要求40所述的计算机可读介质,进一步包括如下步骤显示经过变换的数值集。51.一种数据处理系统,包括接收第一标记文档和第二标记文档的装置,第一标记文档和第二标记文档均包含数值和反映数值特征的标签;使用标签将第一标记文档和第二标记文档自动组合为单个数据集的装置;显示单个数据集的装置。52.一种数据处理系统中的方法,包括如下步骤接收包含数值的文档;接收对数值特征的指示,该特征指示格式和语义;和将所接收的指示作为与数值关联的标签加入到文档中,以创建标记文档。53.一种数据处理系统中的方法,包括如下步骤接收包含数值的文档;接收对数值特征的指示,该特征指示结构和语义;和将所接收的指示作为与数值关联的标签加入到文档中,以创建标记文档。54.一种数据处理系统中的方法,包括如下步骤接收包含数值的文档;接收对数值特征的指示,该特征指示格式和值;和将所接收的指示作为与数值关联的标签加入到文档中,以创建标记文档。55.一种数据处理系统中的方法,包括如下步骤接收包含数值的文档;接收对数值特征的指示,该特征指示结构和值;和将所接收的指示作为与数值关联的标签加入到文档中,以创建标记文档。56.一种数据处理系统中的方法,包括如下步骤接收包含数值的文档;接收对数值特征的指示,该特征指示结构和起源;和将所接收的指示作为与数值关联的标签加入到文档中,以创建标记文档。57.一种数据处理系统中的方法,包括如下步骤接收包含数值的文档;接收对数值特征的指示,该特征指示格式和起源;和将所接收的指示作为与数值关联的标签加入到文档中,以创建标记文档。58.一种数据处理系统中的方法,包括如下步骤接收包含数值的文档;接收对数值特征的指示,该特征指示格式、起源、结构、值和语义;和将所接收的指示作为与数值关联的标签加入到文档中,以创建标记文档。59.一种数据处理系统,包括第一计算机,包括带标记文档的存储设备;第二计算机,包括存储器,带有一个程序,提取标记文档,并且在电子表格中显示标记文档的内容;和处理器,用于运行程序;和网络,用于第一计算机和第二计算机之间的互连。60.如权利要求59所述的数据处理系统,其中,所述网络是因特网。61.如权利要求59所述的数据处理系统,其中,所述程序允许用户在网络上搜索其它标记文档。62.如权利要求59所述的数据处理系统,其中,所述第二计算机进一步包括在图表视图中显示标记文档内容的显示器。63.如权利要求59所述的数据处理系统,其中,所述第二计算机进一步包括在树视图中显示标记文档内容的显示器。64.如权利要求59所述的数据处理系统,其中,所述第二计算机进一步包括在脚注视图中显示标记文档内容的显示器。65.一种用文档和程序编码的计算机可读介质,所述文档包括数值和反映数值特征的标签,特征包括单位和数量级;并且所述程序包括读取数值和标签并以由特征指定的方式显示数值的指令。66.一种带有程序的数据处理系统中的方法,该方法包括由程序执行的如下步骤从相对数据处理系统的远端场所接收标记文档;和在电子表格中显示标记文档内容。67.一种具有显示图表的显示器的数据处理系统中的方法,该方法包括如下步骤接收带表示数值特征的标签的数值序列;在图表上显示数值序列;根据至少一个标签,自动确定数值的描述性文本部分;和在图表上显示所确定的描述性文本部分。68.如权利要求67所述的方法,其中,所述描述性文本部分为标题。69.如权利要求68所述的方法,进一步包括如下步骤接收对数值序列进行变换的指示;自动确定新标题,以响应所指示变换;和在图表上显示新标题。70.如权利要求68所述的方法,进一步包括如下步骤接收要与第一数值序列一起显示在图表上的第二数值序列;当第二数值序列与第一数值序列一起显示在图表上时,自动确定图表的新标题;在所述图表上显示新标题。71.如权利要求68所述的方法,其中,所述标题是图表标题。72.如权利要求68所述的方法,其中,所述标题是轴标题。73.如权利要求72所述的方法,其中,所述标题是x-轴标题。74.如权利要求72所述的方法,其中,所述标题是y-轴标题。75.如权利要求67所述的方法,其中,所述描述性文本部分是轴标。76.如权利要求75所述的方法,进一步包括如下步骤接收对数值序列进行变换的指示;自动确定新轴标,以响应所指示变换;和在图表上显示新轴标。77.如权利要求75所述的方法,其中,所述轴标是x-轴标。78.如权利要求75所述的方法,其中,所述轴标是y-轴标。79.一种具有显示图表的显示器的数据处理系统中的方法,该方法包括如下步骤接收带有表示数值特征的第一标签的第一数值序列;在图表上显示第一数值序列,第一数值序列对应于图表上的第一轴;接收要加入图表的第二数值序列,第二数值序列带有表示第二数值序列特征的第二标签;在图表上自动生成第二轴;和在第一序列显示在图表上的同时,在对应于第二轴的图表上显示第二数值序列。80.如权利要求79所述的方法,进一步包括如下步骤根据至少一个第二标签自动格式化图表上的第二轴。81.如权利要求79所述的方法,进一步包括如下步骤当第二数值序列与第一数值序列一起显示在图表上时,自动确定图表的新标题。82.一种具有显示图表的显示器的数据处理系统中的方法,该方法包括如下步骤接收在显示图表上显示数值序列的第一指令,其中数值具有表示数值特征的标签;在图表上显示数值序列以响应所接收的第一指令;和根据至少一个标签自动格式化图表,以响应所接收的指令。83.如权利要求82所述的方法,其中,所接收指令是鼠标事件。84.如权利要求82所述的方法,进一步包括如下步骤接收在显示图表上显示第二数值序列的第二指令,其中数值具有表示第二数值序列特征的标签;和在图表上显示第二数值序列。85.如权利要求84所述的方法,其中,所接收的第二指令用shift键事件和光标键事件表示。86.一种数据处理系统,包括存储器,用于存储用来操作和显示数值数据的图表应用,该存储器具有带表示与数值相关联的文本信息的标签的所选数值序列;显示器,显示带图例的图表,(1)图例显示与所选数值序列相关联的文本信息,并且(2)当文本信息不能在图表的图例上完全显示时,图例将对与数值数据序列相关联的文本信息进行换行和滚动;和处理器,用于运行图表应用。87.一种数据处理系统,包括存储器,用于存储用来操作和显示数值数据的图表应用,和带表示数值特征的标签的数值序列;输入器,用于接收显示数值序列的指令;显示器,显示图表,并且在图表上显示数值序列,以响应所接收的指令;和处理器,用于运行图表应用并且根据至少一个标签自动格式化图表。88.如权利要求87所述的数据处理系统,其中,所接收指令是鼠标事件。89.一种数据处理系统中的方法,包括如下步骤接收具有数值集和表示数值特征的标签的标记文档,该特征包括单位和数量级;根据表示数值特征的标签操作数值集的显示;和在视图上显示数值集。90.如权利要求89所述的方法,其中,显示步骤进一步包括如下步骤在图表视图上显示数值集。91.如权利要求89所述的方法,其中,显示步骤进一步包括如下步骤在电子表格视图上显示数值集。92.如权利要求89所述的方法,其中,显示步骤进一步包括如下步骤在脚注视图上显示数值集。93.如权利要求89所述的方法,其中,显示步骤进一步包括如下步骤在树视图上显示数值集。94.一种计算机可读介质,包含用于控制数据处理系统,以执行一个方法的指令,该数据处理系统具有显示图表的显示器,该方法包括如下步骤接收带表示数值特征的标签的数值序列;在图表上显示数值序列;根据至少一个标签,自动确定数值的描述性文本部分;和在图表上显示所确定的描述性文本部分。95.如权利要求94所述的计算机可读介质,其中,所述描述性文本部分为标题。96.如权利要求95所述的计算机可读介质,进一步包括如下步骤接收对数值序列进行变换的指示;自动确定新标题,以响应所指示变换;和在图表上显示新标题。97.如权利要求95所述的计算机可读介质,进一步包括如下步骤接收要与第一数值序列一起显示在图表上的第二数值序列;当第二数值序列与第一数值序列一起显示在图表上时,自动确定图表的新标题;和在图表上显示新标题。98.如权利要求95所述的计算机可读介质,其中,所述标题是图表标题。99.如权利要求95所述的计算机可读介质,其中,所述标题是轴标题。100.如权利要求99所述的计算机可读介质,其中,所述轴标题是x-轴标题。101.如权利要求99所述的计算机可读介质,其中,所述轴标题是y-轴标题。102.如权利要求94所述的计算机可读介质,其中,描述性文本部分是轴标。103.如权利要求102所述的计算机可读介质,进一步包括如下步骤接收对数值序列进行变换的指示;自动确定新轴标,以响应所指示变换;和显示新轴标。104.如权利要求102所述的计算机可读介质,其中,所述轴标是x-轴标。105.如权利要求102所述的计算机可读介质,其中,所述轴标是y-轴标。106.一种计算机可读介质,包含用于控制数据处理系统,以执行一个方法的指令,该数据处理系统具有显示图表的显示器,该方法包括如下步骤接收带有表示数值特征的第一标签的第一数值序列;在图表上显示第一数值序列,第一数值序列对应于图表上的第一轴;接收要加入到图表的第二数值序列,第二数值序列带有表示第二数值序列特征的第二标签;在图表上自动生成第二轴;和在第一数值序列显示在图表上的同时,在对应于第二轴的图表上显示第二数值序列。107.如权利要求106所述的计算机可读介质,进一步包括如下步骤根据至少一个第二标签自动格式化图表上的第二轴。108.如权利要求106所述的计算机可读介质,进一步包括如下步骤当第二数值序列与第一数值序列一起显示在图表上时,自动确定图表的新标题。109.一种计算机可读介质,包含用于控制数据处理系统,以执行一个方法的指令,该数据处理系统具有显示图表的显示器,该方法包括如下步骤接收在显示器上的图表上显示数值序列的第一指令,其中数值具有表示数值特征的标签;在图表上显示数值序列以响应所接收的第一指令;和根据至少一个标签自动格式化图表,以响应所接收的指令。110.如权利要求109所述的计算机可读介质,其中,所接收指令是鼠标事件。111.如权利要求109所述的计算机可读介质,进一步包括如下步骤接收在显示器上的图表上显示第二数值序列的第二指令,其中数值具有表示第二数值序列特征的标签;和在图表上显示第二数值序列。112.如权利要求109所述的计算机可读介质,其中,所接收的第二指令包括shift键事件和光标键事件。113.一种计算机可读介质,包含用于控制数据处理系统,以执行包括如下步骤的方法的指令接收具有数值集和表示数值特征的标签的标记文档,该特征包括单位和数量级;根据表示数值特征的标签操作数值集的显示;和在视图上显示数值集。114.如权利要求113所述的计算机可读介质,其中,显示步骤进一步包括如下步骤在图表视图上显示数值集。115.如权利要求113所述的计算机可读介质,其中,显示步骤进一步包括如下步骤在电子表格视图上显示数值集。116.如权利要求113所述的计算机可读介质,其中,显示步骤进一步包括如下步骤在脚注视图上显示数值集。117.如权利要求113所述的计算机可读介质,其中,显示步骤进一步包括如下步骤在树视图上显示数值集。118.一种具有显示图表的显示器的数据处理系统,包括接收带表示数值特征的标签的数值序列的装置;在图表上显示数值的装置;根据至少一个标签,自动确定数值的描述性文本部分的装置;和在图表上显示所确定描述性文本部分的装置。119.一种数据处理系统中的方法,包括如下步骤接收第一数值序列;接收第二数值序列;确定第一与第二数值序列之间的关系;和根据所确定的关系显示描述第一与第二数值序列之间关系的图标。120.如权利要求119所述的方法,其中,所述图标描述第一数值序列是第二数值序列的父亲。121.如权利要求119所述的方法,其中,所述图标描述第一数值序列是所述第二数值序列与一个第三数值序列的和。122.如权利要求119所述的方法,其中,所述图标描述第一数值序列是所述第二数值序列与一个第三数值序列的相乘。123.如权利要求119所述的方法,其中,所述图标描述第一数值序列是包括第二数值序列的组的成员。124.如权利要求119所述的方法,其中,所述图标描述第一数值序列是包括第二数值序列的组的根。125.如权利要求119所述的方法,其中,所述图标描述第一数值序列是所述第二数值序列与一个第三数值序列的相除。126.如权利要求119所述的方法,进一步包括如下步骤显示第一数值序列;和显示第二数值序列。127.一种数据处理系统中的方法,包括如下步骤接收数值序列和与该数值序列相关联的链接,该链接具有一个相关超链接列表;显示数值序列及其相关链接;接收激活链接的指令;和显示与链接相关联的超链接列表,以响应所接收的指令。128.如权利要求127所述的方法,进一步包括如下步骤接收激活超链接列表中一个超链接的第二指令;和激活这一个超链接。129.一种具有显示图表的显示器的数据处理系统中的方法,包括如下步骤接收带相关元数据文档化的数值序列;接收选择数字序列的指令;和在显示与数值序列相关联的元数据文档化的同时,在图表上显示数值序列。130.一种计算机可读介质,包含用于控制数据处理系统,以执行包括如下步骤的方法的指令接收第一数值序列;接收第二数值序列;确定第一与第二数值序列之间的关系;和根据所确定的关系显示描述第一与第二数值序列之间关系的图标。131.如权利要求130所述的计算机可读介质,其中,所述图标描述第一数值序列是第二数值序列的父亲。132.如权利要求130所述的计算机可读介质,其中,所述图标描述第一数值序列是所述第二数值序列与一个第三数值序列的和。133.如权利要求130所述的计算机可读介质,其中,所述图标描述第一数值序列是所述第二数值序列与一个第三数值序列的相乘。134.如权利要求130所述的计算机可读介质,其中,所述图标描述第一数值序列是包括第二数值序列的组的成员。135.如权利要求130所述的计算机可读介质,其中,所述图标描述第一数值序列是包括第二数值序列的组的根。136.如权利要求130所述的计算机可读介质,其中,所述图标描述第一数值序列是所述第二数值序列与一个第三数值序列的相除。137.如权利要求130所述的计算机可读介质,进一步包括如下步骤显示第一数值序列;和显示第二数值序列。138.一种计算机可读介质,包含用于控制数据处理系统,以执行包括如下步骤的方法的指令接收数值序列和与该数值序列相关联的链接,该链接具有一个相关超链接列表;显示数值序列及其相关链接;接收激活链接的指令;和显示与链接相关联的超链接列表,以响应所接收的指令。139.如权利要求138所述的计算机可读介质,进一步包括如下步骤接收激活超链接列表中一个超链接的第二指令;和激活这一个超链接。140.一种计算机可读介质,包含用于控制数据处理系统,以执行包括如下步骤的方法的指令接收带相关元数据文档化的数值序列;接收选择数字序列的指令;和在显示与数值序列相关联的元数据文档化的同时,在图表上显示数值序列。141.一种数据处理系统,包括存储器,带有一个程序,该程序用于(1)操作数值,和(2)存储第一和第二数值序列;显示器,用于显示第一和第二数值序列;显示器上的关系图标,描述第一和第二数值序列之间的关系;和处理器,用于运行该程序。142.一种数据处理系统,包括接收第一数值序列的装置;接收第二数值序列的装置;确定第一与第二数值序列之间关系的装置;和根据所确定的关系显示描述第一与第二数值序列之间关系的图标的装置。143.一种处理带标签数值数据的方法,包括接收具有表示数值特征的标签的数值序列;接收定义为执行数值序列操作的宏;和根据标签对数值序列执行由宏定义的操作。144.如权利要求143所述的方法,其中,所述宏包括至少一个算术语句。145.如权利要求144所述的方法,其中,所述至少一个算术语句包括(1)算术运算符、(2)常量和(3)变量中的至少一个。146.如权利要求143所述的方法,其中,所述宏包括至少一个控制流程关键字。147.如权利要求143所述的方法,其中,所述宏包括至少一个从由IF、SWITCH和WHILE构成的组中选择的控制流程关键字。148.如权利要求143所述的方法,其中,所述宏包括由数据查看器支持的内在函数。149.如权利要求148所述的方法,其中,所述内在函数包括从由Average()、Sum()、ChangeCurrencyFormat()和ChangeLanguage()构成的组中选择的函数。150.如权利要求143所述的方法,其中,所述宏包括用户指定函数。151.如权利要求143所述的方法,其中,执行步骤包括产生(1)输出值、(2)树和(3)图表中的至少一个的步骤。152.如权利要求143所述的方法,其中,执行步骤包括更新图表和树中至少一个的描述性文本部分的步骤。153.如权利要求143所述的方法,其中,执行步骤包括创建图表和树视图中至少一个的描述性文本部分的步骤。154.如权利要求143所述的方法,其中,执行步骤包括更新图表和树视图中至少一个的描述性文本部分的步骤。155.如权利要求153所述的方法,其中,描述性文本部分包括标题、图例和标注中的至少一个。156.如权利要求145所述的方法,其中,所述变量包括涉及由数据查看器显示的(1)图表、(2)图和(3)树中至少一个的变量。157.如权利要求145所述的方法,其中,所述变量包括在不同于包含宏的文档的本地文档中引用的变量。158.如权利要求145所述的方法,其中,所述变量包括在不同于包含宏的文档的远端文档中引用的变量。159.如权利要求143所述的方法,其中,所述标签表示数值序列的元数据。160.如权利要求143所述的方法,其中,所述标签表示(1)值、(2)语义、(3)格式、(4)量度、(5)结构和(6)起源中的至少一个。161.如权利要求143所述的方法,其中,接收步骤包括接收表示特征的标签,该标签从由(1)值、(2)语义、(3)格式、(4)量度、(5)结构和(6)起源构成的组中进行选择。162.如权利要求143所述的方法,其中,所述数值序列包括要显示在(1)n-维图表和(2)n-维图中至少一个上的值。163.如权利要求143所述的方法,其中,所述数值序列包括(1)标量(scalar)值序列、(2)元组(tuples)向量和(3)向量的向量中的至少一个。164.如权利要求163所述的方法,其中,执行步骤包括对(1)标量值序列、(2)元组向量和(3)向量的向量中的至少一个执行集操作。165.如权利要求164所述的方法,其中,集操作包括(1)排序操作、(2)过滤操作、(3)选择操作和(4)连接操作中的至少一个。166.如权利要求163所述的方法,其中,执行步骤包括对(1)标量值序列、(2)元组向量和(3)向量的向量中的至少一个执行变换操作,以改变(1)标量值序列、(2)元组向量和(3)向量的向量中的至少一个。167.如权利要求143所述的方法,其中,执行步骤包括将覆盖图、数据点备注(datapointnotes)和脚注中的至少一个加入到图表、报表和图中的至少一个的步骤。168.如权利要求143所述的方法,其中,执行步骤包括将表示回归线和移动平均数中至少一个的附加变量加入到图表、报表和图中的至少一个的步骤。169.如权利要求163所述的方法,其中,执行步骤包括执行“替换每个”操作,用于用(1)标量值序列、(2)元组向量和(3)向量的向量中至少一个的修改版本替换(1)标量值序列、(2)元组向量和(3)向量的向量中的至少一个,并且在图表和图中的至少一个中显示修改版本。170.如权利要求163所述的方法,其中,执行步骤包括执行“替换所有”操作,用于从图表和图中的至少一个删除(1)标量值序列、(2)元组向量和(3)向量的向量中至少一个,并且在图表和图中的至少一个上替换为宏结果。171.如权利要求143所述的方法,其中,接收宏的步骤包括接收包含所解释代码和元数据的宏。172.如权利要求143所述的方法,其中,接收宏的步骤包括接收包含错误处理指令的宏。173.如权利要求143所述的方法,进一步包括如下步骤创建宏。174.如权利要求173所述的方法,其中,创建宏的步骤进一步包括如下步骤指定所需特征;和创建对具有指定特征的数值序列执行操作的宏。175.一种数据处理系统,包括存储器,包括具有定义为执行数值序列操作的宏的数值分析程序和具有表示数值特征的标签的数值序列;处理器,用于运行程序,从而程序使用所表示的特征对数值序列执行由宏定义的操作;和显示器,用于显示操作结果。176.一种计算机可读介质,用于控制数据处理系统以执行处理带标签数值数据的方法,该方法包括如下步骤接收具有表示数值特征的标签的数值序列;接收定义为执行数值序列操作的宏;和根据标签对数值序列执行由宏定义的操作。177.如权利要求176所述的计算机可读介质,其中,所述宏包括至少一个算术语句。178.如权利要求177所述的计算机可读介质,其中,所述至少一个算术语句包括(1)算术运算符、(2)常量和(3)变量中的至少一个。179.如权利要求176所述的计算机可读介质,其中,所述宏包括至少一个控制流程关键字。180.如权利要求176所述的计算机可读介质,其中,所述宏包括至少一个从由IF、SWITCH和WHILE构成的组中选择的控制流程关键字。181.如权利要求176所述的计算机可读介质,其中,所述宏包括由数据查看器支持的内在函数。182.如权利要求181所述的计算机可读介质,其中,所述内在函数包括从由Average()、Sum()、ChangeCurrencyFormat()和ChangeLanguage()构成的组中选择的函数。183.如权利要求176所述的计算机可读介质,其中,所述宏包括用户指定函数。184.如权利要求176所述的计算机可读介质,其中,所述执行步骤包括产生(1)输出值、(2)树和(3)图表中的至少一个的步骤。185.如权利要求176所述的计算机可读介质,其中,所述执行步骤包括更新图表和树中至少一个的描述性文本部分的步骤。186.如权利要求176所述的计算机可读介质,其中,所述执行步骤包括创建图表和树视图中至少一个的描述性文本部分的步骤。187.如权利要求176所述的计算机可读介质,其中,所述执行步骤包括更新图表和树视图中至少一个的描述性文本部分的步骤。188.如权利要求186所述的计算机可读介质,其中,所述描述性文本部分包括标题、图例和标注中的至少一个。189.如权利要求178所述的计算机可读介质,其中,所述变量包括涉及由数据查看器显示的(1)图表、(2)图和(3)树中至少一个的变量。190.如权利要求178所述的计算机可读介质,其中,所述变量包括在不同于包含宏的文档的本地文档中引用的变量。191.如权利要求178所述的计算机可读介质,其中,所述变量包括在不同于包含宏的文档的远端文档中引用的变量。192.如权利要求176所述的计算机可读介质,其中,所述标签表示数值序列的元数据。193.如权利要求176所述的计算机可读介质,其中,所述标签表示(1)值、(2)语义、(3)格式、(4)量度、(5)结构和(6)起源中的至少一个。194.如权利要求176所述的计算机可读介质,其中,所述接收步骤包括接收表示特征的标签,该标签从由(1)值、(2)语义、(3)格式、(4)量度、(5)结构和(6)起源构成的组中进行选择。195.如权利要求176所述的计算机可读介质,其中,所述数值序列包括要显示在(1)n-维图表和(2)n-维图中至少一个上的值。196.如权利要求176所述的计算机可读介质,其中,所述数值序列包括(1)标量值序列、(2)元组向量和(3)向量的向量中的至少一个。197.如权利要求196所述的计算机可读介质,其中,所述执行步骤包括对(1)标量值序列、(2)元组向量和(3)向量的向量中的至少一个执行集操作。198.如权利要求197所述的计算机可读介质,其中,所述集操作包括(1)排序操作、(2)过滤操作、(3)选择操作和(4)连接操作中的至少一个。199.如权利要求196所述的计算机可读介质,其中,执行步骤包括对(1)标量值序列、(2)元组向量和(3)向量的向量中的至少一个执行变换操作,以改变(1)标量值序列、(2)元组向量和(3)向量的向量中的至少一个。200.如权利要求176所述的计算机可读介质,其中,执行步骤包括将覆盖图、数据点备注和脚注中的至少一个加入到图表、报表和图中的至少一个的步骤。201.如权利要求176所述的计算机可读介质,其中,执行步骤包括将表示回归线和移动平均数中至少一个的附加变量加入到图表、报表和图中的至少一个的步骤。202.如权利要求196所述的计算机可读介质,其中,执行步骤包括执行“替换每个”操作,用于用(1)标量值序列、(2)元组向量和(3)向量的向量中至少一个的修改版本替换(1)标量值序列、(2)元组向量和(3)向量的向量中的至少一个,并且在图表和图中的至少一个中显示修改版本。203.如权利要求196所述的计算机可读介质,其中,执行步骤包括执行“替换所有”操作,用于从图表和图中的至少一个删除(1)标量值序列、(2)元组向量和(3)向量的向量中至少一个,并且在图表和图中至少一个上替换为宏结果。204.如权利要求176所述的计算机可读介质,其中,接收宏的步骤包括接收包含所解释代码和元数据的宏。205.如权利要求176所述的计算机可读介质,其中,接收宏的步骤包括接收包含错误处理指令的宏。206.如权利要求176所述的计算机可读介质,进一步包括如下步骤创建宏。207.如权利要求206所述的方法,其中,创建宏的步骤进一步包括如下步骤指定所需特征;和创建对具有指定特征的数值序列执行操作的宏。208.一种具有带标签数值数据的数据处理系统,包括接收具有表示数值特征的标签的数值序列的装置;接收定义为执行数值序列操作的宏的装置;和根据标签对数值序列执行由宏定义的操作的装置。全文摘要方法和系统提供一种称作可重用数据标记语言(ReusableDataMarkupLanguage,“RDML”)的计算机标记语言和一种用于提取、操作和查看可以在本地或通过网络(例如,因特网)存储的RDML格式文档和文件的数据查看器。通常,RDML允许对数字进行浏览和操作,这不同于HTML中的文本和图象,并且通过包括描述附属在数字中的数字含义的属性实现此功能。遵循该标记语言的文档将机器可读的文档化与数字和数据封装在一起,并且允许数据查看器充当web浏览器与电子表格的组合体,以自动读取、解释和操作数字数据。文档编号G06F17/21GK1535429SQ00810054公开日2004年10月6日申请日期2000年5月19日优先权日1999年5月21日发明者拉塞尔·T·戴维斯,拉塞尔T戴维斯申请人:伊纽莫雷特索鲁申斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1