CN101634982A - 用于验证xml文档的方法和系统 - Google Patents
用于验证xml文档的方法和系统 Download PDFInfo
- Publication number
- CN101634982A CN101634982A CN200810134072A CN200810134072A CN101634982A CN 101634982 A CN101634982 A CN 101634982A CN 200810134072 A CN200810134072 A CN 200810134072A CN 200810134072 A CN200810134072 A CN 200810134072A CN 101634982 A CN101634982 A CN 101634982A
- Authority
- CN
- China
- Prior art keywords
- rule
- data object
- rule objects
- context
- model
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/226—Validation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/86—Mapping to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/154—Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/221—Parsing markup language streams
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
- G06F40/55—Rule-based translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16C—COMPUTATIONAL CHEMISTRY; CHEMOINFORMATICS; COMPUTATIONAL MATERIALS SCIENCE
- G16C20/00—Chemoinformatics, i.e. ICT specially adapted for the handling of physicochemical or structural data of chemical particles, elements, compounds or mixtures
- G16C20/70—Machine learning, data mining or chemometrics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种用于验证XML文档的方法和系统。该方法包括解析至少一待验证的XML文档,并将其中的XML数据表示为至少一数据对象模型。解析至少一规则文档,并创建规则对象模型。从所述数据对象模型和规则对象模型,提取至少部分规则对象及至少部分数据对象。针对所提取的至少部分数据对象及至少部分规则对象,在相应的执行上下文中执行验证。
Description
技术领域
本发明涉及计算机文档的处理技术,尤其涉及用于验证XML文档的方法和系统。
背景技术
SGML(Standard Generalized Markup Language)标准通用置标语言,是国际化标准组织ISO采用的一个信息管理标准,作为提供与平台和应用软件无关的文件的一种手段。在文件中保留格式、索引和连接等信息。SGML为用户提供一种类似语法一样的机制,以定义这些文档的结构和标签,这些标签用于表示各个不同文档的格式结构。
XML(eXtensible Markup Language)可扩展置标语言,是W3C推出的一种语言标准,是一种SGML的浓缩形式。XML语言使得万维网开发者和设计者创立客户化的标记,在组织和表现信息时,比已有的HTML文档代码系统更具有灵活性。XML用于计算机网络系统的面向服务架构(Service-Oriented Architecture,简称SOA)以及Web服务的文档和数据的交换。XML作为数据交换格式的一个显著的优点,是验证(validation)技术的标准化。
多数XML应用程序开发人员希望能够有一种方法,保证所有XML实例都遵循特定的规则。这就要通过验证来保证。为此,很多人直接转而求助于模式语言,如DTD、W3C XML Schema(WXS)和RELAX NG。最佳方案可能是对XML实例应用简单的规则。
常用的验证技术,基于语法的验证方法。作为替代方法,Schematron是一种结构化的验证语言。Schematron语言允许直接表达规则,而不需要创建完整的语法基础设施。采用树式样(tree pattern),以Xpath表示式进行定义,以便用于断言,并以用户为中心提供XML文档的报告。使用式样表示验证规则,一般比使用内容模型定义相同的规则容易。树式样汇集起来形成Schematron模式。对于其它模式语言,Schematron是一种实用的工具。如果将规则应用于XML文档的内容或者按照规则进行检查,Schematron是一种非常有用的工具。Schematron极其灵活,可以表达各种不同的规则,表达能力甚至比其他模式语言(如DTD、W3C XMLSchema(WXS)和RELAX NG)都要好
业界和学术界对于实施Schematron进行了很多开发。图1示出了被广泛使用和参照的Schematron实施方式。可以参见http://www.schematron.com。这是一种比较著名的开放源代码实施方式。经常由其它项目重新使用。Schematron使用XSLT(XML StylesheetLanguage For Transformation),并且通过定义模式语言,以便在通过元方式表(即用于产生其它方式表的方式表)进行转换时,生成XSLT验证文件。图1展示了该处理过程。
http://www.ldodds.com/papers/schematron_xsltuk.html也介绍了Schematrion语言以及它的基于XSLT的实现。
此外,COSMOS(COmmunity-driven Systems Management in OpenSource)项目旨在为系统管理提供互操作的工具。COSMOS ResourceModeling子项目旨在为建立表述信息的通用模型提供支持,该信息用于在系统管理环境中共享。该项目使用SML和Schematron作为XML模式语言来定义这种公共模型。其使用基于XSLT的方法来以及skeleton1-5.xsl(http://xml.ascc.net/schematron/1.5/)参考实施方案来从模式提取schematron。
发明内容
上述已有技术全部基于XSLT方法。本发明提供了一种新的用于验证XML文档的方法和系统。该方法包括:解析至少一待验证的XML文档,并将其中的XML数据表示为至少一数据对象模型;解析至少一规则文档,并创建规则对象模型;从所述数据对象模型和规则对象模型,提取至少部分数据对象及至少部分规则对象;针对所提取的至少部分数据对象及至少部分规则对象,在相应的执行上下文中执行验证。
本发明还提供了一种用于验证XML文档的系统,包括:数据解析装置,用于解析至少一待验证的XML文档,并将其中的XML数据表示为至少一数据对象模型;规则解析装置,用于解析至少一规则文档,并创建规则对象模型;提取装置,用于从所述数据对象模型和规则对象模型,提取至少部分数据对象及至少部分规则对象;以及验证装置,用于针对所提取的至少部分数据对象及至少部分规则对象,在相应的执行上下文中执行验证。
在本发明的一个实施例中,所述数据对象模型和所述规则对象模型在内存中创建。
在本发明的另一个实施例中,所述规则文档为Schematron文档,所述规则对象模型中的规则对象保持与所述Schematron文件里面的元素相应的层次关系。所述XML文档中的每个元素,被映射到数据对象模型中的一个数据对象,所述数据对象保持与所述待验证的XML文档的元素相应的层次关系。
其中,根据预先确定的规则提取标准,从所述规则对象模型,提取至少部分规则对象。其中,根据预先确定的数据对象提取标准,从所述数据对象模型,提取所述至少数据对象。
在本发明的另一个实施例中,进一步包括以下步骤:生成所提取的至少一规则对象的执行上下文,并将该执行上下文注册到一上下文库中,将所述至少一规则对象在该执行上下文中执行验证。还可以从一上下文库中,检索所提取的一规则对象的执行上下文,将所述该规则对象在该执行上下文中执行验证。
附图说明
图1示出了根据已有技术的使用Schematron的基于XSLT的XML文档的验证方法。
图2示出了根据本发明一实施例的用于验证XML文档的方法的流程图。
图3示出了根据本发明另一实施例的用于验证XML文档的系统方框图。
图4示出了根据本发明一实施例的内存中的规则对象模型。
图5示出了根据本发明一实施例的执行上下文示意图。
图6示出了根据本发明另一实施例的用于验证XML文档的方法的流程图。
具体实施方式
图1示出了根据已有技术的使用Schematron的基于XSLT的XML文档的验证方法。本发明背景技术部分中所描述的已有技术,均基于XSLT对XML文档进行验证。这种基于XSLT的验证方法具有多方面的缺点。基于XSLT实现Schematron验证决定了必然的两步走的过程,因为XSLT引擎处理的文件一定是XSLT语法文件,它并不能直接执行Schematron文件。只有先把Schematron转换成一个可执行的XSLT文件之后,XSLT引擎才可以继续对转换成的新XSLT文件去执行。在图1中,作为XML规则文档Schematron文档10,首先被转换为XSLT文档Schematron.xslt文档20。这个新XSLT文件本身描述的内容就是Schematron所定义的规则。
应用Schematron对XML文档进行验证的过程可以分为两个步骤。第一个步骤是通过在XSLT引擎60上执行Schematron.xslt文档20将Schematron规则文件转换为中间文件即Validator.xslt文档30。第二步则是通过在XSLT引擎60上执行生成的Validator.xslt文档30对XML文档40进行验证生成最后的验证报告(Validation Report)50。
这种基于XSLT的验证方法,两次XSLT转换引起性能问题。Schematron模式被转换为相应的XSLT文档,一般以元方式表(meta-stylesheet)的方式来实施,该元方式表称为纲要(skeleton)。该纲要被应用于Schematron模式,得到的XSLT依次应用到XML实例文档。在验证处理中,由于要进行两次基于XSLT的转换,性能变成了关键的问题。尤其是在一些有实时处理要求的环境中,例如注册和终端用户和应用进行注册和存储产生的大量同时操作。
这种基于XSLT的验证方法,缺少规则上下文的共享。每个规则的上下文不能共享,因此在验证过程中许多节点被访问一次以上。这对于性能来说也是一个关键问题。使用Schematron难以进行fail-fast验证。fail-fast是指容错的轻量级形式。其中,一个应用或系统服务在遇到错误时自行终止。Schematron验证基于XSLT转换,由于XSLT的特性很难得到fail-fast的实施方式。
这种基于XSLT的验证方法,存在XSLT产生的匹配问题。在基于XSLT的实施中,通常存在匹配问题。例如,当在相同的式样(pattern)中,一些规则上下文的范围相互交叠,这将导致多于一条规则被满足而产生触发。使用基于XSLT的实施方式,每个规则被表示为一个模板(template),但是对于XSLT1.0,如果多个模板被同时匹配,只有具有最高优先级的模板被调用,其它的模板被忽略。XSLT2.0具有执行“match-next”的特征,但是,仍然不能完全解决该问题。这种缺陷在Schematron规范和XSLT性能之间造成了隔阂。
这种基于XSLT的验证方法,对于在Schematron文档中的细粒度断言,难以支持部分验证。使用XSLT方式,在Schematron文档中,可选的规则容器的最小单元是“段(phase)”。用户或应用无法选择更细粒度的单元,例如规则或断言,以便进行验证。尽管对于灵活的验证方面具有许多先进的特性,当需要验证仅仅具有一个段的子集的XML文档,仍将产生问题。对于一个段的子集,例如,用户选择的多条规则或多条断言,和对于标准规范(如WS-I BP等)的特定版本或部分的多条规则或断言。
图2示出了根据本发明一实施例的用于验证XML文档的方法,该方法包括以下步骤。在步骤S10,解析至少一待验证的XML文档,并将其中的XML数据表示为至少一数据对象模型。该数据对象模型可以在内存中创建并保存,也可以利用其它便于存取的硬件和/或虚拟软件的技术进行创建并保存。该数据对象模型,可以采用树结构,如文档对象模型(DocumentObject Model,简称DOM)。所述XML文档中的每个元素,可以被映射到数据对象模型中的一个数据对象。所述数据对象也可以保持与所述待验证的XML文档的元素相应的层次关系。
在步骤S20,解析至少一规则文档,并创建规则对象模型。该规则对象模型可以在内存中创建并保存,也可以利用其它便于存取的硬件和/或虚拟软件的技术进行创建并保存。
在步骤S15,从所述数据对象模型,提取至少部分数据对象。提取的数据对象标准,可以预先确定,然后根据该标准自动选择数据对象。也可以将数据对象模型通过用户接口提供给用户,由用户从该数据对象模型中选择数据对象。还可以根据用户定义的函数来选择数据对象。
在步骤S25,从所述规则对象模型,提取至少部分规则对象。提取的规则对象标准,可以预先确定,然后根据该标准自动选择规则对象。也可以将规则对象模型通过用户接口提供给用户,由用户从该规则对象模型中选择规则对象。还可以根据用户定义的函数来选择规则对象。
在步骤S30,针对所提取的至少部分数据对象及至少部分规则对象,在相应的执行上下文中执行验证。所述执行上下文,可以预先确定。也可以根据规则对象及其要验证的数据对象来生成。还可以保存一上下文库,该库中存储有多个用于验证的执行上下文。本领域的技术人员可以理解,还可以从该上下文库中,检索所提取的一规则对象的执行上下文,将所述该规则对象在该执行上下文中执行验证。
根据本发明的一个实施例,既可以对整个XML实例文档进行关于全部规则、或者部分规则的验证,又可以对XML实例的部分数据进行关于全部规则、或者部分规则的验证。当验证的数据对象和规则对象确定后,验证的执行过程,是针对这些验证的数据对象,在一定的执行上下文之下,应用执行这些规则对象。
根据本发明的另一实施例,生成所提取的至少一规则对象的执行上下文,并将该执行上下文注册到一上下文库中,将所述至少部分规则对象在该执行上下文中执行验证。
根据本发明的另一实施例,其中,上述数据对象模型和所述规则对象模型在内存中创建。所述规则文档为Schematron文档,所述规则对象模型中的规则对象保持与所述Schematron文件里面的元素相应的层次关系。
根据本发明的另一实施例,其中进一步包括响应于需要快速退出(fail-fast)的规则被触发,停止执行验证。
图3示出了根据本发明另一实施例的用于验证XML文档的系统方框图。图3中,XML文档101包括需要使用规则进行验证的内容。例如,客户购买的订单需要被验证,该XML实例如下。
<?xml version=″1.0″encoding=″UTF-8″?>
<employees xmlns=″http://example.ibm.com/employee″>
<employee serialNumber=″SOADC913247″sex=″FeMale″title=″Mr″
deptId=″SOADC″>
<firstName>Chuan</firstName>
<lastName>WEN</lastName>
<assets>
<asset assetNumber=″P2PQH402″capitalizedDate=″2008-04-10″
status=″active″>
<complianceInto>
<check date=″2008-01-10″standard=″Sec300″status=″passed″/>
<check date=″2008-02-18″standard=″Sec400″status=″failed″/>
<check date=″2008-03-22″standard=″Sec800″status=″failed″/>
</complianceInfo>
<items>
<item partNum=″001-AA″>
<productName>PC</productName>
<quantity>1</quantity>
<price>13000.80</price>
</item>
<item partNum=″002-BB″>
<productName>keyboard</productName>
<quantity>1</quantity>
<price>288.88</price>
</item>
<item partNum=″003-CC″>
<productName>Monitor</productName>
<quantity>2</quantity>
<price>2000</price>
</item>
</items>
</asset>
<asset assetNumber=″A22J7602″capitalizedDate=″2008-03-22″
status=″unused″>
<unused Info reason=″LowerPerformance″>
<detail>
The performance of this assset is very lower!
</detail>
</unusedInfo>
</asset>
</assets>
</employee>
</employees>
在上述XML实例的数据中,包括一个员工姓“WEN”名“Chuan”,其员工号为“SOADC913247”,性别“FeMale”,称呼“Mr”。该员工的名下还包括了一些资产的信息。
Schematron文档102,用于存储用于对上述XML文档进行验证的规则。Schematron语言允许直接表达规则,用于保证所有XML实例都遵循特定的规则。如果将规则应用于XML文档的内容或者按照规则进行检查,Schematron是一种非常有用的工具。例如,对于一家出版技术文档的公司,由不同的作者供稿。编辑们希望用一组规则检查提交的文档,以便保证文档符合编辑要求,并且出版工具能够正确地处理它。
Schematron文档中,声明用于定义各种XML词汇,并且可以在不同的基于XML的应用中共享。约束规则不仅仅是简单的基于XML Schema(模式)的验证,其对于形式和正确性进行严格检查,而且还包括复杂的应用逻辑以用于多个XML文档。例如,可以使用以下Schematron文档来表述规则,以便验证上文例举的XML文档。
<?xml version=″1.0″encoding=″UTF-8″?>
<schema xmlns=″http://purl.oclc.org/dsdl/schematron″>
<title>Employee and Asset</title>
<ns uri=″http://example.ibm.com/employee″prefix=″em″/>
<pattern name=″Basic validation″>
<rule context=″/em:employees/em:employee″>
<assert
test=″(@sex=′Male′and@title=′Mr′)or(@sex=′Female′and(@title=′Mrs′or@title=′Miss′))″>
The value of title does not match the value of sex.
</assert>
<assert test=″@serialNumber and@deptId″>
Both serialNumber and deptId must be present.
</assert>
<report test=″not(starts-with(@serialNumber,@deptId))″>
The serialNumber must starts with the deptId.
</report>
</rule>
</pattern>
<pattern name=″Assets count validation″>
<rule context=″/em:employees/em:employee/em:assets″>
<assert test=″count(em:asset[@status=′active′])>=1″>
Each employee should have at least one asset which status is active.
</assert>
<report test=″count(em:asset)>10″>
Each employee should have at most ten assets.
</report>
</rule>
</pattern>
<pattern name=″Asset price validation″>
<rule context=″/em:employees/em:employee/em:assets/em:asset[@status=′active′]/em:items″>
<assert test=″em:item″>
Each asset which status is active should have at least one item.
</assert>
<report
test=″sum(em:item/em:p rice/text())>10000″>
For each employee,the sum of price of all the active assets can′t be greater than 10000.
</report>
</rule>
</pattern>
<pattern name=″Asset advanced validation″>
<rule context=″/em:employees/em:employee/em:assets/em:asset[@status=′active′]″>
<assert test=″em:complianceInfo″>
Each active asset must include the compliance check information.
</assert>
</rule>
<rule
context=″/em:employees/em:employee/em:assets/em:asset[@status=′active′]/em:complianceInfo/em:check″>
<report test=″@standard=′Sec300′and not(@status=′passed′)″>
If the check standard is′Sec300′,corresponding status must be′passed′.
</report>
<report test=″@standard=′Sec400′and not(@status=′passed′or@status=′uncertain′)″>
If the check standard is′Sec400′,corresponding status should be′passed′or′uncertain′.
</report>
<report test=″@standard=′Sec800′and@status=′failed′″>
If the check standard is′Sec800′,and corresponding status is present,the status should be not
′failed′.
</report>
</rule>
<rule context=″/em:employees/em:employee/em:assets/em:asset[@status=′unused′]″>
<assert test=″em:unusedInfo″>
The unused assets must include the unused information.
</assert>
<assert test=″em:unusedInfo/@reason!=″or em:unusedInfo/detail/text()!=″″>
Asset[serial number:<value-of select=″./@assetNumber″/>]is unused,but has not unused reason
or detail.
</assert>
</rule>
</pattern>
</schema>
在上述Schematron文档中,包括对上述XML文挡进行验证的规则,如其中断言的″(@sex=′Male′and@title=′Mr′)or(@sex=′Female′and(@title=′Mrs′or@title=′Miss′))″用于验证上述XML文挡中WEN Chuan的称呼是否正确。如果不正确,则输出“The value of title does not match thevalue of sex”。
验证引擎103,其使用规则对象模型,对目标XML对象模型执行结构和内容约束的验证。本领域的技术人员可以理解,该验证引擎103根据具体应用的需要,可以包括以下模块的部分。如可以根据需要选用或不选用用户定义的函数114或输出生成器注册表115。
XML解析器104,用于解析XML文档,并且可以使用不同工具语言来实施,例如Java、C#等等。解析器可以通过尝试读取文档并解释其内容的一段代码来实现。XML解析器读取XML文档,按照一定的规则(语法)访问XML数据,然后确定如何访问或检索这些数据。典型地,解析器可以是文档对象模型(DOM)解析器或流API XML(SAX)解析器。
XML解析器104,解析至少一待验证的XML文档1、XML文档2和/或XML文档3,并将其中的XML数据表示为至少一XML数据对象模型105。其中,所述XML文档中的每个元素,被映射到数据对象模型中的一个数据对象,所述数据对象模型保持与所述待验证的XML文档的元素相应的层次关系。
XML解析器104,可以在内存中解析待验证的XML文档,并将得到的XML数据对象模型105存储在内存中。这样,通过使用在内存中的数据对象模型而进行精确匹配,解决了匹配时间问题。使得根据用户的选择或者预定的方案,对XML文档的部分进行灵活的验证,即XML数据对象模型105中的部分对象进行验证,具有实际的可行性。
XML数据对象模型105,可以是常用的文档对象模型(DOM)。其中,XML文档一般被模型化为节点标记的树。文档中的每个元素都被映射到该树中的一个子树,其根节点使用元素的标签进行标记。
规则解析器106,解析至少一规则文档,如图3中所示Schematron文档1、Schematron文档2和/或Schematron文档3,并创建规则对象模型107。所述规则对象模型可以在内存中创建。所创建的规则对象模型107也可以存储在内存中。规则解析器106,用于解析使用扩展Schematron语言的约束规则。这些约束规则可以是组织良好的XML文档,它们可以被任何XML解析器解析。根据本发明的一个实施例,约束规则解析器106基于DOM API(Document Object Model Application Programming Interface)来将约束规则文档解析到内存中的规则对象模型107。
在本发明的另一个实施例中,所述规则文档可以是Schematron文档,所述规则对象模型中的规则对象保持与所述Schematron文件里面的元素相应的层次关系。规则解析器106的处理过程是指将Schematron文件按照它本身的语法规范进行解析,然后在内存中生成相应的规则对象模型。具体来说,Schematron文件本质是也是一个XML文件,首先通过通用的XMLDOM处理机制解析Schematron文件,并根据对于元素的名称创建相应的内存对象。例如,当解析出的XML原始名称为rule时,相应的将创建规则对象模型。因为Schematron文件里面的元素是有层次关系的,相应的内存中的规则对象模型也保持对应的层次关系。
举例说明,下面的这个Schematron文件可以生成如图4所示的内存中的规则对象模型。
Schematron文件:
<?xml version=″1.0″encoding=″UTF-8″?>
<schema xmlns=″http://purl.oclc.org/dsdl/schematron″>
<title>Employee and Asset</title>
<ns uri=″http://example.ibm.com/employee″prefix=″em″/>
<pattern name=″Basic validation″>
<rule context=″/em:employees/em:employee″>
<assert
test=″(@sex=′Male′and@title=′Mr′)or(@sex=′Female′and(@title=′Mrs′or@title=′Miss′))″>
The value of title does not match the value of sex.
</assert>
<assert test=″@serialNumber and@deptId″>
Both serialNumber and deptId must be present.
</assert>
<report test=″not(starts-with(@serialNumber,@deptId))″>
The serialNumber must starts with the deptId.
</report>
</rule>
</pattern>
<pattern name=″Assets count validation″>
<rule context=″/em:employees/em:employee/em:assets″>
<assert test=″count(em:asset[@status=′active′])>=1″>
Each employee should have at least one asset which status is active.
</assert>
<report test=″count(em:asset)>10″>
Each employee should have at most ten assets.
</report>
</rule>
</pattern>
<pattern name=″Asset price validation″>
<rule context=″/em:employees/em:employee/em:assets/em:asset[@status=′active′]/em:items″>
<assert test=″em:item″>
Each asset which status is active should have at least one item.
</assert>
<report
test=″sum(em:item/em:price/text())>10000″>
For each employee,the sum of price of all the active assets can′t be greater than 10000.
</report>
</rule>
</pattern>
<pattern name=″Asset advanced validation″>
<rule context=″/em:employees/em:employee/em:assets/em:asset[@status=′active′]″>
<assert test=″em:complianceInfo″>
Each active asset must include the compliance check information.
</assert>
</rule>
<rule
context=″/em:employees/em:employee/em:assets/em:asset[@status=′active′]/em:complianceInfo/em:check″>
<report test=″@standard=′Sec300′and not(@status=′passed′)″>
If the check standard is′Sec300′,corresponding status must be′passed′.
</report>
<report test=″@standard=′Sec400′and not(@status=′passed′or@status=′uncertain′)″>
If the check standard is′Sec400′,corresponding status should be′passed′or′uncertain′.
</report>
<report test=″@standard=′Sec800′and@status=′failed′″>
If the check standard is′Sec800′,and corresponding status is present,the status should be not
′failed′.
</report>
</rule>
<rule context=″/em:employees/em:employee/em:assets/em:asset[@status=′unused′]″>
<assert test=″em:unusedInfo″>
The unused assets must include the unused information.
</assert>
<assert test=″em:unusedInfo/@reason!=″or em:unusedInfo/detail/text()!=″″>
Asset[serial number:<value-of select=″./@assetNumber″/>]is unused,but has not unused reason
or detail.
</assert>
</rule>
</pattern>
</schema>
该规则对象模型中的对象与上文Schematron文件中的元素保持了相应的层次关系。例如,图4中第1行的对象schema Schema(id=35)对应于Schematron文件中开始于第2行的元素<schemaxmlns=″http://purl.oclc.org/dsdl/schematron″>。图4中第4行的对象[0]Pattern(id=79)对应于Schematron文件中开始于第5行的元素<patternname=″Basic validation″>。图4中第11行的对象[0]Rule(id=95)对应于Schematron文件中开始于第6行的元素<rulecontext=″/em:employees/em:employee″>。图4中第15行的对象[0]Assertion(id=109)对应于Schematron文件中开始于第7行的元素
<assert
test=″(@sex=′Male′and@title=′Mr′)or(@sex=′Female′and(@title=′Mrs′or@title=′Miss′))″>
The value of title does not match the value of sex.
</assert>。
规则对象模型107可以表示规则在内存中的模型,由规则解析器106生成。其核心元素包括规则上下文元素、规则逻辑表述和验证输出,等等。
XML数据提取器108用于提取XML文档对象模型树的节点。XPath是一种被广泛使用的语言,用于对于XML文档的各部分进行寻址,以便提取数据对象。XPath不仅仅用于单独的XML查询语言,而且经常用于主语言,如XQuery和XSLT。例如,XPath查询包括一个地址路径和输出表达。该地址路径是一个地址序列,用于确定从文档根节点到需要的元素。输出表达确定形成结果的一个匹配元素的部分或函数。
用于数据提取的用户交互模块,即用户接口109。用户接口109,用于帮助用户从目标XML文档中选择需要验证的元素。这种数据的例子可以是具有相同类型(type)的元素,整个DOM树的一个子树,或者使用XPath模式(pattern)过滤出的一组元素,等等。这种数据选择和/或选定的数据元素的信息,可以传递到规则选择模块110,用于确定用于部分验证的细粒度单元,如规则或断言。
规则选择模块110,用于与终端用户/应用交互,以便选择用于验证的规则。用于规则选择的信息,可以由用户生成,如用户直接从用户接口选择要使用的规则/断言,或者可以自动生成,例如使用来自用于数据提取的用户交互模块109的数据选择信息来生成。最后,用于规则选择的信息被传递给规则解析器,来生成规则对象模型以用于验证。
规则上下文组装器(populator)111,用于组装每个规则的执行上下文(Context)112。如果多个规则具有相关的执行范围,则这些上下文可以被多个规则共享。
规则执行上下文112,是每个规则应用于XML实例文档的具体执行范围。这些规则执行上下文可以标记为分等级的和可共享的。例如,在图5中,上下文A、B、C和D是分别用于不同规则的规则执上下文。在图中,上下文A是“po:order”,其含义是在根节点下的全部订购元素。规则组A的全部规则,在该上下文(全部订购元素)中被评估。然后,组装后的上下文A,可以注册到该验证处理的上下文注册表。
上下文B是“.[@orderStatus=′Paid′]”,其含义是那些具有已付款(paid)状态的定购元素。上下文B的范围被评估,可以基于上下文A的范围,而不是DOM树的根元素。上下文C的范围被评估,也可以基于上下文B的范围,其指示已付款定单,而不是全部订单。该上下文A和B,均可以从验证处理的上下文注册表中提取。
在上下文A之下的规则,将在它们的执行上下文(全部订购元素)之下被发出(fire)。当组装上下文B时,如果没有上下文层级,可以从根节点确定这些元素,而不是从已经组装的定购元素确定。根据本发明的一个实施例,上下文B的组装,可以基于已完成的订单元素(上下文A),而不是基于全部根节点,因此可以减少提取过程的工作量。
规则匹配器113,用于在当前的规则执行上下文之下,评估每个规则的断言。如果评估结果为假,该规则被触发。例如,上面提及到的规则如下描述了员工的性别(sex属性)和头衔(title属性)必须一致、而且必须有序列号serialNumber和部门Id以及序列号必须以部门Id开头。
<rule context=″/em:employees/em:employee″>
<assert
test=″(@sex=′Male′and@title=′Mr′)or(@sex=′Female′and(@title=′Mrs′or@title=′Miss′))″>
The value of title does not match the value of sex.
</assert>
<assert test=″@serialNumber and@deptId″>
Both serialNumber and deptId must be present.
</assert>
.........
</rule>
那么,在匹配这些断言时,规则匹配器113首先基于XPath语句即元素rule的context属性----“/em:employees/em:employee”从XML实例文档中获取DOM元素。在XML实例文档中执行该XPath语句获取到如下的元素:
<employee serialNumber=″SOADC913247″sex=″FeMale″title=″Mr″
deptId=″SOADC″>
......
</employee>
接着,匹配第一个断言,在上述获取到的DOM元素上执行test的属性值即“(@sex=′Male′and@title=′Mr′)or(@sex=′Female′and(@title=′Mrs′or@title=′Miss′))”。返回的值为假,即该断言满足条件,会被触发,“The value of title does not match the value of sex”会作为验证结果输出。而在匹配第二个断言时,执行test的属性值即“@serialNumberand@deptId”。返回的值为真,即该断言不满足条件而不会被触发。
根据本发明的一个实施例,既可以对整个XML实例文档进行关于全部规则、或者部分规则的验证,又可以对XML实例的部分数据进行关于全部规则、或者部分规则的验证。当验证的数据对象和规则对象确定后,验证的执行过程可以与上述一样,即针对这些验证的数据对象,在一定的执行上下文之下,应用执行这些规则对象。
用户定义的函数(Function)114。除了本身的Xpath函数之外,用户可,能需要扩展自定义的函数(功能),以便实施特别要求。用户定义的函数不仅仅用于帮助从XML文档中提取数据,而且还可以用于组装规则执行上下文,并评估规则的断言。
输出生成器注册表(Registry)115,包括多个不同的输出生成器,其由用户基于他们的要求进行自定义。
用户定义的输出生成器116,用于用户定义输出,其被注册到输出生成器注册表115,以帮助生成验证报告。
验证报告117,是约束规则应用到XML文档的最终执行结果。该结果可以根据用户定义的输出来产生。
图6示出了根据本发明另一实施例的用于验证XML文档的方法的流程图。该方法包括以下步骤。在步骤201,确定被验证的数据实例。根据其真正的需求和应用逻辑,其包括不同的结构约束或业务控制约束等等,确定XML实例文档。
在步骤202,组装目标对象模型。可以基于W3C DOM标准,使用XML解析器来解析XML文档,将XML数据在内存中表示为一对象树,并提供一个面向对象的接口来访问对象树中的XML数据对象。
在步骤203,使用用户定义的数据提取规则提取要被验证的元素,即XML数据对象。根据用户定义的数据提取规则,用户可以从目标XML文档中选择要被验证的元素。例如,从整个DOM树提取一些元素,其具有相同的类型,等等。
在步骤204,确定约束语义,即确定用于验证的规则。基于上述得到的XML数据实例文档,确定真正的约束语义。例如,人的姓和名必须是字母和数字的组合,但是不能由数字起始。
在步骤205,使用XML数据提取语言(如XPath等)表述约束,形成Schematron文档。这些约束语义,使用XML数据提取语言(如XPath 1.0等)来表述。例如,约束“Can contain only alphanumeric and can only startwith an alphabet”可以使用XPath表述为:not(normalize-space(translate(.,′ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789′,′* ′)))
在步骤206,解析Schematron文档来组装规则对象模型。除了步骤205之外,该步骤根据相关的不同Schematron版本解析器,来解析约束规则文档,然后在内存中组装规则对象模型,其将被用于评估XML实例文档。
在步骤207,重复解析Schematron文档。如果约束被表述为多条分立的规则,或者这些规则基于不同的Schematron版本,则可以重复执行步骤206。
在步骤208,选出必要的规则。如果用户仅仅需要规则对象模型的部分规则,可以从整个解析的规则对象模型过滤掉不使用的规则对象。该步骤可以帮助减少要发出的规则,这样执行性能可以提高。例如,如果一个Schematron规则文档包括WSDL元素相关的规则和XSD元素相关的规则,而XML实例文档仅仅包括WSDL元素,这种情况下,Schematron文档的XSD元素相关的规则可以被过滤掉,不必被发出。过滤规则可以基于业务语义或由用户定义。
在步骤209,组装强化的规则对象模型。基于步骤206和步骤208,可以获得强化的规则对象模型,其仅仅包括必要的规则。
在步骤210,组装规则执行上下文。每个规则有其执行上下文,该步骤帮助创建规则的上下文,并可以维持该上下文的层次。在组装规则执行的上下文时,可以首先去判断该规则对应的上下文是否会存在于规则上下文注册器中,如果存在则直接从中抓取使用,否则会重新计算出上下文并同时注册到上下文注册器中去。
具体的过程可以采用如下文所述的方法。上下文CA、CB、CC和CD分别是应用于规则集A、B、C和D的上下文,例如上下文CA的表达式是“/em:employees/em:employee/em:assets”,表示了员工元素下所有的资产信息。那么规则集A就是在上下文所有的资产信息下执行。同时该上下文也会被注册到上下文注册器已被复用。
上下文CB的表达式是
“/em:employees/em:employee/em:assets/em:asset[@status=′active′]”,表示了员工元素下所有状态为激活的资产信息。上下文CD的表达式是“/em:employees/em:employee/em:assets/em:asset[@status=′unused′]”,表示了员工元素下所有状态为未被使用的资产信息。很显然,上下文CB和CD的元素都是基于上下文CA的一个子集,那么在计算上下文CB和CD的时候就可以充分使用已经存在于注册器中的上下文CA。
而上下文CC的表达式是
“/em:employees/em:employee/em:assets/em:asset[@status=′active′]/em:complianceInfo/em:check”,表示了员工元素下所有状态为激活的资产信息的安全检查信息。很显然,上下文CC的元素都是基于上下文CB的子集,那么在计算上下文CC的时候就也可以充分使用已经存在于注册器中的上下文CB。
在步骤211,从上下文注册表中提取规则执行上下文。如果规则执行上下文已经被组装过,则从执行上下文注册表提取该规则执行上下文。
在步骤212,注册组装的规则执行上下文。如果规则执行上下文第一次被组装,则可以将该规则执行上下文注册到执行上下文注册表,以便共享和重复使用。
在步骤213,执行符合事实的规则。基于在步骤210组装的上下文,该步骤用于执行符合事实的具体规则。当一个策略被触发,相应的输出模块将被发出(fired)。
在步骤214,如果需要快速退出机制的规则被触发,则退出执行过程。
在步骤215,生成验证输出。根据步骤213,该步骤用于根据用户定义的输出格式生成验证执行输出。
本发明还提供了一种用于验证XML文档的系统,包括:数据解析装置,用于解析至少一待验证的XML文档,并将其中的XML数据表示为至少一数据对象模型;规则解析装置,用于解析至少一规则文档,并创建规则对象模型;提取装置,用于从所述数据对象模型和规则对象模型,提取至少部分规则对象及至少部分数据对象;以及验证装置,用于针对所提取的至少部分数据对象及至少部分规则对象,在相应的执行上下文中执行验证。
其中,所述数据解析装置在内存中创建所述数据对象模型,所述规则解析装置在内存中创建所述规则对象模型。
其中,所述规则文档为Schematron文档,所述规则对象模型中的规则对象保持与所述Schematron文件里面的元素相应的层次关系。
其中,所述XML文档中的每个元素,被映射到数据对象模型中的一个数据对象,所述数据对象模型保持与所述待验证的XML文档的元素相应的层次关系。
其中,所述提取装置根据预先确定的规则提取标准,从所述规则对象模型,提取至少部分规则对象。
其中,所述提取装置根据预先确定的数据对象提取标准,从所述数据对象模型,提取相应的数据对象。
其中,进一步包括:执行上下文生成装置,用于生成所提取的至少一规则对象的执行上下文,并将该执行上下文注册到一上下文库中;所述验证装置将所述至少部分规则对象在该执行上下文中执行验证。
其中,进一步包括:检索装置,用于从一上下文库中,检索所提取的一规则对象的执行上下文,将所述规则对象在该执行上下文中执行验证。
其中,所述提取装置根据预定的函数从所述数据对象模型和规则对象模型,提取至少部分规则对象及至少部分数据对象。
其中,所述执行上下文生成装置根据预定的函数生成所提取的至少一规则对象的执行上下文。
其中,所述验证装置进一步配置为响应于需要快速退出的规则被触发,而停止执行验证。
本发明提供了一种方法和系统,用于高性能和高灵活性的基于Schematron的XML验证。本发明的一实施例,利用了数据抽取和上下文共享。一步式执行,以避免基于XSLT的两次转换,性能因此显著提高。规则的上下文可共享,因此规则的表示可以很容易地被读取,规则执行的范围可以减小。因此,规则执行的性能可以提高。在本发明的一个实施例中,可共享的规则执行的上下文是每个规则应用到XML实例文档的具体的执行范围。这些规则执行上下文可以标记为分等级的和可共享的。
根据本发明的一个实施例,可以基于内存中的规则对象模型和扩展的验证引擎,可以实现高性能的、fail-fast Schematron验证。基础的XML数据提取和XML解析器,可以实施fail-fast机制。而基于XSLT的方式总是继续执行转换处理,而不管实际执行的状态。
根据本发明的一个实施例,可以利用可共享的上下文和精确的规则匹配,优化了规则执行引擎,
根据本发明的一个实施例,用于部分验证的灵活机制,其利用内存中的规则对象模型和XML数据模型,用于数据和规则提取,以便利用用户在Schematron文档(规则和断言)中定义的目标XML元素组和细粒度单元。再如,继承的系统包括一个已有的Schematron符合版本1.5,而新生成的Schematron文档使用ISO Schematron版本,需要与继承的Schematron版本1.5进行协调。在这种情况下,混合的Schematron需要共同工作。对于基于XSLT的Schematron实现,如果使用不同Schematron版本,很难对这种混合的Schematron规则进行协调。
使用Schematron文档的选定的细粒度单元,进行灵活的验证。如果用户仅仅需要部分规则对象模型,可以从整个解析的规则对象模型中过滤出未使用的规则对象。该步骤可以帮助减少将被发出的规则,以便提高执行性能。例如,如果一个Schematron规则文档包括WSDL元素相关的规则和XSD元素相关的规则,而XML实例文档仅仅包含WSDL元素,过滤后Schematron文档中XSD相关的规则就可以被过滤掉而不会被发出。过滤器的规则可以基于业务语义或由用户定义。
本发明还提供了一种存储介质或信号载体,其中包括用于执行根据本发明的方法的指令。
以上结合优选法方案对本发明进行了详细的描述,但是可以理解,以上实施例仅用于说明而非限定本发明。本领域的技术人员可以对本发明的所示方案进行修改而不脱离本发明的范围和精神。
Claims (22)
1.一种用于验证XML文档的方法,包括:
解析至少一待验证的XML文档,并将其中的XML数据表示为至少一数据对象模型;
解析至少一规则文档,并创建规则对象模型;
从所述数据对象模型和规则对象模型,提取至少数据部分对象及至少部分规则对象;以及
针对所提取的至少部分数据对象及至少部分规则对象,在相应的执行上下文中执行验证。
2.根据权利要求1所述的方法,其中,所述数据对象模型和所述规则对象模型在内存中创建。
3.根据权利要求1或2所述的方法,其中,所述规则文档为Schematron文档,所述规则对象模型中的规则对象保持与所述Schematron文件里面的元素相应的层次关系。
4.根据权利要求1或2所述的方法,其中,所述XML文档中的每个元素,被映射到数据对象模型中的一个数据对象,所述数据对象保持与所述待验证的XML文档的元素相应的层次关系。
5.根据权利要求1或2所述的方法,其中,根据预先确定的规则提取标准,从所述规则对象模型,提取至少部分规则对象。
6.根据权利要求1或2所述的方法,其中,根据预先确定的数据对象提取标准,从所述数据对象模型,提取至少部分数据对象。
7.根据权利要求1或2所述的方法,其中进一步包括以下步骤:
生成所提取的至少一规则对象的执行上下文,并将该执行上下文注册到一上下文库中,将所述至少一规则对象在该执行上下文中执行验证。
8.根据权利要求1或2所述的方法,其中进一步包括:
从一上下文库中,检索所提取的一规则对象的执行上下文,将所述规则对象在该执行上下文中执行验证。
9.根据权利要求1或2所述的方法,其中,根据预定的函数从所述数据对象模型和规则对象模型,提取至少部分规则对象及至少部分数据对象。
10.根据权利要求7所述的方法,其中,根据预定的函数生成所提取的至少一规则对象的执行上下文。
11.根据权利要求1或2所述的方法,其中进一步包括响应于需要快速退出的规则被触发,则停止执行验证。
12.一种用于验证XML文档的系统,包括:
数据解析装置,用于解析至少一待验证的XML文档,并将其中的XML数据表示为至少一数据对象模型;
规则解析装置,用于解析至少一规则文档,并创建规则对象模型;
提取装置,用于从所述数据对象模型和规则对象模型,提取至少部分数据对象及至少部分规则对象;以及
验证装置,用于针对所提取的至少部分数据对象及至少部分规则对象,在相应的执行上下文中执行验证。
13.根据权利要求12所述的系统,其中,所述数据解析装置在内存中创建所述数据对象模型,所述规则解析装置在内存中创建所述规则对象模型。
14.根据权利要求12或13所述的系统,其中,所述规则文档为Schematron文档,所述规则对象模型中的规则对象保持与所述Schematron文件里面的元素相应的层次关系。
15.根据权利要求12或13所述的系统,其中,所述XML文档中的每个元素,被映射到数据对象模型中的一个数据对象,所述数据对象保持与所述待验证的XML文档的元素相应的层次关系。
16.根据权利要求12或13所述的系统,其中,所述提取装置根据预先确定的规则提取标准,从所述规则对象模型,提取至少部分规则对象。
17.根据权利要求12或13所述的系统,其中,所述提取装置根据预先确定的数据对象提取标准,从所述数据对象模型,提取相应的数据对象。
18.根据权利要求12或13所述的系统,其中进一步包括:
执行上下文生成装置,用于生成所提取的至少一规则对象的执行上下文,并将该执行上下文注册到一上下文库中;所述验证装置将所述至少一规则对象在该执行上下文中执行验证。
19.根据权利要求12或13所述的系统,其中进一步包括检索装置,用于从一上下文库中,检索所提取的一规则对象的执行上下文;验证装置进一步配置为将所述规则对象在该执行上下文中执行验证。
20.根据权利要求12或13所述的系统,其中,所述提取装置根据预定的函数从所述数据对象模型和规则对象模型,提取至少部分规则对象及至少部分数据对象。
21.根据权利要求18所述的系统,其中,所述执行上下文生成装置根据预定的函数生成所提取的至少一规则对象的执行上下文。
22.根据权利要求12或13所述的系统,其中所述验证装置进一步配置为响应于需要快速退出的规则被触发,而停止执行验证。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810134072A CN101634982A (zh) | 2008-07-24 | 2008-07-24 | 用于验证xml文档的方法和系统 |
KR20090065913A KR20100011912A (ko) | 2008-07-24 | 2009-07-20 | Xml 문서를 검증하기 위한 방법 및 시스템 |
US12/507,261 US9146908B2 (en) | 2008-07-24 | 2009-07-22 | Validating an XML document |
US14/830,491 US10372809B2 (en) | 2008-07-24 | 2015-08-19 | Validating an XML document |
US16/512,884 US10929598B2 (en) | 2008-07-24 | 2019-07-16 | Validating an XML document |
US16/512,825 US10915703B2 (en) | 2008-07-24 | 2019-07-16 | Validating an XML document |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810134072A CN101634982A (zh) | 2008-07-24 | 2008-07-24 | 用于验证xml文档的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101634982A true CN101634982A (zh) | 2010-01-27 |
Family
ID=41569521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810134072A Pending CN101634982A (zh) | 2008-07-24 | 2008-07-24 | 用于验证xml文档的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (4) | US9146908B2 (zh) |
KR (1) | KR20100011912A (zh) |
CN (1) | CN101634982A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402556A (zh) * | 2010-09-16 | 2012-04-04 | 深圳市金蝶中间件有限公司 | Xml文件的校验方法和装置 |
CN103678450A (zh) * | 2013-09-10 | 2014-03-26 | 清华大学 | 电力系统中在线运行系统与离线仿真系统之间的通信方法 |
CN103874995A (zh) * | 2011-08-30 | 2014-06-18 | 甲骨文国际公司 | 基于分散模式验证xml文档 |
CN104573053A (zh) * | 2015-01-21 | 2015-04-29 | 郑州轻工业学院 | 一种基于xml的配置项模板动态定制方法 |
CN108959095A (zh) * | 2018-07-12 | 2018-12-07 | 中国工程物理研究院计算机应用研究所 | 基于XML Schema验证XML文档的方法 |
CN109670081A (zh) * | 2018-12-28 | 2019-04-23 | 中国银行股份有限公司 | 业务请求处理的方法及装置 |
US10915703B2 (en) | 2008-07-24 | 2021-02-09 | International Business Machines Corporation | Validating an XML document |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856151B2 (en) * | 2011-01-25 | 2014-10-07 | Hewlett-Packard Development Company, L.P. | Output field mapping of user defined functions in databases |
US9355145B2 (en) | 2011-01-25 | 2016-05-31 | Hewlett Packard Enterprise Development Lp | User defined function classification in analytical data processing systems |
US9213682B1 (en) * | 2011-03-31 | 2015-12-15 | Bank Of America Corporation | Method and apparatus for auditing a business document |
US9507874B2 (en) | 2011-06-30 | 2016-11-29 | International Business Machines Corporation | Validation of schema and schema conformance verification |
US8990271B2 (en) | 2012-03-12 | 2015-03-24 | International Business Machines Corporation | Specifying data in a standards style pattern of service-oriented architecture (SOA) environments |
US20150278386A1 (en) * | 2014-03-25 | 2015-10-01 | Syntel, Inc. | Universal xml validator (uxv) tool |
US10353955B2 (en) * | 2014-11-06 | 2019-07-16 | Lexisnexis, A Division Of Reed Elsevier Inc. | Systems and methods for normalized schema comparison |
CN105630752B (zh) * | 2015-12-25 | 2018-05-04 | 中国民航信息网络股份有限公司 | 支持业务模型快速变更的方法 |
US9971569B2 (en) * | 2016-02-11 | 2018-05-15 | International Business Machines Corporation | Generating object model validation rules |
US11249710B2 (en) * | 2016-03-31 | 2022-02-15 | Splunk Inc. | Technology add-on control console |
CN106445822A (zh) * | 2016-09-23 | 2017-02-22 | 上海图聚智能科技股份有限公司 | 高扩展性的前后端数据校验方法 |
US11909804B2 (en) * | 2022-01-11 | 2024-02-20 | Red Hat, Inc. | Selective validation of a portion of a server response to a client request |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11250483A (ja) | 1998-03-03 | 1999-09-17 | Sankyo Seiki Mfg Co Ltd | 光ピックアップ装置 |
US7798417B2 (en) | 2000-01-03 | 2010-09-21 | Snyder David M | Method for data interchange |
AUPQ808700A0 (en) * | 2000-06-09 | 2000-07-06 | Honeywell Limited | Human-machine interface |
US7036072B1 (en) * | 2001-12-18 | 2006-04-25 | Jgr Acquisition, Inc. | Method and apparatus for declarative updating of self-describing, structured documents |
US7774386B2 (en) * | 2003-07-24 | 2010-08-10 | International Business Machines Corporation | Applying abstraction to object markup definitions |
US8166053B2 (en) * | 2003-10-30 | 2012-04-24 | Ntt Docomo, Inc. | Method and apparatus for schema-driven XML parsing optimization |
US7451394B2 (en) * | 2004-04-30 | 2008-11-11 | Convergys Cmg Utah | System and method for document and data validation |
CN100347702C (zh) | 2004-06-01 | 2007-11-07 | 北京大学 | 基于结构分析的可扩展标记语言键约束验证方法 |
US7313575B2 (en) * | 2004-06-14 | 2007-12-25 | Hewlett-Packard Development Company, L.P. | Data services handler |
WO2006043012A1 (en) * | 2004-10-22 | 2006-04-27 | New Technology/Enterprise Limited | Data processing system and method |
US20060117307A1 (en) * | 2004-11-24 | 2006-06-01 | Ramot At Tel-Aviv University Ltd. | XML parser |
US20080104579A1 (en) * | 2006-10-31 | 2008-05-01 | Sap Ag | Systems and methods of transforming XML schemas |
US7707493B2 (en) * | 2006-11-16 | 2010-04-27 | Xerox Corporation | Method for generating presentation oriented XML schemas through a graphical user interface |
US8954474B2 (en) * | 2008-04-21 | 2015-02-10 | The Boeing Company | Managing data systems to support semantic-independent schemas |
CN101634982A (zh) | 2008-07-24 | 2010-01-27 | 国际商业机器公司 | 用于验证xml文档的方法和系统 |
-
2008
- 2008-07-24 CN CN200810134072A patent/CN101634982A/zh active Pending
-
2009
- 2009-07-20 KR KR20090065913A patent/KR20100011912A/ko active IP Right Grant
- 2009-07-22 US US12/507,261 patent/US9146908B2/en not_active Expired - Fee Related
-
2015
- 2015-08-19 US US14/830,491 patent/US10372809B2/en active Active
-
2019
- 2019-07-16 US US16/512,884 patent/US10929598B2/en active Active
- 2019-07-16 US US16/512,825 patent/US10915703B2/en active Active
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10915703B2 (en) | 2008-07-24 | 2021-02-09 | International Business Machines Corporation | Validating an XML document |
US10929598B2 (en) | 2008-07-24 | 2021-02-23 | International Business Machines Corporation | Validating an XML document |
CN102402556A (zh) * | 2010-09-16 | 2012-04-04 | 深圳市金蝶中间件有限公司 | Xml文件的校验方法和装置 |
CN103874995A (zh) * | 2011-08-30 | 2014-06-18 | 甲骨文国际公司 | 基于分散模式验证xml文档 |
CN103874995B (zh) * | 2011-08-30 | 2017-07-14 | 甲骨文国际公司 | 基于分散模式验证xml文档 |
CN103678450A (zh) * | 2013-09-10 | 2014-03-26 | 清华大学 | 电力系统中在线运行系统与离线仿真系统之间的通信方法 |
CN103678450B (zh) * | 2013-09-10 | 2017-04-05 | 清华大学 | 电力系统中在线运行系统与离线仿真系统之间的通信方法 |
CN104573053A (zh) * | 2015-01-21 | 2015-04-29 | 郑州轻工业学院 | 一种基于xml的配置项模板动态定制方法 |
CN104573053B (zh) * | 2015-01-21 | 2016-04-20 | 郑州轻工业学院 | 一种基于xml的配置项模板动态定制方法 |
CN108959095A (zh) * | 2018-07-12 | 2018-12-07 | 中国工程物理研究院计算机应用研究所 | 基于XML Schema验证XML文档的方法 |
CN109670081A (zh) * | 2018-12-28 | 2019-04-23 | 中国银行股份有限公司 | 业务请求处理的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20100011912A (ko) | 2010-02-03 |
US10372809B2 (en) | 2019-08-06 |
US20150356069A1 (en) | 2015-12-10 |
US10929598B2 (en) | 2021-02-23 |
US9146908B2 (en) | 2015-09-29 |
US20100023471A1 (en) | 2010-01-28 |
US10915703B2 (en) | 2021-02-09 |
US20200012716A1 (en) | 2020-01-09 |
US20190340229A1 (en) | 2019-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101634982A (zh) | 用于验证xml文档的方法和系统 | |
US20030149934A1 (en) | Computer program connecting the structure of a xml document to its underlying meaning | |
Said et al. | A method of refinement in UML-B | |
CN101441561A (zh) | 基于上下文模型生成面向服务架构的策略的方法和装置 | |
Finlayson | The story workbench: An extensible semi-automatic text annotation tool | |
CN106843878B (zh) | 一种模型生成方法和系统 | |
US9652478B2 (en) | Method and apparatus for generating an electronic document schema from a relational model | |
EP2425382B1 (en) | Method and device for improved ontology engineering | |
Amar Bensaber et al. | Development of semantic web services: model driven approach | |
Schleipen | A concept for conformance testing of AutomationML models by means of formal proof using OCL | |
Merson | Data model as an architectural view | |
Aman et al. | Reverse engineering: from XML to Uml for generation of software requirement specification | |
US20090217156A1 (en) | Method for Storing Localized XML Document Values | |
Geiger | BPMN 2.0 Process model serialization constraints | |
Narayanan et al. | Specifications for mapping UML models to XML schemas | |
Kim et al. | Semantic constraint specification and verification of ebXML business process specifications | |
Akehurst | Experiment in model driven validation of bpel specifications | |
Forster et al. | Exploiting XML technologies in medical information systems | |
Saadatfar et al. | Advanced Validation Techniques for XLIFF 2 | |
Feng et al. | An approach for business process model registration based on ISO/IEC 19763-5 | |
Good | The benefits and practicalities of using extensible markup language (XML) for the interfacing and control of object-oriented simulations | |
Hong Quang et al. | XML schema design approach | |
Ruiz et al. | Data integration between objectiver and DB-Main: A case study of a Model-Driven Interoperability bridge | |
Çalış | Semantic validation of biological maps in SBGN | |
Dong et al. | Service oriented evolutions and analyses of design patterns |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100127 |