用于从数据库生成xml文档的动态方法

文档序号:6567397阅读:232来源:国知局

专利名称::用于从数据库生成xml文档的动态方法
技术领域
:本发明总的来说涉及由计算机生成的数据库,且更具体地涉及在询问数据库时自动生成采用标记语言XML(可扩展标记语言)类型的文档。
背景技术
:从计算机或通过网络直接生成的数据库已经由许多公司、行政部门以及各种商业组织或其它组织使用了非常长的时间。数据库是在其中可以通过最少可能的冗余度以结构化的方式存储数据的实体。因此,事实上利用数据库的主要优点是,可以同时通过多个不同的用户访问这些数据库。例如,存在包含所有时间表、和全世界范围内的所有航线的航班的预定状态、或所有国际旅馆连锁店报价的数据库。特别是现在互联网允许所有专用网络和公用网络互联,使得旅行社可以访问来自世界任何地方的信息。因此,数据库的概念通常与网络相关联,以便能够结合并共享该信息。为了控制数据以及用户,需要数据库管理系统(DBMS)。DBMS是软件应用程序的组合,这些软件应用程序能够管理数据库,即允许简单的存取数据、授权访问多个用户的信息、以及处理存在于数据库中的数据(输入、删除、修改)。在大多数情况下,根据所谓的关系模型构建数据库,其以表形式组织数据。根据基于组合理论(即,关系代数,其由对关系的形式运算的组合构成)的数学概念处理数据。关系运算使得能够由对其他表的初等运算(例如,组合、相交、或平均差)来建立新的关系(表)。已经广泛釆用查询的结构化语言。以缩写SQL、"结构化查询语言,,公知的是,它同时是数据定义语言以及数据处理和控制语言。数据的定义是管理员的工作。使用SQL语言的大多数人仅使用数据处理语言,它能够使其选择对他们来说感兴趣的数据。从用户的观点来看,用于数据处理语言的最重要的命令是SELECT命令。基于关系代数,其能够对多个关系表执行数据操作以使其对用户可用。随着互联网的超常规发展,以及已经允许共用网络和专用网络的互连,已经通过采用被称为HTTP协议(超文本传输协议)以及通过以Web(环球网)的名称已知的通信系统的发展来标准化数据交换。环球网允许搜索信息,其允许利用超文本或HTML(超文本链接标识语言)访问该梧息及其可视化。该语言能够建立可以由Web浏览器显示的超文本文档。HTML语言是在20世纪80年代采用的用来描述文档及其格式化的以缩写词SGML(标准通用标记语言)已知的更为复杂的标准的专用的、非常简单的版本。SGML语言是仍用于描述文档的逻辑结构而不是其拓朴方面的符号语言。应用的原理是通过标记符对文档的章节、段、序言、导言及其它部分进行类属标记。尽管HTML语言的简单性已经有助于其大范围采用,且在Web开发的开始阶段完全适合,但更多应用需求很快表现出其局限性。由于以不存在进一步开发范围的代价实现HTML的简单性,因此需要很快找到类似于源自HTML标准的提供开发和适应的可能性的语言,即SGML,但避免了后者的复杂性。响应于此的是,通过被委托标准化Web的任务的组织在1996年末提出的新标准,该标准被称为XML(可扩展标记语言)。正如SGML,但无需其复杂性,XML是能够使HTML语言扩展的元语言。特别是,其使得能够定义新的标记符,例如对于文本的更清晰的描述,且其能够使文档完全个性化。XML的成功在于,由于其可扩展性其能够描述任何数据域。它能够构造和建立其所包含的数据的词汇和语法。因此,毫不奇怪的是,自其被创建以用于格式化包含来自数据库(特别是上述关系数据库)的数据的文档之后,XML语言已经被使用。通过SQL查询而获得数据。然而,所获得的数据的使用,及其包含在用于在通过用户的Web浏览器打开的窗口中显示的文档中,可能要求主要的编码工作。在上面已经引用的通过旅行社、用户询问的数据库实例中,显示的个性化所要求的水平可能非常高。事实上,这些旅行社的客户具有非常不同的要求。根据他们是度假者还是商人或女商人,数据及其呈现的选择是非常不同的,以方便这些旅行社中的职员工作,提高其生产率并得到更大的客户满意度。因此,XML文档的自动生成已经引起了这些应用的开发者的特别关注。例如,参考美国专利局(USPTO)授予的申请US6,636,845,其描述了用于从单个SQL查询中生成XML文档的方法,名为"从单个SQL查询中生成一个或多个XML文档"。然而,所描述的方法缺乏灵活性。特别是,它依赖于描述访问数据的静态定义。因此,存在与相应的XML文档中存取的数据类型同样多的定义。
发明内容本发明的主要目的是,提出一种用于从数据库生成XML文档的改进方法。本发明的一个特殊目的是,能够从访问数据库中的数据的动态定义生成XML文档。本发明的另一目的是,通过使用以数据库格式描述的嵌套模板的组合来获得该动态定义。本发明的进一步的目的是,简化和减少将被生成的XML文档的数量,同时保持高的个性化程度。本发明的其他目的、特征和优点对于本领域技术人员在考查以下的描述和附图时将变得很清楚。要理解的是,其他的优点也被包括在内。描述了一种用于自动地生成至少一个XML文档的方法,该XML文档包含从源数据库提取出的数据,所述方法包括以数据库格式定义多个模板;这些模板包含可执行指令。还定义了与每一个模板相关的查询。这些查询用于从源数据库以记录集的形式提取数据。这些模板的指令被执行以生成至少一个包含源自于记录集的数据的XML文档。这些指令包括至少一个调用指令,用于调用其他模板中的任意模板。所述XML文档由包含属性的元素组成。所述方法的特征在于,它包含一个当前元素的概念。所述方法还包括用于创建一个新的元素的指令,这个新元素被分配给当前元素。然后这个新元素又顺次变为当前元素。本方法还包括用于创建一个新属性给当前元素的指令,以及用于关闭当前元素的指令,该指令包括将当前元素的角色再次分配给所述当前元素的父元素。该方法包括文件定义,它使得能够构建所述XML文档的名称、创建变为当前元素的根元素;以及指定哪个模板为根模板。这些参数用来在所述模板调用指令执行时或在所述文件定义被打开且所述根模板被使用时链接各模板。所述模板指令中的每一个指令都被应用于所述记录集中的每一个记录。所述指令是通过XML生成器进行解释的。所述源数据库是关系数据库,并且所述查询是遵守作为SQL已知的结构化查询语言的规则的查询。所述模板、查询、指令、文件定义和参数以表的形式包含在至少一个关系数据库中并且可以包含在源数据库中。本发明的目的、特征和优点将从本发明的实施例的详细描述中变得更加显而易见,其通过以下附图示出,其中图1示出了实施本发明的总体方法。图2描述了XML生成器的定义表的结构。图3描述了涉及基于文件定义内容的文件生成的过程。图4描述了创建目标XML文件的阶段。图5描述了模板的处理。图6描述的模板的指令。图7是本发明的示例性实施例。通过实例给出了附图但并不限制本发明的范围。具体实施例方式图1示出了本发明的实施的总体方法,用于下面作为VISTA100提及的软件应用程序,其目的是通过以可以容易由用户的浏览器解释的形式将其自动格式化来使从源数据库140中提取的信息对于这些远程的用户可用。例如,数据库将包括国际旅馆连锁的报价和预定状况。因此在该实例中,用户是旅行社,其然后可以经由互联网从公用网络或专用网络从世界任何地方访问该信息。如在
背景技术
部分的章节中所讨论的,XML语言最适用于该目的。通过主要Web标准化组织即,W3C("环球网协会")提出的,其已被广泛采用。因此,VISTA是基于以用于显示其内容的XML文件110的形式的文档的生成,由此使搜索的信息对用户可用。为此,应用程序100必须通过语义分析程序(解析器)读取XML文档。解析器是由软件提供商诸如著名的美国微软公司开发和销售的标准工具。在解析器的执行过程中,对目标文件的分析生成对象105,其构成可以通过应用程序用户的浏览器显示的页面。用于生成XML文件的XML生成器120是基于模块或模板术语"模板(template)"被用在关于这些主题的英语技术文献中。以所使用的关系数据库的格式及语言将其存储在XML生成器的定义表1,中。这些模板可以被嵌套以增加其被再次使用的可能性。根据本发明的模板是可以由XML生成器解释并可在其上下文中被再次使用的指令集。根据英语技术术语,模板的上下文应用于一组记录或记录集,即通过向后者发布的特定查询而获得的数据库的局部示图。这些查询符合如前所述的结构化查询语言SQL。根据本发明,以每个都可以访问一组特定记录的对象的形式定义查询并将其存储在数据库135中。查询对象可包含参数。然后所述参数用于修改查询。例如,在列出图书馆中所有书籍的数据库中,查询可以被定义为能够按特定作者的名字来搜索书籍,且因此它包括"作者"参数。对于特定查询,然后作者参数可以由特定作者的名字来代替。将由数据库响应于查询返回的相应记录集将由图书馆中保留的那个作者的书的列表组成。如果XML是将数据分配给用户的最合适的手段,则关系数据库140对于存储与产品有关的数据是理想的。特别是,被很好结构化的数据库的使用保证了信息容易且有效的维护,该信息包含并防止冗余。因此,数据库140是将被包括在对于应用程序100的用户生成的XML文件中的主要数据源。特别是,本发明的方法利用了已经提到的结构化查询语言SQL的使用的优点。以数据库的格式,能够生成目标XML文档的模板的使用并不要求将软件资源分配给用户,此时它们与其浏览器相连接,否则的话,它们就需要该软件资源以直接访问源数据库。这必然增加访问搜索信息所需的时间、阻塞网络并使得所搜索的信息可用性变得非常复杂。事实上,尽管数据库的结构和组织有助于保证其效率并避免冗余,显示给用户的信息满足其它的标准。数据库中的数据结构与用户所要求的数据相匹配同样可以通过XML生成器120在源处被执行,如本发明所推荐的那样,该XML生成器取决于定义表110的模板和相关的查询定义135,以创建包含足够用户信息的较少数量的目标XML文件110。根据本发明的定义表、模板和查询可被包含在与源数据库"0分开的数据库中,如在图1中示意性示出的那样,但可以同样构成唯一的数据库150的一部分,这是没有问题的。因此,本发明的目的是从由软件应用程序管理的单独的源"0、即关系数据库生成XML文档110,所述软件应用程序构成了实际标准,其中存在许多已知的商业方案,例如那些已知名为"Oracle"、"IBMDB2,,或"MicrosoftAccess",由其相应>^司开发和销售的产品。因此,通过使用已被广泛测试并使用的标准产品来提供数据本身的管理和完整性。因此,通过将用于生成并测试XML文档的规则包括在后者格式的数据库本身中,可以从中得到许多优点。特别是缩短了开发时间。在数据库中的改变和自动重新生成给定应用(诸如VISTA100)的所有XML文件,因此比更新和校正特定代码花费的时间更少。此外,这可以通过专门负责开发应用程序本身(在该实例中的VISTA)的专业人员来直接执行,而特定软件的开发总是要求非常专业的程序人员的昂贵的编码工作。图2描述了XML生成器的"定义表"的结构。每个表包括:表1<table>tableseeoriginaldocumentpage10</column></row><table>利用参数210的文件定义200包括将被应用于数据库以查找适当记录集的特殊查询的定义。文件定义参考利用指令230的模板,当指令是调用另一模板225的类型时,然后参数必须被传到所调用的模板240。上述表中提及的XML文档的元素和属性构成XML语言的整体部分且是本领域技术人员已知的概念。通常,XML文档将包括由分别以〈xxxElement〉和〈/Element)的形式开始和结束的标"i己符限定的一个或多个元素。然后每个元素可以具有一种或多种属性,每种属性具有在模板指令中指定的名称和值。图3描述了基于上述"文件定义,,的内容生成文件并构成"XML生成器的定义表,,的一部分的过程。在打开用于该定义的每个记录314的文件定义300之后,测试320是否存在相关的"查询定义"。如果是这种情况322,则执行相应的查询。然后打开从数据库获得的"记录集,,330。存在与记录集中记录的文件一样多的所创建的目标文件360。记录集中的所有记录被滚动显示350。当最后一个记录已经被处理时334,处理转到文件定义370的下一个记录。当检测相关查询定义是否存在时320,如果回答是否定的324,则在进行到文件定义的下一个记录之前创建一个单独的目标文件380。如果不存在其它记录,则处理过程结束312。在图4中描述了"目标文件"创建阶段380和用于创建"目标XML文件"的类似阶段360。首先目标文件的创建包括构建400文件名称。如前所述,如果相同的"文件定义,,被用于创建多个目标文件,则从下述连接中构造名称-源自文件定义的前缀-源自记录集中的当前记录的动态部分—源自文件定义的后缀然而,如果不存在相关的查询定义,则正如刚刚所示,必须创建一个单独的文件。在这种情况下,仅使用前缀和后缀,不存在动态部分。在该目标XML文档以表示XML文档结构并符合已经提及的由Web标准化组织发布的DOM规范(文档对象模型)的对象的形式被有效创建410。如果根元素出现在文件定义中422,则创建它430。在此后,如果参数存在于文件定义中422,则定位这些参数以便传递到模板444。在图5中更详细地描述了可以是根模板或嵌套模板即,由另一模板调用的模板处理450。通过调用模板(或文件定义)所定义的参数必须与所调用的模板的那些参数相匹配。为此,基于参数定义构建一个临时"参数组,,500。当这一步骤完成时,从"记录集"的当前记录获得适当值。在图5的右面部分中详细示出了阶段500被中止。通过其名称501以及由参数定义的字段找到每个参数502。从"记录集"获得字段值503,其能够固定参数值504。只要存在将被处理的参数505就重复该处理506。然后找到被调用的模板510。相关的"查询定义,,的参数必须与在执行数据库之前调用模板的那些参数相匹配,以荻得适当的"记录集,,520。这些参数完全应用于在"记录集"中的每个记录530以及每个指令540,直到不再存在待处理的任何指令或"记录集,,中的记录550。图6更详细地描述了指令处理阶段。当执行指令时,系统保留当前元素概念。它正是作为下面所述每个指令的目标的这个元素。如果不存在当前元素,则使用模板的根元素或第一元素。指令具有以下多种类型元素的创建600、属性的创建610、元素的关闭620以及调用模板630。在前两种情况中,首先必须得到620在当前"记录集,,中指定的字段值。在最后一种情况下,首先必须得到632需要被传递到所调用的模板的参数。因此,指令可能必须创建一个携带如前所述构建的名称的XML元素600。然后新元素被分配给当前元素605,其因此成为新的子元素的父亲。可选地,可将一个值插入到新元素中且该值必须与"记录集"中指定的字段相对应。指令可能必须将属性分配610给XML元素。为当前元素创建属性615。如上所述,可选地,一个值可被固定在该属性上,且该值必须与记录集的指定字段相对应。指令可以关闭元素620,其等同于将当前元素的角色再分配给父元素625。最后,指令可以由先前指定的名称调用模板630。为了处理所调用的模板635,参数将被从当前模板的记录集传递到所调用的模板的记录集。图7通过一个具体实例示出了根据本发明用于由关系数据库生成目标XML文件的方法。在该实例中,几乎总是像在要由多国团队在全世界销售的软件产品的开发环境中的情况那样,代码的所有技术术语都是用英语定义的。然而,这将妨碍以下描述的清楚理解。在需要时,术语被理解为或者能容易地被考虑为一系列字母和数字,而没有特定的意义,即使出于显而易见的记忆和实践的原因而尝试赋予它们一些含义。如已经描述的那样,XML文件的创建开始于"文件定义"的打开700,它表现为数据库中的表705的形式。通过包含在该表中的信息,然后能够创建一个XML文件,它具有特定的名称(codesList—CAR.xml),包含第一个空的元素(codesjist)。该元素变成当前的元素。该文件定义包含已经使用的根模板710的名称。上述的模板然后被处理720。第一阶段包括在数据库上执行为模板(CarCodesList)所定义的查询722,以便获得相应的记录集730。模板710的指令,在这个例子中为指令5,被应用于由此获得的记录集中的每个记录。这以先前所创建的当前元素的子元素(列表)的创建724开始。该元素顺次变为当前元素。模板710的下两个指令、即索引2和3,然后被处理。它们用来创建726两个分别对应于一个在模板中指定的字段名的属性(名称、区域)。XML文件728的当前元素(列表)然后包括这些属性。模板710的下一指令、即索引4利用另一模板(CodeListltem),为该模板定义了一个参数715。所调用的模板740也具有一个查询定义(CodeListltem),它使得在进行调用的模板715的参数已经使字段742能够被找到以便有效地执行该查询之后能够得到数据库中的相应的记录集750。所调用的模板以和上面所述类似的方式被处理,以使XML文件更为丰富760。权利要求1.一种用于自动生成(120)至少一个XML文档的方法,该XML文档包括从源数据库(140)所提取的数据,所述数据库包括用于生成所述至少一个XML文档的装置,其中所述装置包括一个利用以所述数据库的格式和语言所定义的表(130、135)的XML生成器(120),所述方法包括在至少一个定义表(130)中定义多个模板(220、225),所述多个模板(220、225)包括由所述XML生成器(120)可执行的指令(230),其中所述可执行的指令(230)包括至少一个调用指令(630),用于调用所述多个模板(220、225)中的任意模板;定义与每个所述模板(220、225)相关的查询(135),其中所述查询用于从所述源数据库(140)中以记录集(730)的形式提取数据;在执行阶段(700)期间执行来自包括在所述至少一个定义表(130)中的文件定义(200)中的所述指令(230),其中所述执行阶段(700)包括由所述多个模板(220、225)中的至少一个模板对所述模板中的至少另一个模板的调用,以便能够生成所述至少一个包含从所述记录集(730)得到的所述数据的XML文档。2.如权利要求1所述的方法,其中所述至少一个XML文档包括能够包含属性(726)的元素(702),所述方法的特征在于,所述执行阶段包括一个用于创建所述元素及其所述属性的阶段。3.如权利要求1或2所述的方法,其中所述文件定义使得能够构建所述XML文档的名称(400);为所述XML文档创建目标文件(410);创建一个根元素(420),所述根元素分配有当前元素的功能;处理一个根模板(710),所述根模板能够调用所述多个模板中的任意一个模板。4.如权利要求3所述的方法,包括至少用于创建所述当前元素的一个新的子元素(600)的指令,该子元素又顺次分配有所述当前元素(605)的功能;用于创建一个新属性(610)的指令,该指令为所述当前元素创建所述新属性;用于关闭(620)所述当前元素的指令,该指令包括将当前元素的功能再分配给所述当前元素的父元素。5.如权利要求3或4所述的方法,包括参数(210、240),所述参数用来在所述模板调用指令执行时或者在所述文件定义被打开且所述根模板被使用时链接所述各模板。6.如上述权利要求之任一项所述的方法,其中所述模板的所述指令中的每一个指令都被应用于所述记录集中的每个记录(530)。7.如权利要求6所述的方法,其中所述指令是通过XML生成器(120)进行解释的。8.如上述权利要求之任一项所述的方法,其中所述源数据库(140)是关系数据库,并且所述查询(135)是遵循作为SQL已知的结构化查询语言的规则的查询。9.一种系统,尤其是XML文档(120)的生成器,所述系统包括适合于实现按照上述权利要求中任一项所述方法的装置。10.—种可通过计算机读取的介质,包括可由所述计算机执行的程序指令,所述程序实现按照权利要求l-8中任一项所述的方法。全文摘要本发明描述了一种用于自动生成XML文档的方法,该XML文档包括从源数据库所提取出的数据。所述方法包括以数据库的格式定义多个模板,这些模板包括可执行的指令。还定义了与每个所述模板相关的查询。这些查询被用于从所述源数据库中以记录集的形式提取数据。模板指令的执行生成至少一个XML文档,它包含来自记录集的数据。通过使用调用指令,模板可以调用任何其它模板,以便创建一个XML文档。本发明借助于从数据库直接操作的嵌套模板,实现了对来自数据库的数据的访问的动态定义。文档编号G06F17/30GK101171582SQ200680015662公开日2008年4月30日申请日期2006年5月5日优先权日2005年5月9日发明者理查德·默兰纳尔申请人:阿玛得斯两合公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1