CN1584885A - 用于验证分层组织的消息的系统和方法 - Google Patents

用于验证分层组织的消息的系统和方法 Download PDF

Info

Publication number
CN1584885A
CN1584885A CNA2004100589629A CN200410058962A CN1584885A CN 1584885 A CN1584885 A CN 1584885A CN A2004100589629 A CNA2004100589629 A CN A2004100589629A CN 200410058962 A CN200410058962 A CN 200410058962A CN 1584885 A CN1584885 A CN 1584885A
Authority
CN
China
Prior art keywords
representative
message
checking
proof list
computer
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
Application number
CNA2004100589629A
Other languages
English (en)
Other versions
CN100444160C (zh
Inventor
R·R·帕奇
M·贾纳基拉曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1584885A publication Critical patent/CN1584885A/zh
Application granted granted Critical
Publication of CN100444160C publication Critical patent/CN100444160C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/40Business processes related to the transportation industry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/226Validation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Tourism & Hospitality (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Document Processing Apparatus (AREA)

Abstract

一种用于验证诸如XML消息或其它分层组织的内容之类的消息的机制。验证引擎较佳地以深度优先顺序走查由所述消息表示的树。一遇到树中的每个节点,验证引擎就参考一验证表,以识别要被调用的代表。验证引擎随后调用为该节点识别的代表,并对当前节点的子树递归调用。在处理了子树之后,验证引擎再次参考验证表,以识别用于当前节点的后处理程序,然后调用后处理程序。验证表中的条目可标记为“排他的”,以防止对对应于该条目的节点的子树的遍历。此外,可存在全局和局部验证表,当节点在局部表中没有条目时,使用全局表。

Description

用于验证分层组织的消息的系统和方法
技术领域
本发明一般涉及计算领域,尤其涉及用于消息验证的系统和方法。
背景技术
信息一般以足够丰富而能够允许表达有效和无效内容的词汇或语言来表示。例如,能使用罗马字母来写出正确的英语句子,但是也可能以难以理解的方式将不遵循任何语言的语义或语法规则的英语单词串联在一起或者将英语字母串联在一起。表达计算机数据的语言也不例外,即可能编写依照某些规则集来说是无效的计算机数据。
在计算机系统中,许多数据以分层形式表达,如以可扩展标记语言(XML)消息的形式表达。XML消息符合某种模式,该模式实质上定义了某类消息的正确语法。例如,一种类型的消息可以是“地址”,用于地址的模式可能要求地址包括街道名、城市、州和邮递区号。然而,即使是遵循该模式的消息也可能由于某些实质性原因而无效。例如,表明街道名、城市、州和邮递区号的数据的任何组合将满足该模式,但是如果假设州元素并不是美国的一个州的名字,或如果指定的邮递区号不匹配城市/州组合,那么该地址也可能仍然是无效的。
传统的进行验证的方法是通过强制的消息特定的代码。每个消息类的验证程序必须单独地编写,其中没有办法不修改类代码本身而修改该程序的行为。该技术的问题在于,对用于验证的实质性要求的任何改变都将要求对源代码作出改变。不仅这种对源代码的改变是麻烦的,而且在某些情况下还要求将源代码向公众散布,使得验证程序的用户能够对该程序作出自定义修改。这种对源代码的散布可能不是所希望的。
鉴于上述,需要一种克服了现有技术的缺陷的系统。
发明内容
本发明提供一种用于验证消息的机制。验证引擎走查消息。例如,在可看作是树形数据结构的XML消息的例子中,验证引擎可以深度优先遍历顺序走查该树的节点。
当遇到每个节点时,参考一张表,该表规定了验证节点的“代表”。代表是可由验证引擎调用的指定代码单元。验证引擎调用与遇到的节点类型相对应的代表。验证引擎然后遍历当前节点的子树。随着遍历这些子树,可以按上述方式参考表和调用代表。在遍历了子树之后,验证引擎再次参考表,以判断对于当前节点是否有后处理程序代表。如果规定了这样一个后处理程序,则调用后处理程序。代表根据某种定义的验证标准来评估节点(例如,代表通过判断组合是否实际上对应于美国的一个真实地址,来验证城市、州和邮递区号组合)。
较佳地,存在全局表和局部表。首先参考局部表,来判断对于当前节点是否有代表。如果存在这样一个代表,则调用该代表。如果在局部表中没有命名代表,则参考全局表来判断其中是否命名了代表。如果在全局表中命名了这样一个代表,则从该全局表调用该代表。全局表可包含应用于一宽泛的类别的消息类的代表,而局部表可包含对某一特定消息类特定的代表。
较佳地,表允许任选地将代表规定为“排他的”。如果代表是排他的,则它具有对验证节点及其子树的排他性控制,从而验证引擎不遍历子树,并且验证引擎不应用与子树中的节点相关联的代表。否则,如果代表不是排他的,则遍历子树,并且验证引擎应用与子树中的节点对应的代表。
下面描述本发明的其它特征。
附图说明
当连同附图一起阅读时,会更好地理解上述概述以及后面较佳实施例的详细描述。出于说明本发明的目的,在附图中示出了本发明的示例性的构造,但是,本发明并不限于所揭示的特定方法和手段。附图中:
图1是可实施本发明的诸方面的示例性计算环境的框图;
图2是采取可扩展标记语言(XML)的形式的示例性消息的框图;
图3是图2的XML消息的树形表示的框图;
图4是树图,示出了对树的深度优先遍历;
图5是根据本发明的诸方面的示例性验证表的框图;
图6是根据本发明的诸方面的示例性验证过程的流程图。
具体实施方式
综述
计算机使用的数据一般以分层方式进行组织,例如符合某种模式的XML数据。即使数据在语法上符合某个模式,但是该数据在某个实质性规则集下仍然可能无效。传统上,对数据集(如消息)进行实质性验证要求设计成验证某一类消息的专用代码。本发明提供一种通用工具,它可用于验证任意类的消息,并可扩展成将任意的规则集应用于消息。本发明的机制可用于验证任何任意的数据或消息,对于这些数据或消息来说,验证参数和数据可以用XML形式表示。
示例性计算环境
图1示出了可实施本发明的诸方面的示例性计算环境。计算系统环境100仅仅是适用的计算环境的一个例子,且并不试图限制本发明的使用或功能的范围。计算环境100也不应被解释成具有与示例性操作环境100中所例示的任一组件或它们的组合相关的任何依赖性或要求。
本发明适用于许多其它的通用或专用计算系统环境或配置。可适用于连同本发明一起使用的已知的计算系统、环境和/或配置的例子包括但不限于,个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、嵌入式系统、包含任意上述系统或设备的分布式计算环境,等等。
可用由计算机执行的诸如程序模块之类的计算机可执行指令的一般上下文环境来描述本发明。一般地,程序模块包括例行程序、程序、对象、组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。本发明还可在分布式计算环境中实施,在分布式计算环境中,通过经通信网络或其它数据传输媒体链接的远程处理设备来执行任务。在分布式计算环境中,程序模块和其它数据可位于包含存储设备的本地或远程计算机存储媒体中。
参考图1,用于实施本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可包括但不限于,处理单元120、系统存储器130以及将包含系统存储器在内的各种系统组件连接到处理单元120的系统总线121。处理单元120可代表诸如那些在多线程处理器上支持的多个逻辑处理单元。系统总线121可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。作为例子但非限制,这种体系结构包括工业标准结构(ISA)总线、微通道结构(MCA总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及外设部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。系统总线121还可实现为通信设备之间的点对点连接、交换结构等。
计算机110一般包括各种计算机可读媒体。计算机可读媒体可以是计算机110可存储访问的任何媒体,包括易失性和非易失性、可移动和不可移动的媒体。作为例子,但非限制,计算机可读媒体可包括计算机存储媒体和通信媒体。计算机存储媒体包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的媒体。计算机存储媒体包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字通用盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或能够用于存储所需信息和能够由计算机110存取访问的任何其它媒体。通信媒体一般将计算机可读指令、数据结构、程序模块或其它数据嵌入于诸如载波或其它传输机制的已调数据信号中,通信媒体包括任何信息递送媒体。术语“已调数据信号”是指信号使其一个或多个特征以编码该信号中的信息的方式被设置或改变。作为例子,但非限制,通信媒体包括诸如有线网络或直接线缆连接之类的有线媒体、诸如声音、RF、红外线或其它无线媒体之类的无线媒体。上述任何的组合也应当包含在计算机可读媒体的范围内。
系统存储器130包括诸如只读存储器(ROM)131和随机存取存储器(RAM)132之类的易失性和/或非易失性形式的计算机存储媒体。包含在诸如启动期间帮助在计算机110内的元件之间传送信息的基本例行程序的基本输入/输出系统133(BIOS)一般存储于ROM 131中。RAM 132一般包含可由处理单元120立即存取访问和/或当前正在执行的数据和/或程序模块。作为例子,但非限制,图1例示了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储媒体。仅作为例子,图1例示了读写不可移动、非易失性磁媒体的硬盘驱动器140、读写可移动、非易失性磁盘152的磁盘驱动器151、以及读写诸如CDROM或其它光学媒体的可移动、非易失性光盘156的光盘驱动器155。可用于示例性操作环境的其它可移动/不可移动、易失性/非易失性计算机存储媒体包括,但不限于,磁带盒、闪存卡、数字通用盘、数字视频带、固态RAM、固态ROM等。硬盘驱动器141一般通过诸如接口140之类的不可移动的存储器接口而连接到系统总线121,磁盘驱动器151和光盘驱动器155一般通过诸如接口150之类的可移动的存储器接口而连接到系统总线121。
上述的和图1所例示的驱动器及其相关的计算机存储媒体为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141例示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意到这些组件可以与操作系统134、应用程序135、其它程序模块136以及程序数据137相同或不同。这里对操作系统144、应用程序145、其它程序模块146以及程序数据147给出了不同的数字标号以说明至少它们是不同的副本。用户可通过诸如键盘162和通常称为鼠标、轨迹球或触板的指点设备161之类的输入设备,将命令和信息输入到计算机20中。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、卫星反射器、扫描仪等。这些和其它输入设备通常通过连接到系统总线的用户输入接口160而连接到处理单元120,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构来连接。监视器191和其它类型的显示设备通过诸如视频接口190之类的接口而连接到系统总线121。除了监视器之外,计算机还可包括其它外围输出设备,如扬声器197和打印机196,它们可通过输出外围接口195进行连接。
计算机110可操作于使用对诸如远程计算机180之类的一个或多个远程计算机的逻辑连接的联网环境中。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,虽然在图1中仅例示出存储设备181,但是它一般包括上述关于计算机110所描述的元件的部分或全部。图1中描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还可包括其它网络。这种联网环境在办公室、企业范围计算机网络、企业内部互联网和因特网中是普遍的。
当用于LAN联网环境中时,计算机110通过网络接口或适配器170而连接到LAN 171。当用于WAN联网环境中时,计算机110一般包括用于在诸如因特网之类的WAN 173上建立通信的调制解调器172或其它手段。内置的或外置的调制解调器172可通过用户输入接口160或其它适当机制来连接到系统总线121。在联网环境中,关于计算机110所描述的程序模块或其部分可存储于远程存储设备中。作为例子,但非限制,图1例示出驻留于存储设备181上的远程应用程序185。将理解到所示出的网络连接是示例性的,可以使用在计算机之间建立通信链路的其它手段。
示例性XML数据
本发明可用于验证诸如可扩展标记语言(XML)形式的数据之类的分层组织的数据集或“消息”。XML是一种元语言,它允许根据规定的结构或模式来组织数据。图2示出了XML数据的例子,其中所描述的组织结构有助于表示邮政地址。
在XML中,数据项与元素名或“标签”(tag)名相关联。标签可用作定界符,它使用的语法约定是,定界的数据的起始处以包含在尖括号“<”和“>”中的标签名标记,定界的数据的结束处以所述标签名前加斜线并包含在尖括号内来标记。下面是遵循此约定的XML数据的一个例子:
<A>
数据由标签“A”定界
</A>
在图2中,消息200是地址。定界符<ADDRESS>(202)和</ADDRESS>(222)包围了整个消息,示出所有的数据都是“ADDRESS”元素的一部分。ADDRESS元素包括两个子元素:STREET元素和CITYSTATEZIP元素。STREET元素设置成“123主街道”(204)。CITYSTATEZIP元素是一复合元素,它包括其它元素;这些包含的元素都包围在定界符206和220之中。CITYSTATEZIP元素包括设置成“雷蒙德市”的CITY元素(208)、设置成“华盛顿州”的STATE元素(210)、以及ZIP元素,ZIP元素是一个复合元素,它所包含的元素由定界符212和218所标记。ZIP元素包括设置成“98052”的FIVEDIGIT元素(214)和设置成“0123”的PLUSFOUR元素(216)。从而,消息200按分层数据集描述了地址。
将理解到XML消息对应于树形数据结构。图3示出了对应于消息200的树300。节点302对应于图2的“ADDRESS”标签,节点302的所有子树对应于包含在<ADDRESS>和</ADDRESS>定界符202和222(示于图2)之内的元素。这些所包含的元素是STREET元素204以及CITYSTATEZIP元素。如上所述,CITYSTATEZIP元素是复合元素,它包括其它元素。节点304对应于CITYSTATEZIP标签,节点304的所有子树对应于包含在<CITYSTATEZIP>和</CITYSTATEZIP>定界符206和220(示于图2)之内的元素。这些包含的元素是CITY元素208、STATE元素210和ZIP元素。ZIP元素同样是复合元素,它包括其它元素。从而,节点306对应于ZIP标签,而节点306的所有子树对应于包含在<ZIP>和</ZIP>定界符212和218之内的元素。这些包含的元素是FIVEDIGIT元素214和PLUSFOUR元素216。可以看到,树300对应于XML消息200中的结构,并示出包含在消息200中的邮政地址的分层结构。
消息一般遵循某种类型的预定义的结构或“模式”。例如,用于“地址”消息的模式可定义可在地址中表示的各种不同类型的结构。例如,这样一种模式可将地址消息定义成包含ADDRESS标签,并可进一步定义ADDRESS标签的可允许的结构的详细内容。例如,该模式可声明ADDRESS标签包含STREET元素,以及还包含另一个元素,该另一个元素可以是CITYSTATEZIP(用于美国地址)或CITYPROVINCEPOSTCODE(用于加拿大地址),或用于美国或加拿大之外的地址的CITYCOUNTRY。对于每种类型的元素(如CITYSTATEZIP),该模式可定义该元素的构成子元素的可允许的结构。根据ADDRESS标签的这种定义,将理解到消息200及其对应的树300(如图2和3所示)仅仅是ADDRESS标签的可允许的内容的一个例子,即用于美国地址的结构,可选地是,合法的ADDRESS可包含上述的其它类型的元素之一。
实际上,该模式定义了用于XML消息的可许可的语法。然而,可能形成在某个模式下语法上正确,但违反某个本体的规则的XML消息。如下面更特别地描述地那样,本发明提供一种机制,它可用于验证XML消息的本体。
树遍历
如上连同图3所述,XML消息可看作是树。根据本发明的一个特征,较佳地以深度优先顺序来遍历由XML消息表示的树。随着遇到树中的每个节点,根据一个或多个验证表提供的信息来验证节点。下面更特别地描述了“验证”节点是什么意思以及验证表本身的结构。然而,参考图4,描述的例子示出了以深度优先顺序遍历树是什么意思。
树400包括多个节点。树400的根标记为“A”。如该图所示,根节点的孩子标记为“A1”、“A2”和“A3”。这些孩子中的每一个又依次具有孩子,标记为“A11”、“A12”、“A21”、“A22”、“A31”以及“A32”。
当以深度优先顺序遍历树400时,以某一顺序遇到树的每个节点。以深度优先顺序遍历树的算法可递归式定义。对于一给定的树:
—首先访问该树的根节点;
—然后,以从左至右、深度优先的顺序访问该跟节点的每个子树(如果有的话)
由于每个子树实际上是具有其自己的根节点的一棵树(例如A1是A的一个子树的根节点),因此,以深度优先顺序遍历子树的算法与以深度优先顺序遍历顶层树的算法相同。从而,如本领域的技术人员将理解到的那样,该遍历算法可按递归函数来实现。
从而,当使用该递归算法遍历树400时,首先遇到的节点是根节点“A”。然后以深度优先顺序遍历根节点“A”的最左边的子树。由于每个子树其本身也是棵树,因此这些子树的每一个都具有根节点。A的最左边的子树的根节点标记为“A1”。从而,在访问了节点A之后,遍历树的算法应用到以A1为根的子树,且该子树首先被访问的节点是A1。A1同样具有子树,以从左至右的顺序访问这些子树。从而,在访问A1之后,以深度优先顺序遍历以A11为根的子树。由于A11没有孩子,即A11没有子树需要被遍历,因此以深度优先顺序遍历A11右边下一个子树(即以A12为根的树)。由于A12同样没有孩子,因此无子树需要遍历。从而,完成了对A1及其子树的遍历,算法进行到遍历节点A的下一个子树(即以A2为根的子树),并且以遍历以A1为根的子树相同的方式遍历该子树。
当使用上述递归算法遍历树之后,结果是以图4所示的顺序访问了树400中的所有节点,即所述顺序是:A、A1、A11、A12、A2、A21、A22、A3、A31、A32。
示例性验证表
如上所述,XML消息可符合一模式中规定的结构或语法,并仍然可在其本体中包含无效数据。例如,如上连同图2和3所述的那样,消息可包含地址,该地址可规定:城市=“雷蒙德市”、州=“华盛顿州”、邮递区号=“98052”。该信息语法上是有效的(即包括城市、州,并且邮递区号对于美国地址来说是正确的),并且实质上它也是有效的(即事实上98052是华盛顿州雷蒙德市的正确的邮递区号)。然而,应注意到,从地址的语法上没有办法确定该地址实质上是否有效。例如,“雷蒙德市,华盛顿州19103”是语法上有效的,但是实质上却是无效的,因为19103是宾夕法尼亚州费城的邮递区号,而不是华盛顿州雷蒙德市的邮递区号。从而,确保XML消息符合某一模式仅可确保语法有效性,而不能确保其它类型的有效性。本发明提供了一种用于对XML消息进行任意的有效性测试的框架。
图5示出了示例性的验证表500,它规定了要对某一类型的XML消息进行的验证测试。表500中示出的元素对应于树400(示于图4)的元素类型,即树400具有名为A、A1、A11等的元素,因此表500也是同样。验证表500包括四列502、504、506和508。对于验证表500的给定一行,诸条目具有下述含义:
—列502中的条目是该行所应用于的元素名;
—列504中的条目指示出对该元素规定的代表(delegate)是否是“排他的”。(术语“代表”和“排他的”将在下面特别解释);
—列506中的条目是当遇到元素时将调用的代表(或“处理程序”)的名称;以及
—列508中的条目是在元素及其全部子树都被处理之后将调用的代表。从而,表500中的第一行指示出,对于名为“A”的元素,当遇到该元素时将调用名为“fA”的代表,以及当验证了该元素的所有子树之后,要调用名为“postfA”的代表。此外,该行指示出该行中规定的代表不是“排他的”,即它们不排除对子树代表的便用。
“代表”是执行对某一类型的元素的验证的指定的代码片段。例如,用于图2中所讨论的CITYSTATEZIP元素的代表可包含(或至少参考)美国城市、州和邮递区号的表,来判断CITYSTATEZIP元素中指定的组合是否是正确的组合。要理解到本发明不限于任何特定类型的验证测试,结合了本发明的系统的用户可自由地编写他们自己的代表,并定义其使元素有效的含义。尤其是,应观察到,代表不限于考虑登记的元素的内容(或甚至是登记的子树的内容),而是还可考虑该子树外的信息(例如,用于CITYSTATEZIP元素的代表还可考虑街道地址(图2和3所示的元素204),以便判断zip+4值是否正确)。根据编写了什么代表可任意地定义有效性这个事实对验证任何类型的消息都提供了灵活性。
虽然将理解到根据本发明的系统可配置成使用任何指定的代码片段作为代表,但是在一个例子中,以诸如C#之类的编程语言来编写代表。
代表名在列506和列508中都出现。列506中命名的代表是在树遍历中访问一给定元素时将调用的代表。列508中命名的代表将在遍历了该元素的所有子树后被调用。从而,列508中命名的代表是“后处理程序”,因为它是在该元素及其所有子树都被访问之后被调用的。
列504中规定的“排他的”属性规定了对于当前元素的子树是否要调用代表。从而,在表500中,元素A2具有排他属性,意味着,当遇到类型A2的元素时,就不调用用于A2的子树的元素的个别代表,因为A2的代表具有对A2及其所有子树的“排他的”控制。从而,即使表500示出了用于元素A21和A22的代表,也不调用这些代表,因为A2具有“排他的”属性,防止了对A2的任一子树的任何元素调用代表。
根据本发明的系统可包含一种验证引擎,它走查XML消息(如以深度优先顺序遍历该消息所表示的树),并根据验证表中的规定应用代表。将理解到,验证引擎允许修改或替换验证测试,而无需访问验证引擎的源代码;可简单地通过从验证表中登记或解除登记代表,来改变验证测试。这种不用访问底层的验证引擎源代码就能修改验证测试的能力是本发明所提供的灵活性的一个实例。
表1示出了使用验证表500,通过验证引擎对树400(示于图1)执行的示例性验证测试。左边的列以事件出现的顺序示出了验证过程中的各种事件(如遇到元素以及完成元素的子树)。右边的列示出了根据发生的事件而调用哪个代表。如表1所示,即使元素A21和A22具有为其登记的代表,验证引擎也不调用这些代表,因为A21和A22是节点A2的孩子,且所登记的A2的排他标记设置为“是”。(如果在一不同的消息中,A21或A22是未标记为排他的某一另一节点的孩子,则验证引擎将遇到节点A21或A22,且在遇到这些节点时将调用代表fA21orA22)。
表1
引擎所遇到的元素 调用的代表
A fA
A1 fA1
A11 fA11
A11处的子树处理完毕 (后处理程序为空,所以不调用)
A12 fA12
A12处的子树处理完毕 postfA12
A1处的子树处理完毕 (后处理程序为空,所以不调用)
A2 fA2
A2处的子树处理完毕(fA2是排他的) postfA2
A3 (处理程序为空,所以不调用)
A31 fA31
A31处的子树处理完毕 (处理程序为空,所以不调用)
A32 (无登记,所以不调用)
A32处的子树处理完毕 (无登记,所以不调用)
A3处的子树处理完毕 postfA3
A处的子树处理完毕 postfA
根据本发明的一个特征,可以有全局验证表和局部验证表。本发明的体系结构允许这种可能性,即字段或字段组可在若干不同类的消息之间共用。这些公共字段的设置可存储在全局验证表中。仅应用于某一特定类的消息的任何设置可存储在局部验证表中。实际上,局部验证表充当全局验证表的一组类特定的置换。并且,在本发明的一个实施例中,可创建多个全局验证表,可根据某一上下文环境来选择某一特定的全局表来使用。
示例性验证过程
如上所述,根据本发明的验证引擎走查XML消息,根据一个或多个验证表对消息中的各种元素调用代表。下文是对验证引擎所执行的过程的描述。
验证引擎以XML消息的根元素(如图2至3的例子中的ADDRESS元素,或图4的例子中的“A”元素)为起始。该起始元素设置成“当前”元素。然后,对于当前元素(在该说明中称为“X”),验证引擎:
—在局部验证表中对X查找“元素处理程序”列中的代表。如果该局部验证表中的该列中规定了代表,则引擎调用元素处理程序。
—如果局部表没有在“元素处理程序”列中对X规定代表,则引擎在全局表中查找用于X的代表。如果在全局表中的“元素处理程序”列中规定了用于X的处理程序,则调用该规定的代表。如果任一表中都没有规定用于元素X的代表,则没有用于元素X的代表被调用。
—对于元素X的每个孩子元素,重复上述步骤(除非X登记为“排他的”)。在一个实施例中,这些步骤以递归函数来实现,可在元素X的子树上调用。
—如果对于X存在后处理程序代表(局部表中或全局表中),则在处理了X的所有子树后,调用后处理程序。(如果在两种表中都存在用于X的后处理程序代表,则仅调用局部表中规定的代表)
图6以流程图的形式示出了验证引擎执行的过程。一开始,定义“当前节点”为树的根节点(602)(如XML消息中的根元素)。然后参考局部验证表。如果在局部验证表中对于该当前节点存在的条目示出用于该节点类型的代表(604),则从局部验证表使用该条目(606)。如果局部验证表中没有条目,则判断全局验证表中是否有条目(607)。如果全局验证表中有条目,则使用该条目(608)。假设在局部验证表或全局验证表中找到了某个代表,则调用该代表(610);否则过程如下述那样进行到614。
如果对于当前节点的条目(即来自局部或全局验证表(不论实际上使用哪一个表)的条目)指示出该条目不是“排他的”(612),则图6的过程在当前节点的每个孩子节点上被递归调用(614)。较佳地,以从左至右的顺序对这些孩子节点调用所述过程。如果对于当前节点的条目指示出该条目是排他的,则图6的过程不对孩子节点调用,因为当前节点的条目对该当前节点的所有自由有排他控制。
如果对当前节点有后处理程序代表(616),则调用该后处理程序(618)。(该后处理程序或者直接在610处调用的代表之后应用(在当前节点条目是排他的情况下),或者在处理了子树之后应用(在当前节点条目不是排他的情况下))。在应用了后处理程序代表(或已判断出没有后处理程序代表之后),判断当前节点是否是顶层树的根(620)。如果当前节点是顶层树的根(如图3中的节点302,或图4中的节点“A”),则过程终止。否则,过程返回到其调用调用程序(因为如果当前节点不是顶层根,则图6的过程已有该过程的在先实例所递归调用)。
注意到已给出的上述例子仅仅用于解释的目的,而不应被解释成对本发明的限制。虽然参考了各种实施例来描述了本发明,但是理解到这里所使用的词语仅仅是说明和例示用的词语,而不是限制性的词语。此外,虽然这里参考特定的手段、材料和实施例来描述了本发明,但是本发明不打算限制于这里所揭示的任何特定例,相反,本发明扩展到如本发明的范围之内的所有功能上相当的结构、方法和使用。能够从本说明书中获益的那些本领域的技术人员可进行各种修改,可作出各种修改而不背离本发明的范围和要旨。

Claims (25)

1.一种计算机可读媒体,以执行验证消息的方法的计算机可执行指令进行编码,所述方法包括:
遇到消息中的第一元素;
参考第一验证表以识别与该第一元素相对应的第一代表;
将所述第一代表应用于所述第一元素;
遇到作为所述第一元素的一棵子树的根的第二元素;以及
根据所述第一验证表对所述第二元素应用第二代表。
2.如权利要求1所述的计算机可读媒体,其特征在于,还包括:
在参考所述第一验证表之前,判断第二验证表不包含与所述第一元素对应的代表。
3.如权利要求1所述的计算机可读媒体,其特征在于,所述应用所述第一代表的动作是在所述遇到所述第二元素的动作之前进行的,并且所述方法还包括:
在应用所述第二代表之后,参考所述第一验证表,以识别与所述第一元素对应的第三代表;以及
对所述第一元素应用所述第三代表。
4.如权利要求1所述的计算机可读媒体,其特征在于,对于所述第一验证表中列出的每个元素,所述第一验证表包括一标记,指示出是否要遍历一给定元素的子树,其中所述方法还包括:
判断与所述第一元素对应的标记指示出要遍历所述第一元素的子树。
5.如权利要求1所述的计算机可读媒体,其特征在于,所述方法还包括:
根据一准则,从多个验证表中选择所述第一验证表,所选择的验证表是要被参考来识别所要应用的代表的表。
6.如权利要求1所述的计算机可读媒体,其特征在于,所述第一代表根据一元素既不是所述第一元素也不是所述第一元素的子树,来作出至少一个判决。
7.如权利要求1所述的计算机可读媒体,其特征在于,所述消息包括可扩展标记语言(XML)内容。
8.如权利要求1所述的计算机可读媒体,其特征在于,所述第一代表和所述第二代表每一个都包含可解释的代码。
9.如权利要求1所述的计算机可读媒体,其特征在于,所述方法还包括:
基于根据包含所述第一验证表的一个或多个验证表的对所述消息应用代表,来判断所述消息是否有效。
10.一种验证消息的方法,其特征在于,包括:
创建一个或多个验证代表,每个验证代表适用于验证消息的一特定类型的元素;
创建对消息的各类元素规定了至少一个验证代表的第一验证表;以及
对消息应用验证引擎,其中对于消息的每个元素,所述验证引擎参考所述第一验证表,以识别要应用到该元素的验证代表,并将所识别的验证代表应用到该元素。
11.如权利要求10所述的方法,其特征在于,还包括:
创建对消息的每类元素规定了验证代表的第二验证表,
其中验证引擎参考第二验证表,如果对于一给定类型的元素,存在一条目,则应用由该第二验证表规定的验证代表,否则应用由第一验证表规定的验证代表。
12.如权利要求10所述的方法,其特征在于,所述第一验证表规定了用于所述消息的每类元素的第一和第二验证代表,当遇到该元素时,所述验证引擎对该元素应用第一验证代表,并在应用了该第一验证代表且应用了适用于该元素的任何子树的验证代表之后,对该元素应用第二验证代表。
13.如权利要求10所述的方法,其特征在于,所述消息包括可扩展标记语言(XML)内容。
14.如权利要求10所述的方法,其特征在于,所述消息以树形组织,消息的每个元素对应于树中的节点。
15.如权利要求10所述的方法,其特征在于,所述第一验证表对所述消息中的每类元素规定了一标记,指示出是否要把用于所述类型的元素的子树的验证代表应用于所述子树。
16.如权利要求10所述的方法,其特征在于,所述验证代表中每一个都包括可解释的代码。
17.如权利要求10所述的方法,其特征在于,至少一个验证代表包含空代表。
18.一种计算机可读媒体,其上存储有数据结构,所述数据结构包括:
多个元素名,每个元素名识别消息的一部分;以及
用于每个元素名的第一代表的对应名,每个第一代表包含验证与该元素名对应的消息的元素的代码。
19.如权利要求18所述的计算机可读媒体,其特征在于,所述数据结构还包括:
用于每个元素名的第二代表的对应名,每个第二代表包含在对应于该元素名的第一代表以及与对应于该元素名的元素的子树对应的任何代表都已运行了之后执行的代码。
20.如权利要求18所述的计算机可读媒体,其特征在于,所述数据结构还包括:
用于每个元素名的一标记,指示出是否要对与该元素名及其任何子树对应的元素排他地应用与该元素名对应的第一代表。
21.一种用于验证以树形组织的消息的系统,其特征在于,所述系统包括:
指示出多个代表的第一验证表,每个代表对应于树中的元素名;
遍历树的验证引擎,对于在遍历树的过程中所遇到的每个元素,验证引擎参考所述第一验证表,以识别要应用到所遇到的元素的多个代表之一,并通过调用所述代表来应用所识别的代表。
22.如权利要求21所述的系统,其特征在于,还包括:
指示出多个代表的第二验证表,每个代表对应于树中的元素名;
其中,对于在遍历树的过程中所遇到的每个元素,所述验证引擎参考所述第二验证表,以判断对于该遇到的元素是否存在一条目,如果存在这样一个条目,则验证引擎使用第二验证表中用于该遇到的元素的条目,如果第二验证表中不包含与所遇到的元素对应的条目,则验证引擎参考第一验证表。
23.如权利要求21所述的系统,其特征在于,所述第一验证表识别用于树中的至少一些元素的后处理代表,在调用了用于所述元素的代表以及用于所述元素的子树的代表之后,调用所述后处理代表。
24.如权利要求21所述的系统,其特征在于,所述消息包括可扩展标记语言(XML)内容。
25.如权利要求21所述的系统,其特征在于,每个代表包括可解释的代码。
CNB2004100589629A 2003-08-18 2004-07-23 用于验证分层组织的消息的系统和方法 Expired - Fee Related CN100444160C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/643,031 US7464331B2 (en) 2003-08-18 2003-08-18 System and method for validating hierarchically-organized messages
US10/643,031 2003-08-18

Publications (2)

Publication Number Publication Date
CN1584885A true CN1584885A (zh) 2005-02-23
CN100444160C CN100444160C (zh) 2008-12-17

Family

ID=34136577

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100589629A Expired - Fee Related CN100444160C (zh) 2003-08-18 2004-07-23 用于验证分层组织的消息的系统和方法

Country Status (5)

Country Link
US (1) US7464331B2 (zh)
EP (1) EP1513073B1 (zh)
JP (1) JP4758080B2 (zh)
KR (1) KR20050020932A (zh)
CN (1) CN100444160C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930705A (zh) * 2020-07-07 2020-11-13 中国电子科技集团公司电子科学研究院 二进制消息协议数据处理方法及装置

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378293B2 (en) * 2004-06-03 2016-06-28 Paypal, Inc. Method and apparatus to author and manage pages of a website
US7444345B2 (en) * 2005-02-15 2008-10-28 International Business Machines Corporation Hierarchical inherited XML DOM
US20070074185A1 (en) * 2005-08-30 2007-03-29 Microsoft Corporation Identifier expressions
US7694285B2 (en) * 2005-08-30 2010-04-06 Microsoft Corporation Relaxed and extended delegates
US20080040498A1 (en) * 2006-08-10 2008-02-14 Nokia Corporation System and method of XML based content fragmentation for rich media streaming
US8706724B2 (en) * 2009-06-24 2014-04-22 Nec Corporation Feature extraction device and feature extraction method
CN101739462B (zh) * 2009-12-31 2012-11-28 中兴通讯股份有限公司 可扩展标记语言编码方法、解码方法和客户端
US8307277B2 (en) 2010-09-10 2012-11-06 Facebook, Inc. Efficient event delegation in browser scripts

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3178151B2 (ja) * 1993-03-19 2001-06-18 富士ゼロックス株式会社 オブジェクト指向言語のメッセージコンパイル装置
TW490643B (en) * 1996-05-21 2002-06-11 Hitachi Ltd Estimated recognition device for input character string
US7117227B2 (en) 1998-03-27 2006-10-03 Call Charles G Methods and apparatus for using the internet domain name system to disseminate product information
US6389414B1 (en) * 1998-09-21 2002-05-14 Microsoft Corporation Internal database validation
US6584459B1 (en) * 1998-10-08 2003-06-24 International Business Machines Corporation Database extender for storing, querying, and retrieving structured documents
US6519617B1 (en) * 1999-04-08 2003-02-11 International Business Machines Corporation Automated creation of an XML dialect and dynamic generation of a corresponding DTD
US6584548B1 (en) * 1999-07-22 2003-06-24 International Business Machines Corporation Method and apparatus for invalidating data in a cache
US6535883B1 (en) * 1999-08-04 2003-03-18 Mdsi Software Srl System and method for creating validation rules used to confirm input data
KR100304482B1 (ko) * 1999-09-22 2001-11-02 구자홍 다중 계층구조를 가지는 사용자 선호도 정보구조와 이를 이용한 멀티미디어 정보 서비스 방법
AU1488101A (en) 1999-11-19 2001-05-30 Science Management Corporation Forms creation method and e-commerce method
US6484177B1 (en) * 2000-01-13 2002-11-19 International Business Machines Corporation Data management interoperability methods for heterogeneous directory structures
CA2404014A1 (en) * 2000-03-30 2001-10-11 Cygent, Inc. System and method for establishing electronic business systems for supporting communications services commerce
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US20020035559A1 (en) * 2000-06-26 2002-03-21 Crowe William L. System and method for a decision engine and architecture for providing high-performance data querying operations
JP2002032631A (ja) * 2000-07-18 2002-01-31 Pfu Ltd 商品コンフィグレーション装置、データベース作成装置及びプログラム記録媒体
JP2002215394A (ja) * 2000-08-15 2002-08-02 Fujitsu Ltd Webアプリケーション開発・実行システム及びWebアプリケーション生成装置
US7231606B2 (en) * 2000-10-31 2007-06-12 Software Research, Inc. Method and system for testing websites
DE10055145B4 (de) 2000-11-07 2004-09-23 Deutsche Post Ag Verfahren zum Versehen von Postsendungen mit Frankierungsvermerken
WO2002078286A2 (en) 2001-03-27 2002-10-03 Bea Systems, Inc. System and method for managing objects and resources with access rights embedded in nodes within a hierarchical tree structure
US7058558B2 (en) * 2001-05-25 2006-06-06 The Boeing Company Simulation system and method
US20030040887A1 (en) * 2001-06-04 2003-02-27 Shupps Eric A. System and process for constructing and analyzing profiles for an application
US6915454B1 (en) * 2001-06-12 2005-07-05 Microsoft Corporation Web controls validation
US20030125929A1 (en) * 2001-12-10 2003-07-03 Thomas Bergstraesser Services for context-sensitive flagging of information in natural language text and central management of metadata relating that information over a computer network
US6954766B2 (en) * 2001-12-21 2005-10-11 Juniper Networks, Inc. Systems and methods for organizing and validating data in documents
US20030126139A1 (en) * 2001-12-28 2003-07-03 Lee Timothy A. System and method for loading commercial web sites
US20030163778A1 (en) * 2002-02-28 2003-08-28 Michelle Shores System and method for improved validation for claims compliance
US20040030788A1 (en) * 2002-05-15 2004-02-12 Gaetano Cimo Computer message validation system
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US7461385B2 (en) * 2003-05-06 2008-12-02 Qad Corporation Method for establishing a new user interface via an intermingled user interface
US7296223B2 (en) * 2003-06-27 2007-11-13 Xerox Corporation System and method for structured document authoring

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930705A (zh) * 2020-07-07 2020-11-13 中国电子科技集团公司电子科学研究院 二进制消息协议数据处理方法及装置
CN111930705B (zh) * 2020-07-07 2023-03-14 中国电子科技集团公司电子科学研究院 二进制消息协议数据处理方法及装置

Also Published As

Publication number Publication date
JP2005063416A (ja) 2005-03-10
KR20050020932A (ko) 2005-03-04
CN100444160C (zh) 2008-12-17
EP1513073B1 (en) 2012-06-13
JP4758080B2 (ja) 2011-08-24
US20050044093A1 (en) 2005-02-24
EP1513073A2 (en) 2005-03-09
EP1513073A3 (en) 2008-01-09
US7464331B2 (en) 2008-12-09

Similar Documents

Publication Publication Date Title
Bobillo et al. Fuzzy ontology representation using OWL 2
CN1148680C (zh) 显示分层结构的方法、系统以及一种计算机系统
CN1148681C (zh) 呈现分层结构的方法和系统以及一个计算机系统
CN1777886A (zh) 使用资源有限的设备处理电子表单的方法和设备
US20040098667A1 (en) Equality of extensible markup language structures
CN1906609A (zh) 在数据中心中使用的用于进行数据格式转换的系统
CN1825303A (zh) 用于编辑标记语言文档的方法和数据处理系统
CN1509007A (zh) 用于解析二进制数据的方法、系统及计算机产品
US6438516B1 (en) Method and apparatus for optimizing unicode composition and decomposition
CN1770169A (zh) 向用户/组授予访问控制列表所有权的访问控制系统和方法
CN1466722A (zh) 管理文档文本的工作流程系统及利用其的文档文本管理方法
CN1577295A (zh) 使用最佳化方法实现存储器存取控制
CN101295332A (zh) 一种dicom文件病人信息匿名化处理方法
Lee et al. Reasoning about XML schema languages using formal language theory
CN1584885A (zh) 用于验证分层组织的消息的系统和方法
CN106843878A (zh) 一种模型生成方法和系统
US20090006943A1 (en) Method and apparatus for schema validation
CN102622219A (zh) 对动态调用服务的执行结果进行渲染的方法、装置及系统
US10467210B2 (en) Interpreting HL7 segment hierarchy dynamically
US7509631B2 (en) Systems and methods for implementing a computer language type system
CN1384432A (zh) 用于试图同html或xml类型文档接口交互的应用的内部数据结构
CN1898644A (zh) 有效的小占用xml分析
CN1855052A (zh) 一种从树型结构数据和一组代码片断结构体生成目标源代码的方法
Irwin et al. Object oriented metrics: Precision tools and configurable visualisations
CN1667610A (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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150423

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150423

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081217

Termination date: 20200723

CF01 Termination of patent right due to non-payment of annual fee