CN1860439A - 用于高性能模式确认的xml模式的注释自动机编码 - Google Patents
用于高性能模式确认的xml模式的注释自动机编码 Download PDFInfo
- Publication number
- CN1860439A CN1860439A CN 200380101405 CN200380101405A CN1860439A CN 1860439 A CN1860439 A CN 1860439A CN 200380101405 CN200380101405 CN 200380101405 CN 200380101405 A CN200380101405 A CN 200380101405A CN 1860439 A CN1860439 A CN 1860439A
- Authority
- CN
- China
- Prior art keywords
- xml
- token
- annotated
- markup language
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000010200 validation analysis Methods 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 93
- 238000012795 verification Methods 0.000 claims description 45
- 238000013507 mapping Methods 0.000 claims description 24
- 238000012217 deletion Methods 0.000 claims description 9
- 230000037430 deletion Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 description 56
- 238000010586 diagram Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 230000014509 gene expression Effects 0.000 description 4
- 150000001875 compounds Chemical class 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Abstract
一种用于可扩展置标语言(XML)模式确认的方法和系统包括:将XML文档装载到运行时确认引擎上,其中运行时确认引擎包括XML模式确认解析器;将XML模式定义的注释自动机编码(AAE)装载到XML模式确认解析器上;以及通过利用注释自动机编码的XML模式确认解析器,对照XML模式定义,确认XML文档。将每个XML模式定义一次编译为AAE格式,而不是在每次确认XML文档时编译它们,因此,节省大量时间。运行时确认引擎的代码被固定,而且它不根据XML模式定义改变,对于每个XML模式定义也不发生变化,因此,空间开销被降低到最小。在不牺牲性能的情况下,保证确认过程的灵活性。
Description
技术领域
本发明涉及可扩展置标语言(XML)模式,更具体地说,本发明涉及根据XML模式确认XML文档。
背景技术
可扩展置标语言(XML)模式在本技术领域内众所周知。它们允许用户定义复杂结构化XML数据对象,在将数据存储到数据库并在数据库内进行处理时,该复杂结构化XML数据对象有助于广泛使用XML格式。当每一XML文档被提供时,在进行数据存储和处理过程中使用它们之前,必须根据其XML模式定义确认它们,以确保遵循该定义。
按照惯例,主要利用两种方法进行XML模式确认。第一种方法是通用模式确认解析器。在这种方法中,解析器接收XML模式定义和XML文档,作为输入,将XML文档解析为树格式,将XML模式定义解析为模式树格式,然后,遍历该XML文档树,以对照XML模式树校验它。对于许多不同的XML模式,使用同一个通用模式确认解析器。尽管该方法的灵活性在于,它可以对许多不同的XML模式进行确认,但是该方法的性能通常糟糕。
第二种方法是根据特定SML模式定义,产生XML模式确认解析器代码。该XML模式确认解析器代码被编译为可执行代码,该可执行代码用于根据特定XML模式定义确认XML文档。尽管该方法比第一种方法快,但是当存在大量XML模式定义时,存在大量确认解析器,这样产生了空间开销。此外,还不灵活,因为每个XML模式确认解析器只能分别根据特定XML模式进行确认。
因此,需要一种用于进行XML模式确认的改进的方法和系统。该改进的方法和系统应该提供高性能,而且不产生高空间开销。本发明满足了这种需要。
发明内容
一种用于可扩展置标语言(XML)模式确认的方法和系统包括:将XML文档装载到运行时确认引擎上,其中运行时确认引擎包括XML模式确认解析器;将XML模式定义的注释自动机编码(AAE)装载到XML模式确认解析器上;以及通过利用注释自动机编码的XML模式确认解析器,对照XML模式定义,确认XML文档。分别将每个XML模式定义一次编译为AAE格式,而不是在每次确认XML文档时编译它们,因此,节省大量时间。运行时确认引擎的代码被固定,而且它不根据XML模式定义改变,对于每个XML模式定义也不发生变化,因此,空间开销被降低到最小。
在不牺牲性能的情况下,保证确认过程的灵活性。
附图说明
图1示出根据本发明的XML模式确认系统的优选实施例。
图2更详细示出根据本发明的XML模式编译。
图3是示出根据本发明的XML模式编译过程的优选实施例的流程图。
图4示出示例XML模式定义。
图5示出根据本发明在注释树上表示的示例XML模式定义的元素结构分层结构。
图6示出根据本发明的上下文无关文法中的示例XML模式定义的结构。
图7示出根据本发明利用开始标记令牌(token)和结束标记令牌扩增图6所示上下文无关文法。
图8示出根据本发明对示例XML模式定义进行注释自动机编码的注释部分。
图9示出根据本发明示例XML模式定义的自动机编码表的状态迁移图。
图10更详细示出根据本发明的运行时确认引擎。
图11是示出根据本发明利用运行时确认引擎执行的运行时确认过程的优选实施例的流程图。
图12是示出根据本发明处理开始标记名称的流程图。
图13是示出根据本发明处理属性名称的流程图。
图14是示出根据本发明处理结束标记名称的流程图。
图15A-15E示出根据本发明在运行时确认引擎执行的运行时确认过程中堆栈上的内容。
图16示出要确认的示例XML文档。
图17示出XML模式定义的获得类型的例子。
具体实施方式
本发明提供了一种用于XML模式确认的改进的方法和系统。下面的描述用于使本技术领域内的普通技术人员实现和使用本发明,而且针对专利申请及其要求提供下面的说明。对于本技术领域内的技术人员,对优选实施例所做的各种修改是显而易见的,而且,在此说明的一般原理可以应用于其它实施例。因此,本发明无意局限于所说明的实施例,而且本发明遵循符合在此描述的原理和特征的最广泛范围。
引言
根据本发明的改进的方法和系统将XML模式定义(definition)编译为注释自动机编码(AAE,annotated Automaton Encoding)格式,将它存储到盘或者数据库内。一次将XML模式定义编译为AAE格式。在确认XML文档时,将XML文档和AAE格式的正确XML模式定义装载到运行时确认引擎上。运行时(runtime)确认引擎包括:通用(generic)XML解析器和运行时模式确认解析器。运行时确认引擎的代码被固定,而且不根据XML模式定义改变。通用XML解析器执行低级确认,而运行时模式确认解析器对照AAE格式的XML模式定义执行XML文档的高级确认。运行时确认引擎的输出是确认通过或者失败。
为了更具体地描述本发明的特征,请结合下面的讨论参考图1至17。
图1示出根据本发明的XML模式确认系统的优选实施例。该系统包括两组逻辑、XML模式编译(compilation)102和运行时确认引擎104。
XML模式编译102将XML模式定义106作为输入,而提供注释自动机编码(AAE)格式的每个XML模式108作为输出。为了之后容易进行检索,将AAE格式的XML模式定义108存储到盘或者数据库110内。AAE格式包括解析表格式,该解析表通常由超前从左到右(Look Ahead Left to Right)(LAIR(1))解析器生成器获得,但是具有附加注释。注释是元素节点的属性以及元素节点和对特定XML模式定义建立的XML模式树的属性的数据类型约束。下面参考图2至9进一步说明XML模式编译102和AAE格式。
运行时确认引擎104将XML文档112及其AAE格式的相应XML模式定义108作为输入,并提供确认通过或者失败作为输出。下面将参考图10至14进一步说明运行时确认引擎104。
XML模式编译
图2更详细示出根据本发明的XML模式编译102。XML模式编译102包括:XML模式编译器前端202和XML模式编译器后端204。图3是示出根据本发明的XML模式编译过程的优选实施例的流程图。
参考图2和图3,在步骤302,XML模式编译器前端202接收XML模式定义106,作为输入。然后,在步骤304,XML模式编译器前端202产生元素结构分层结构,并使它表示在注释树上。该树的节点是元素节点,而边缘是节点之间的结构关系。注释是元素节点的属性和该元素节点和属性的数据类型约束。下面进一步说明该注释树。
接着,在步骤306,XML模式编译器后端204编码该注释树并产生注释自动机编码。然后,在步骤308,串行化该注释自动机编码,并将它存储到盘或者数据库内。因此,该注释自动机编码是AAE格式的XML模式定义108。
图4至9示出根据本发明的XML模式编译102实现的方法的例子。图4示出XML模式定义400的示例。XML模式定义400包括:缺省XML名称空间402、名称空间声明404以及注册目标名称空间405。因为安全方面的原因,可以注册(register)XML模式,而且在注册XML模式参考编号404表示的替换位置,访问该XML模式。XML模式定义400还包括用于文档编制目的的注释406。在该例子中,注释406被定义为包括元素408,该元素408被命名为“文档编制”,而且具有“xml:lang=’en’”的属性410。
XML模式定义400进一步包括全局元素声明,例如,人员412和注解(note)426。声明人员全局元素412是复合类型的,而且具有一系列被称为雇员的子元素414。声明雇员子元素414是复合类型的,而且具有语义约束416。声明雇员子元素414本身具有子元素418,每个子元素418分别具有其自己的语法约束420。在该例子中,这些子元素是姓、名以及注解,它们分别是一个简单类型(字符串)。还声明雇员子元素414具有几个属性422,分别将每个属性422定义为简单类型424。在该例子中,属性422包括整数型(type integer)serno、USERID_TYPE型userid以及字符串型部门。预先定义整数型和字符串型。不预先定义USERID_TYPE。在428的XML模式定义中说明其定义。
在步骤302,XML模式编译器前端202接收该XML模式定义400,作为输入。然后,它产生XML模式定义400的元素结构分层结构,然后,使它表示在图5所示的注释树500上。实线连接树500的各元素节点。虚线将各元素节点连接到各属性注释。
例如,实线将人员节点502连接到雇员节点506,然后,将雇员节点506连接到姓节点508、名节点510以及注解节点512。树500示出注解和人员是全局元素,因此,它们处于第一级节点。雇员是人员的子元素,因此,利用实线在第二级将其节点连接到人员节点。姓、名和注解是雇员的子元素,因此,利用实线,在第三级将其节点508-512连接到雇员节点506。最接近姓节点508、名节点510和注解节点512的椭圆形虚线包围的“字符串”514-518是表示其各相应节点的数据类型的数据类型注释节点。
树500还示出定义雇员节点,以具有利用serno方框520、userid方框522以及部门方框524表示的属性。最接近该方框的USERID_TYPE 526、整数528以及字符串530的椭圆形虚线包围的是其相应类型注释节点。
在步骤306,一对XML模式定义400产生了注释树500,XML模式编译器后端204就编码该注释树500,并产生注释自动机编码。在编码注释树500中,XML模式编译器后端204首先利用上下文无关文法(CFG)表示注释树500的元素约束,即,实线规定的树结构,如图6所示。然后,通过附加开始标记令牌作为每个元素的前缀,以及通过附加结束标记令牌作为每个元素的后缀,它扩增CFG,如图7所示。例如,对于人员元素,附加开始标记令牌PS和结束标记令牌PE。对于雇员元素,附加开始标记令牌ES和结束标记令牌EE。同样将开始标记令牌和结束标记令牌附加到元素姓、名以及注解上。然后,利用LALR(1)解析器生成器算法产生解析表或者状态转换表。然后,利用另一种算法由图5所示的树上的注释构造注释记录。图8示出所获得的、示例XML模式定义400的状态迁移图的注释部分。通过产生这种注释自动机编码,确认XML数据对象包括校验一系列开始标记和结束标记是否符合图7所示的文法。
参考图8,示例XML模式定义400包括自动机编码表801和全局元素映射表(map),该全局元素映射表包括全局元素注解802和人员803。图9示出示例XML模式定义400的自动机编码表801的状态迁移图。为了简洁起见,图9仅示出定义400的SHIFT边缘,而省略了REDUCE边缘。
参考图8,全局元素映射表包括注解元素名称802和人员元素名称803。它们又分别包括指向注解元素802和人员元素803的注释记录843和809的指针。人员元素注释记录809包括其元素内容和参数的扫描器(scanner)ID 804(<anyTypeID,null>)、其开始标记令牌805(PS)、其结束标记令牌806(PE)、属性列表807以及候选子元素映射表808。人员元素注释记录809的属性列表807是空的。其候选子元素映射表808包括指向其局部元素映射表的指针。局部元素映射表810包括雇员元素名,该雇员元素名又包括指向雇员元素注释记录816的指针。
雇员元素注释记录816包括其元素内容与参数扫描器ID 811(<anyTypeID,null>)、其开始标记令牌812(ES)、其结束标记令牌813(EE)、属性列表814以及候选子元素映射表815。根据XML模式定义400,属性列表814包括三个属性,serno、userid和部门。因此,属性列表814包括指向serno属性名称817及其值与参数扫描器ID 818(<integerTypeID,null>)、userid属性名称819及其值与参数扫描器ID 820(<anySimpleTypeID,[a-zA-Z][1][1-9a-zA-Z]>)、以及部门属性名称821及其值与参数扫描器ID 822(<stringTypeID,null>)的指针。
雇员元素注释记录816的候选子元素映射表815包括指向其局部元素映射表的指针,该映射表包括指向雇员元素的各子元素的注释记录的指针。根据XML模式定义400,雇员元素的子元素包括姓元素、名元素以及注解元素。它们又分别包括指向姓元素注释记录829、名元素注释记录837以及注解元素注释记录843的指针。
姓元素注释记录829包括其内容与参数扫描器ID 824(<stringTypeID,null>)、其开始标记令牌825(LS)、其结束标记令牌826(LE)、属性列表827以及候选子元素映射表828。根据XML模式定义400,姓元素没有属性和子元素,因此,其属性列表827及其候选子元素映射表828是空的。
名元素注释记录837包括其内容与参数扫描器ID 832(<stringTypeID,null>)、其开始标记令牌833(FS)、其结束标记令牌834(FE)、属性列表835以及候选子元素映射表836。根据XML模式定义400,名元素没有属性和子元素,因此,其属性列表835及其候选子元素映射表836是空的。
注解元素注释记录843包括其内容与参数扫描器ID 838(<stringTypeID,null>)、其开始标记令牌839(NS)、其结束标记令牌840(NE)、属性列表841以及候选子元素映射表842。根据XML模式定义400,注解元素没有属性和子元素,因此,其属性列表841及其候选子元素映射表842是空的。
注释自动机编码800用于对照XML模式定义400确认XML文档,下面将做进一步说明。
运行时确认引擎
图10更详细示出根据本发明的运行时确认引擎104。运行时确认引擎104包括:XML扫描器池1002、通用XML解析器1004以及运行时模式确认解析器1006。XML扫描器池1002包括通用扫描器1017和用于特定简单数据类型的其它扫描器1018至1020。然而,通用扫描器1017可以扫描所有词法令牌,但其性能受到限制。用于特定类型的扫描器1018至1020可以通过更好的性能。例如,整数型的扫描器1019和字符串型的扫描器1020可以是XML扫描器池1002的一部分。在优选实施例中,AnySimpleType扫描器1018用作任何简单数据类型的通用扫描器。扫描器1017至1020分别具有唯一的扫描器ID(0,1,...n,n+1)。通用XML解析器1004调用该扫描器,以令牌化输入的XML文档112。根据AAE格式的XML模式108,利用运行时模式确认解析器1006,确认要调用的扫描器。
通用XML解析器1004从该扫描器接收令牌,然后,校验基本XML文法。如果该令牌是元素令牌,即,开始标记名称或者结束标记名称,或者如果该令牌是属性令牌,则将它们转发到运行时模式确认解析器1006,作为词位(lexeme)。对照AAE格式的XML模式定义,运行时确认引擎解析器1006确认该元素词位和属性词位。因此,根据CFG内的模式结构(参考图6),通用XML解析器1004执行低级确认,而运行时模式确认解析器1006执行高级确认。
运行时模式确认解析器1006包括XML模式装载模块1010,它用于从盘或者数据库110装载AAE格式的正确XML模式。运行时模式确认解析器1006还包括XML模式确认模块1012,它实际执行高级确认过程。该模块1012包括:元素确认模块1014,用于确认元素词位;以及属性确认模块1016,用于确认属性词位。
图11至14是示出根据本发明利用运行时确认引擎执行的运行时确认过程的优选实施例的流程图。参考图11,在步骤1102,首先,XML模式装载模块1010装载AAE格式的XML模式108,然后,将通用扫描器1017设置为当前扫描器。此外,实体管理器1008将获得XML外部实体,利用XML文档实例引用该XML外部实体以进行验证。在步骤1104,装载XML文档112。当前扫描器令牌化(tokenize)该XML文档112。然后,在步骤1106,通用XML解析器1004调用当前扫描器,以获得令牌。在步骤1108,通用XML解析器1004校验令牌是否成功返回。如果令牌扫描不成功,则在步骤110,确认返回“无效”,然后,结束该过程。如果在步骤1112,令牌扫描成功,而且通用XML解析器1004确定该令牌是元素令牌或者属性令牌,则在步骤1114,将该令牌输入到XML模式确认模块1012,作为词位。该词位可以是3种类型之一:开始标记名称、属性名称或者结束标记名称。在步骤1118、1120或者1122,以不同的方式,分别处理每种类型的词位。如果令牌不是元素令牌或者属性令牌,则在步骤1124,确定该令牌是否是文件结束(EOF)令牌,即,XML文档112的结束。如果不是,则该过程返回步骤1106,对下一个令牌重复该过程。如果是,则在步骤1125,确定通用XML解析器1004和元素确认模块1014是否均是“接受”方式,即,解析和确认是否已经完成。如果是,则在步骤1126,XML文档112的确认是成功的,返回“有效”。如果不是,则在步骤1127,该确认失败,返回“无效”。
图12是示出根据本发明处理开始标记名称的流程图。首先,在步骤1202,根据先前注释记录和开始标记名称,XML模式确认模块1012发现当前注释记录。该当前注释记录是对应于先前注释记录的候选子元素映射表内的当前标记名称的映射表条目指出的注释记录。在步骤1206,该当前注释记录被推进堆栈。然后,在步骤1208,XML模式确认模块1012从当前注释记录获得对应于开始标记名称的令牌,然后,将该令牌输入到元素确认模块1014。根据AAE的解析表部分,例如,801,元素确认模块1014进行LR解析。如果在步骤1210,该确认不成功,则在步骤1212,该确认失败,然后,返回“无效”。如果在步骤1210,确认是成功的,则如果在步骤1214,当前注释记录的属性列表是空的,而且元素内容是简单类型的,则在步骤1216,将当前扫描器ID设置为简单类型的扫描器。然后,从图11所示的步骤1106继续进行该过程。
图13是示出根据本发明处理属性名称的流程图。首先,在步骤1301,XML模式确认模块1012获得当前注释记录,然后,将当前注释记录和属性名称送到属性确认模块1016。在步骤1302,属性确认模块1016在当前注释记录的属性列表中搜索属性名称。如果在步骤1304,在当前注释记录中未发现属性名称,则在步骤1310,XML文档112的结构不符合XML模式定义108,XML文档112的确认失败,然后,返回“无效”。如果在步骤1304,发现属性名称,则在步骤1312,XML模式确认模块1012将当前扫描器ID设置为属性值的简单类型。在图11所示的步骤1124继续进行该过程。
图14是示出根据本发明处理结束标记名称的流程图。首先,在步骤1402,从堆栈上删除当前注释记录。根据AAE格式,在开始标记和任意属性之后,处理注释记录的结束标记。由于根据上述步骤1202至1204,设置当前注释记录,所以结束标记名称的当前注释记录应该是开始标记名称的注释记录。由于结束标记名称是要处理的注释记录的最后一个令牌,所以利用该处理过程,从堆栈上删除其注释记录。接着,在步骤1404,XML模式确认模块1012从当前注释记录获得结束标记名称的令牌,然后,将它输入到元素确认模块1014。如果在步骤1406,该确认是不成功的,则在步骤1410,该确认失败,并返回“无效”。如果在步骤1406,该确认是成功的,则在步骤1408,XML模式确认模块1012确定是否已经确认了当前注释记录的所有属性,或者该属性列表是否是空的。如果不是,则在步骤1410,XML文档112的结构不符合XML模式定义108,该确认失败,并返回“无效”。如果是,则该过程返回图11中的步骤1106,并对下一个令牌重复该过程。
为了在该优选实施例中校验唯一性约束430,例如,校验XML模式定义400的雇员元素,可以利用散列表或者散列阵列跟踪以前是否已经遇到了雇员serno。
为了在该优选实施例中校验引用完整性,在扫描XML文档112时,可以收集一定义列表。然后,可以对照该定义列表校验各引用。如果在该定义之前出现引用,则必须对整个XML文档112进行扫描,而且在校验引用完整性之前,记忆该引用。
示例确认
例如,假定XML文档112的XML模式定义是示例XML模式定义400(参考图4)。图16示出要确认的示例XML文档1600。在步骤1102,XML模式装载模块1012装载AAE格式的XML模式,然后,将该通用扫描器1017设置为当前扫描器。在步骤1104,还装载XML文档1600。在步骤1106,通用XML解析器1004调用当前扫描器,以获得第一令牌,该第一令牌是人员开始标记名称1602。在步骤1108,令牌扫描成功,而且在步骤1112,通用XML解析器1004确定它是元素令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确认词位类型。由于该词位是开始标记名称,所以执行过程步骤1118,如图12所示。
人员开始标记名称
根据XML模式定义400的图800,人员开始标记名称803的先前注释记录指向人员元素注释记录809。参考图12,因此,在步骤1202,人员元素注释记录809是当前注释记录,而在步骤1206,将该人员元素注释记录809推进堆栈。堆栈的内容如图15A所示。然后,在步骤1208,XML模式确认模块1012从人员元素注释记录809获得人员开始标记令牌(PS)805,并将该令牌805输入到元素确认模块1014。元素确认模块1014是利用解析表进行图9所示状态迁移的解析器。在步骤1210,确认是成功的。在步骤1214,人员元素注释记录809的属性列表807是空的(空),但是内容是复合类型的(anyTypeID)。因此,确认过程返回图11中的步骤1106,然后,对下一个令牌重复该过程。
雇员开始标记名称
在步骤1106,通用XML解析器1004调用当前扫描器,以获得下一个令牌,即,雇员开始标记名称1604。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是元素令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于该词位是开始标记名称,所以执行过程步骤1118,如图12所示。
参考图12,在步骤1202,人员元素注释记录809,即,先前注释记录的候选子元素映射表808指向雇员开始标记名称810,雇员开始标记名称810又指向雇员元素注释记录816,即,当前注释记录,然后,在步骤1206,将该雇员元素注释记录816推进堆栈。现在,堆栈的内容变成如图15B所示。在步骤1208,XML模式确认模块1012从雇员元素注释记录816获得雇员开始标记令牌(ES)812,然后,将该令牌812输入到元素确认模块1014。在步骤1210,确认是成功的。由于在步骤1214,雇员元素注释记录816的属性列表814不是空的,所以该过程返回图11的步骤1106,然后,对下一个令牌重复该过程。
serno属性名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,属性名称serno 1606的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是属性令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于词位是属性名称,所以执行过程步骤1120,如图13所示。
参考图13,在步骤1301,XML模式确认模块1012将当前注释记录和serno属性名称传送到属性确认模块1016。当前注释记录是雇员元素注释记录816。在步骤1302,属性确认模块1016在属性列表814中搜索serno属性名称817。在步骤1304,在该属性列表中发现serno属性名称817。确认是成功的,然后,在步骤1312,XML模式确认模块1012将当前扫描器ID设置为integerTypeID。然后,该过程返回图11中的步骤1106,对下一个令牌重复该过程。IntegerType扫描器1019扫描整数“12345”,作为serno属性名称的属性值。使当前扫描器复原到通用扫描器。
userid属性名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,属性名称userid 1608的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是属性令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于词位是属性名称,所以执行过程步骤1120,如图13所示。
参考图13,在步骤1301,XML模式确认模块1012将当前注释记录和userid属性名称819传送到属性确认模块1016。当前注释记录是雇员元素注释记录816。在步骤1302,属性确认模块1016在属性列表814中搜索userid属性名称819。在步骤1304,在该属性列表中发现userid属性名称819。确认是成功的,然后,在步骤1312,XML模式确认模块1012将当前扫描器ID设置为anySimpleTypeID。然后,该过程返回图11中的步骤1106,对下一个令牌重复该过程。AnySimpleType扫描器1018扫描“Albc78D”,作为userid属性名称的属性值。使当前扫描器复原到通用扫描器。
部门属性名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,属性名称部门1610的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是属性令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于词位是属性名称,所以执行过程步骤1120,如图13所示。
参考图13,在步骤1301,XML模式确认模块1012将当前注释记录和部门属性名称821传送到属性确认模块1016。当前注释记录是雇员元素注释记录816。在步骤1302,属性确认模块1016在属性列表814中搜索部门属性名称821。在步骤1304,在该属性列表中发现部门属性名称821。在步骤1308,确认是成功的,然后,在步骤1312,XML模式确认模块1012将当前扫描器ID设置为stringTypeID。然后,该过程返回图11中的步骤1106,对下一个令牌重复该过程。StringType扫描器1020扫描“sales”,作为部门属性名称的属性值。使当前扫描器复原到通用扫描器。
姓开始标记名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,姓开始标记名称1612的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是元素令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于该词位是开始标记名称,所以执行过程步骤1118,如图12所示。
参考图12,在步骤1202,雇员元素注释记录816,即,先前注释记录的候选子元素映射表815指向姓开始标记名称823,姓开始标记名称823又指向姓元素注释记录829,即,当前注释记录,然后,在步骤1206,将姓元素注释记录829推进堆栈。现在,堆栈的内容变成如图15C所示。在步骤1208,XML模式确认模块1012从姓元素注释记录829获得姓开始标记令牌(LS)825,然后,将该令牌825输入到元素确认模块1014。在步骤1210,确认是成功的。由于在步骤1214,姓元素注释记录829的属性列表814是空的,而且姓元素的内容是简单类型(stringTypeID),所以在步骤1216,当前扫描器ID变更为stringType ID。然后,该过程返回图11的步骤1106,对下一个令牌重复该过程。然后,调用StringType扫描器1020,以扫描“White”,作为姓元素的内容。当前扫描器复原到通用扫描器。
姓结束标记名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,姓结束标记名称1614的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是元素令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于该词位是结束标记名称,所以执行过程步骤1122,如图14所示。
参考图14,在步骤1402,从该堆栈上删除姓元素注释记录829,即,当前注释记录。现在,堆栈的内容变成如图15B所示。在步骤1404,XML模式确认模块1012从姓元素注释记录829获得姓结束标记令牌(LE)826,然后,将该令牌826输入到元素确认模块1014。在步骤1406,该确认是成功的。由于在步骤1408,姓元素注释记录829的属性列表827是空的,所以该过程返回图11的步骤1106,对下一个令牌重复该过程。
名开始标记名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,名开始标记名称1616的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是元素令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于该词位是开始标记名称,所以执行过程步骤1118,如图12所示。
参考图12,在步骤1202,雇员元素注释记录816,即,先前注释记录的候选子元素映射表815指向名开始标记名称830,名开始标记名称830又指向名元素注释记录837,即,当前注释记录,然后,在步骤1206,将该名元素注释记录837推进堆栈。现在,堆栈的内容变成如图15D所示。在步骤1208,XML模式确认模块1012从名元素注释记录837获得名开始标记令牌(FS)833,然后,将该令牌833输入到元素确认模块1014。在步骤1210,确认是成功的。由于在步骤1214,名元素注释记录837的属性列表835是空的,而且名元素的内容是简单类型(stringTypeID),所以在步骤1216,当前扫描器ID变更为StringType ID。然后,该过程返回图11的步骤1106,对下一个令牌重复该过程。然后,调用stringType扫描器1020,以扫描“John”,作为名元素的内容。当前扫描器复原通用扫描器。
名结束标记名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,名结束标记名称1618的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是元素令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于该词位是结束标记名称,所以执行过程步骤1122,如图14所示。
参考图14,在步骤1402,从该堆栈上删除名元素注释记录837,即,当前注释记录。现在,堆栈的内容变成如图15B所示。在步骤1404,XML模式确认模块1012从名元素注释记录837获得名结束标记令牌(SE)834,然后,将该令牌834输入到元素确认模块1014。在步骤1406,该确认是成功的。由于在步骤1408,名元素注释记录837的属性列表835是空的,所以该过程返回图11的步骤1106,对下一个令牌重复该过程。
注解开始标记名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,注解开始标记名称1620的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是元素令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于该词位是开始标记名称,所以执行过程步骤1118,如图12所示。
参考图12,在步骤1202,雇员元素注释记录816,即,先前注释记录的候选子元素映射表815指向注解开始标记名称838,注解开始标记名称838又指向注解元素注释记录843,即,当前注释记录,然后,在步骤1206,将该注解元素注释记录843推进堆栈。现在,堆栈的内容变成如图15E所示。在步骤1208,XML模式确认模块1012从注解元素注释记录843获得注解开始标记令牌(NS)839,然后,将该令牌839输入到元素确认模块1014。在步骤1210,确认是成功的。由于在步骤1214,注解元素注释记录843的属性列表835是空的,而且注解元素的内容是简单类型(stringTypeID),所以在步骤1216,当前扫描器ID变更为StringType ID。然后,该过程返回图11的步骤1106,对下一个令牌重复该过程。然后,stringType扫描器1020扫描“固定(regular)”,作为注解元素的内容。当前扫描器复原到通用扫描器。
注解结束标记名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,注解结束标记名称1622的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是元素令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于该词位是结束标记名称,所以执行过程步骤1122,如图14所示。
参考图14,在步骤1402,从该堆栈上删除注解元素注释记录843,即,当前注释记录。现在,堆栈的内容变成如图15B所示。在步骤1404,XML模式确认模块1012从注解元素注释记录843获得注解结束标记令牌(NE)840,然后,将该令牌840输入到元素确认模块1014。在步骤1406,该确认是成功的。由于在步骤1408,注解元素注释记录843的属性列表841是空的,所以该过程返回图11的步骤1106,对下一个令牌重复该过程。
雇员结束标记名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,雇员结束标记名称1624的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是元素令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于该词位是结束标记名称,所以执行过程步骤1122,如图14所示。
参考图14,在步骤1402,从该堆栈上删除雇员元素注释记录816,即,当前注释记录。现在,堆栈的内容变成如图15A所示。在步骤1404,XML模式确认模块1012从雇员元素注释记录816获得雇员结束标记令牌(EE)813,然后,将该令牌813输入到元素确认模块1014。在步骤1406,该确认是成功的。由于在步骤1408,已经确认了雇员元素注释记录816的所有属性817、819和821,所以该过程返回图11的步骤1106,对下一个令牌重复该过程。
对示例XML文档1600上的人员元素中的剩余雇员元素执行同样的确认过程。
人员结束标记名称
在步骤1106,通用XML解析器调用当前扫描器,以获得下一个令牌,即,人员结束标记名称1626的令牌。在步骤1108,令牌扫描是成功的,而且在步骤1112,通用XML解析器1004确定它是元素令牌,因此,在步骤1114,将它输入到XML模式确认模块1012,作为词位。然后,在步骤1116,XML模式确认模块1012确定词位类型。由于该词位是结束标记名称,所以执行过程步骤1122,如图14所示。
参考图14,在步骤1402,从该堆栈上删除人员元素注释记录809,即,当前注释记录。在步骤1404,XML模式确认模块1012从人员元素注释记录809获得人员结束标记令牌(PE)806,然后,将该令牌806输入到元素确认模块1014。在步骤1406,该确认是成功的。由于在步骤1408,人员元素注释记录809的属性列表807是空的,所以该过程返回图11的步骤1106,对下一个令牌重复该过程。然后,返回EOF令牌。由于在步骤1125,通用XML解析器1004和元素模块1014均是“接受”方式的,所以以确认XML文档1600完成该过程。因此,在步骤1126,返回“有效”。
改进特征
尽管利用简单XML模式定义对优选实施例进行了描述,但是本发明还支持一些改进特征。例如,可以支持具有获得的类型或者抽象类型和/或者抽象元素以及代用组的元素的声明。
类型获得允许利用基本类型定义新类型。在声明其类型是获得的类型(derived type)的元素时,该声明仅引用基本类型,该基本类型可以是抽象的。如果该元素被声明为具有获得的类型的类型,则必须利用xsi:类型属性确定在XML实例中使用抽象类型中哪种获得的类型。换句话说,仅利用元素名称不能确定元素的数据类型。然而,在编译XML模式定义时,知道利用抽象类型声明的那个元素。因此,利用抽象类型字段,将该信息编码到全局元素映射表和局部元素映射表。如果运行时确认引擎104发现在运行时利用抽象类型声明元素,则它将延迟确认该元素的属性,直到发现xsi:类型。
例如,图17示出XML模式定义的一部分示例获得类型定义。在该例子中,不是定义雇员元素的一种类型,而是定义三种类型:employeeType、regularEmployee以及tempEmployee。声明雇员元素指基本类型“employeeType”。
为了在根据本发明的XML模式确认中支持获得的类型,在CFG中,XML模式编译102对雇员元素使用OR(“|”):
employee:employeeType
|regularEmployee
|tempEmployee
可以扩展regularEmployee和tempEmployee二者的BNF,以包括它们所含有的所有元素。例如,扩展regularEmployee以包括所有四个元素:姓、名、注解以及工资。根据XML模式建议对XML模式的约束,不应该存在对获得的合法(1egal)XML模式的CFG要求的任何超前。这意味着,获得的CFG应该在SLR或者LALR(1)解析器生成器的能力范围内,或者XML模式定义是错误的。模式编译的剩余部分保持不变。
关于运行时确认引擎104,可以以两种替换方式实现确认雇员元素。在第一种方式中,使用回溯机制。当运行时确认引擎104遇到任何一种获得类型的元素时,它扫描xsi:类型属性的开始标记。根据这些属性的值,它对运行时模式确认解析器1006产生相应词位。然后,它重新扫描该标记名称之后的开始标记。例如,如果遇到下面的开始标记:
<employee xsi:type=“regularEmployee”>
则将regularEmployee送到高级确认解析器。
在第二种方式中,通用XML解析器1004将整个开始标记作为一个整体进行处理,然后,确认解析器1006确认其内容。通用XML解析器1004知道xsi:类型属性的值,因此,对运行时模式确认解析器1006,产生正确令牌。然后,运行时模式确认解析器1006确认整个开始标记。
对于抽象元素和替换元素组,在XML模式编译102的模式编译过程中可以应用类似的机制。然而,与利用抽象类型不同,从元素名称可以得知元素的类型。因此,不需要扫描xsi:类型属性。
尽管根据XML模式对本发明进行了描述,但是本技术领域内的普通技术人员明白,在不脱离本发明实质范围的情况下,该确认过程还可以与使用模式的其它标记和/或置标语言一起使用。
本发明公开了一种用于XML模式确认的改进的方法和系统。该方法和系统将XML模式定义编译为注释自动机编码(AAE)格式,该注释自动机编码(AAE)格式存储在盘或者数据库中。一次将每个XML模式定义编译为AAE格式。在确认XML文档时,将XML文档和AAE格式的正确XML模式定义装载到运行时确认引擎上。运行时确认引擎包括通用XML解析器和运行时模式确认解析器。运行时确认引擎的代码被固定,而且不根据XML模式定义改变。对照AAE格式的XML模式定义,通用XML解析器执行低级确认,而运行时模式确认解析器执行XML文档的高级确认。运行时确认引擎的输出是确认通过或者失败。
因为一次性编译并存储AAE格式的XML模式定义,而不是在每次确认XML文档时编译它,所以在进行确认过程时可以显著节省时间。此外,因为运行时确认引擎代码被固定,而对于每个XML模式定义不发生变化,所以即使存在大量XML模式定义,仍可以将空间开销降低到最低。此外,在不牺牲性能的情况下,保证确认过程的灵活性。
尽管根据所示的实施例对本发明进行了说明,但是本技术领域内的普通技术人员容易明白,可以对该实施例进行变更,而且这些变更在本发明的实质范围内。因此,在不脱离所附权利要求的实质范围的情况下,本技术领域内的普通技术人员可以进行许多修改。
Claims (37)
1、一种用于置标语言模式确认的方法,包括步骤:
(a)将置标语言文档装载到运行时确认引擎上,其中运行时确认引擎包括置标语言模式确认解析器;
(b)将置标语言模式定义的注释自动机编码装载到置标语言模式确认解析器上;以及
(c)通过利用注释自动机编码的置标语言模式确认解析器,对照置标语言模式定义,确认置标语言文档。
2、根据权利要求1所述的方法,其中置标语言包括可扩展置标语言(XML)。
3、根据权利要求1或2所述的方法,其中注释自动机编码至少包括一个元素节点,其中一个或者多个属性可以与该元素节点关联,而且其中一个或者多个数据类型约束与该元素节点或者该属性关联。
4、根据权利要求1、2或3所述的方法,其中注释自动机编码包括至少一个元素节点的至少一个元素注释记录,其中至少一个元素注释记录包括一个或者多个组,该组包括:
元素内容与参数的扫描器ID;
开始标记令牌;
结束标记令牌;
属性列表;以及
候选子元素映射表,可以包括指向子元素名称的指针。
5、根据权利要求1至4之任一所述的方法,其中装载步骤(a)之前包括:
(a1)接收可扩展置标语言(XML)模式定义;
(a2)对XML模式定义,产生元素结构分层结构,并在注释树上表示该分层结构;
(a3)编码注释树,并产生注释自动机编码;
(a4)串行化注释自动机编码;以及
(a5)存储串行化注释自动机编码。
6、根据权利要求1至5之任一所述的方法,其中确认步骤(c)包括:
(c1)获得可扩展置标语言(XML)文档的至少一个令牌;
(c2)利用通用XML解析器,对至少一个令牌进行低级确认;以及
(c3)如果该令牌是元素令牌或者属性令牌,则利用XML模式确认解析器,对该至少一个令牌进行高级确认。
7、根据权利要求6所述的方法,其中确认步骤(c)进一步包括:
(c4)如果通用XML解析器和XML模式确认解析器进行的确认是成功的,则输出确认通过;以及
(c5)如果通用XML解析器或者XML模式确认解析器进行的确认是不成功的,则输出确认失败。
8、根据权利要求6或7所述的方法,其中元素令牌包括一个或者多个组,该组包括:
开始标记名称;以及
结束标记名称。
9、根据权利要求6、7或8所述的方法,其中属性令牌包括属性名称。
10、根据权利要求6至9之任一所述的方法,其中如果元素令牌是开始标记名称,则执行步骤(c3),步骤(c3)包括:
(c3i)根据先前注释记录和开始标记名称,发现当前注释记录;
(c3ii)将当前注释记录推进堆栈;
(c3iii)从当前注释记录获得开始标记名称的开始标记令牌;
(c3iv)将开始标记令牌输入到XML模式确认解析器的元素确认模块;以及
(c3v)确定开始标记令牌的确认是否成功。
11、根据权利要求6至10之任一所述的方法,其中如果属性令牌是属性名称,则执行步骤(c3),步骤(c3)包括:
(c3i)将当前注释记录和属性名称送到XML模式确认解析器的属性确认模块;
(c3ii)在当前注释记录的属性列表中搜索属性名称,其中如果在当前注释记录中未发现属性名称,则XML文档的确认失败;
(c3iii)如果在当前注释记录中发现该属性名称,则获得属性令牌;以及
(c3iv)确定属性令牌的确认是否成功。
12、根据权利要求6至11之任一所述的方法,其中如果元素令牌是结束标记名称,则执行步骤(c3),步骤(c3)包括:
(c3i)从堆栈上删除当前注释记录;
(c3ii)从当前注释记录获得结束标记令牌;
(c3iii)将结束标记令牌输入到XML模式确认解析器的元素确认模块;
(c3iv)确认结束标记令牌的确认是否成功;以及
(c3v)确定是否确认了当前注释记录的所有属性,或者当前注释记录的属性列表是否是空的,其中如果还未确认当前注释记录的所有属性,而且当前注释记录的属性列表不是空的,则结束标记令牌的确认不成功。
13、一种系统,包括:
置标语言模式编译,用于对至少一个置标语言模式定义,产生至少一个注释自动机编码;以及
运行时确认引擎,包括运行时模式确认解析器,其中运行时确认引擎解析器接收置标语言文档和至少一个注释自动机编码作为输入,其中对照至少一个采用至少一个注释自动机编码的置标语言模式定义,运行时模式确认解析器确认置标语言文档。
14、根据权利要求13所述的系统,其中置标语言包括可扩展置标语言(XML)。
15、根据权利要求13或14所述的系统,其中注释自动机编码至少包括一个元素节点,其中一个或者多个属性可以与该元素节点关联,而且其中一个或者多个数据类型约束与该元素节点或者该属性关联。
16、根据权利要求13、14或15所述的系统,其中注释自动机编码包括至少一个元素节点的至少一个元素注释记录,其中至少一个元素注释记录包括一个或者多个组,该组包括:
元素内容与参数的扫描器ID;
开始标记令牌;
结束标记令牌;
属性列表;以及
候选子元素映射表,可以包括指向子元素名称的指针。
17、根据权利要求13至16之任一所述的系统,其中置标语言模式编译包括:
可扩展置标语言(XML)模式编译器前端;以及
XML模式编译器后端。
18、根据权利要求17所述的系统,其中XML模式编译器前端接收至少一个XML模式定义;产生XML模式定义的元素结构分层结构;以及使该分层结构表示在注释树上。
19、根据权利要求18所述的系统,其中XML模式编译器后端编码注释树;根据编码的注释树,产生至少一个注释自动机编码;以及串行化该至少一个注释自动机编码。
20、根据权利要求13至19之任一所述的系统,该系统进一步包括:
存储介质,用于存储至少一个注释自动机编码。
21、根据权利要求13至20所述的系统,其中运行时确认引擎进一步包括:
通用可扩展置标语言(XML)解析器,其中该通用XML解析器对XML文档进行低级确认,其中运行时模式确认解析器对XML文档进行高级确认。
22、根据权利要求13至21所述的系统,其中运行时确认解析器进一步包括:
可扩展置标语言(XML)模式装载模块,用于装载至少一个注释自动机编码;以及
XML模式确认模块,包括:
元素确认模块,用于确认元素令牌,以及
属性确认模块,用于确认属性令牌。
23、根据权利要求22所述的系统,其中元素令牌包括一个或者多个组,该组包括:
开始标记名称;以及
结束标记名称。
24、根据权利要求22或23所述的系统,其中属性令牌包括属性名称。
25、根据权利要求13至24之任一所述的系统,其中运行时确认引擎进一步包括可扩展置标语言(XML)扫描器池,其中XML扫描器池包括通用扫描器和至少一种专用扫描器。
26、一种具有置标语言模式确认程序指令的计算机可读介质,该计算机可读介质包括用于如下的各指令:
(a)将置标语言文档装载到运行时确认引擎上,其中运行时确认引擎包括置标语言模式确认解析器;
(b)将置标语言模式定义的注释自动机编码装载到置标语言模式确认解析器上;以及
(c)通过利用注释自动机编码的置标语言模式确认解析器,对照置标语言模式定义,确认置标语言文档。
27、根据权利要求26所述的介质,其中置标语言包括可扩展置标语言(XML)。
28、根据权利要求26或27所述的介质,其中注释自动机编码至少包括一个元素节点,其中一个或者多个属性可以与该元素节点关联,而且其中一个或者多个数据类型约束与该元素节点或者该属性关联。
29、根据权利要求26、27或28所述的介质,其中注释自动机编码包括至少一个元素节点的至少一个元素注释记录,其中至少一个元素注释记录包括一个或者多个组,该组包括:
元素内容与参数的扫描器ID;
开始标记令牌;
结束标记令牌;
属性列表;以及
候选子元素映射表,可以包括指向子元素名称的指针。
30、根据权利要求26至29之任一所述的介质,其中在装载指令(a)之前包括用于如下各指令:
(a1)接收可扩展置标语言(XML)模式定义;
(a2)对XML模式定义,产生元素结构分层结构,并在注释树上表示该分层结构;
(a3)编码注释树,并产生注释自动机编码;
(a4)串行化注释自动机编码;以及
(a5)存储串行化注释自动机编码。
31、根据权利要求26至30之任一所述的介质,其中确认指令(c)包括用于如下的各指令:
(c1)获得可扩展置标语言(XML)文档的至少一个令牌;
(c2)利用通用XML解析器,对至少一个令牌进行低级确认;以及
(c3)如果该令牌是元素令牌或者属性令牌,则利用XML模式确认解析器,对该至少一个令牌进行高级确认。
32、根据权利要求31所述的介质,其中确认指令(c)进一步包括用于如下的指令:
(c4)如果通用XML解析器和XML模式确认解析器进行的确认是成功的,则输出确认通过;以及
(c5)如果通用XML解析器或者XML模式确认解析器进行的确认是不成功的,则输出确认失败。
33、根据权利要求31或32所述的介质,其中元素令牌包括一个或者多个组,该组包括:
开始标记名称;以及
结束标记名称。
34、根据权利要求31所述的介质,其中属性令牌包括属性名称。
35、根据权利要求31所述的介质,其中如果元素令牌是开始标记名称,则执行的步骤(c3)包括用于如下的指令:
(c3i)根据先前注释记录和开始标记名称,发现当前注释记录;
(c3ii)将当前注释记录推进堆栈;
(c3iii)从当前注释记录获得开始标记名称的开始标记令牌;
(c3iv)将开始标记令牌输入到XML模式确认解析器的元素确认模块;以及
(c3v)确定开始标记令牌的确认是否成功。
36、根据权利要求31至35之任一所述的介质,其中如果属性令牌是属性名称,则执行的步骤(c3)包括用于如下的指令:
(c3i)将当前注释记录和属性名称送到XML模式确认解析器的属性确认模块;
(c3ii)在当前注释记录的属性列表中搜索属性名称,其中如果在当前注释记录中未发现属性令牌,则XML文档的确认失败;
(c3iii)如果在当前注释记录中发现该属性名称,则获得属性令牌;以及
(c3iv)确定属性令牌的确认是否成功。
37、根据权利要求31至36之任一所述的方法,其中如果元素令牌是结束标记名称,则执行的步骤(c3)包括用于如下的指令:
(c3i)从堆栈上删除当前注释记录;
(c3ii)从当前注释记录获得结束标记令牌;
(c3iii)将结束标记令牌输入到XML模式确认解析器的元素确认模块;
(c3iv)确认结束标记令牌的确认是否成功;以及
(c3v)确定是否确认了当前注释记录的所有属性,或者当前注释记录的属性列表是否是空的,其中如果还未确认当前注释记录的所有属性,而且当前注释记录的属性列表不是空的,则结束标记令牌的确认不成功。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41867302P | 2002-10-15 | 2002-10-15 | |
US60/418,673 | 2002-10-15 | ||
US10/418,658 | 2003-04-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1860439A true CN1860439A (zh) | 2006-11-08 |
CN100414502C CN100414502C (zh) | 2008-08-27 |
Family
ID=37298745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003801014054A Expired - Lifetime CN100414502C (zh) | 2002-10-15 | 2003-10-11 | 置标语言模式确认的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100414502C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110020307A (zh) * | 2017-11-30 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种客户端视图的绘制方法和装置 |
CN111316232A (zh) * | 2017-11-10 | 2020-06-19 | 国际商业机器公司 | 使用程序的注释来提供优化 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2048039A1 (en) * | 1991-07-19 | 1993-01-20 | Steven Derose | Data processing system and method for generating a representation for and random access rendering of electronic documents |
JPH0713966A (ja) * | 1993-04-12 | 1995-01-17 | Xerox Corp | 文書の編集方法 |
US20010054172A1 (en) * | 1999-12-03 | 2001-12-20 | Tuatini Jeffrey Taihana | Serialization technique |
JP3690730B2 (ja) * | 2000-10-24 | 2005-08-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 構造回復システム、構文解析システム、変換システム、コンピュータ装置、構文解析方法、及び記憶媒体 |
-
2003
- 2003-10-11 CN CNB2003801014054A patent/CN100414502C/zh not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111316232A (zh) * | 2017-11-10 | 2020-06-19 | 国际商业机器公司 | 使用程序的注释来提供优化 |
CN110020307A (zh) * | 2017-11-30 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种客户端视图的绘制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100414502C (zh) | 2008-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1573519B1 (en) | Annotated automaton encoding of xml schema for high performance schema validation | |
US20050177543A1 (en) | Efficient XML schema validation of XML fragments using annotated automaton encoding | |
CN101055578A (zh) | 基于规则的文档内容挖掘器 | |
CN1896992A (zh) | 基于应用定制解析xml文档的方法及装置 | |
CN1685312A (zh) | 注册表驱动互用性和文件交换 | |
CN1866252A (zh) | 不同版本的配置数据间进行转换的方法和系统 | |
CN1577322A (zh) | 管理数据处理系统中的应用文件的方法和装置 | |
US20090222467A1 (en) | Method and Apparatus for Converting Legacy Programming Language Data Structures to Schema Definitions | |
CN1526104A (zh) | 分析结构化数据 | |
CN1848774A (zh) | 一种远程调用通信组件的系统及方法 | |
CN1592291A (zh) | 管理服务状态数据的方法和系统 | |
CN1906609A (zh) | 在数据中心中使用的用于进行数据格式转换的系统 | |
CN1552026A (zh) | 用于处理数据表示语言对象的编程语言扩展和相关应用 | |
CN1519751A (zh) | 生成结构模式候选对象的方法、系统和程序 | |
CN1781105A (zh) | 在xml文档和关系数据之间的映射中保留层次信息 | |
CN1841362A (zh) | 用于处理电子表格的方法和系统 | |
CN1766876A (zh) | 用于管理结构化文件的系统和方法 | |
CN1254921C (zh) | 改进的哈夫曼译码方法和装置 | |
CN1825306A (zh) | 基于关系数据库的xml数据存储与访问方法 | |
CN1728710A (zh) | 检索网络文件的方法和网络服务器 | |
US20080033968A1 (en) | Methods and apparatus for input specialization | |
CN1614563A (zh) | 模板编译方法 | |
CN1658159A (zh) | 可配置和可动态更改的对象模型 | |
CN1248113C (zh) | 一种源代码中硬编码字符串的提取和集中方法 | |
CN1860439A (zh) | 用于高性能模式确认的xml模式的注释自动机编码 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20080827 |