[发明专利]依据RelaxNG标准生成文档解析器的方法无效
申请号: | 200910091471.7 | 申请日: | 2009-08-21 |
公开(公告)号: | CN101630326A | 公开(公告)日: | 2010-01-20 |
发明(设计)人: | 胡斌 | 申请(专利权)人: | 北京红旗贰仟软件技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京派特恩知识产权代理事务所(普通合伙) | 代理人: | 张颖玲;王黎延 |
地址: | 100176北京市北京经济技术*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 依据 relaxng 标准 生成 文档 解析 方法 | ||
技术领域
本发明涉及文件解析技术,尤其涉及依据RelaxNG标准自动生成文档解析器的方法。
背景技术
RelaxNG(可简称为RNG)是一种XML模式语言,具有简洁、灵活、易学等特点。其正被越来越广泛地使用,例如ODF标准就使用了RelaxNG标准。
由于RelaxNG过于灵活,目前,还没有相应的解析器生成工具,故,在将使用RelaxNG定义的文件解析为某语言的文档时,程序员需要仔细阅读模式定义文件,然后依据定义撰写所需语言的相关数据类及解析函数。对于解析较复杂的模式文件时,工作量非常大且容易出错,还容易遗漏某些细节。并且,当要换用其他所需编程语言时还要重复这一过程,效率极低,开发成本也高。
故需要一种RelaxNG解析器生成方法,以解决针对不同编程语言需要重复编写解析器的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种RelaxNG标准生成文档解析器的方法,以实现可针对所需编程语言自动生成相应的文档解析器。
为达到上述目的,本发明提供的依据RelaxNG标准生成文档解析器的方法包括:
A、依据RelaxNG标准解析要处理的RelaxNG文件;
B、依据解析出的各个内容生成各个文档基础内容对象;
C、根据要使用的编程语言将各个文档基础内容对象生成文档解析文件。
可选的,步骤A所述解析为依据DOM方式进行解析;
所述步骤B为依据解析出的DOM树各个节点生成包含对应的各个RelaxNG节点的RNGDocument对象。
其中,所述步骤B包括子步骤:
B1、创建RNGDocument对象;
B2、从解析出的DOM树的根节点开始,以递归方式遍历DOM树并生成对应的RelaxNG节点;
B3、将所生成的RelaxNG节点放到所创建的RNGDocument对象中。
其中,所述步骤B2包括子步骤:
B21:取得DOM树根节点并为其生成节点对象GrammarNode;
B22:依次对其下每一个子节点调用内容文法解析ParseGrammarContent处理过程,依次生成各个子节点;
B23:将生成的所有节点做为子节点放入GrammarNode中作为结果返回。
其中,所述步骤B22包括子步骤:
B221:获得输入的子节点,并判断所获得的子节点的名称,根据下述子节点的名称执行相应的处理过程:
判断节点名称为start时,创建起始节点StartNode;
判断节点名称为define时,创建定义节点DefineNode;
判断节点名称为div时,创建块节点divNode;及
判断节点名称均非上述名称时,创建包含节点includeNode;
B222:按照上述步骤依次处理每个子节点,并将依次创建的节点作为结果返回。
其中,所述创建StartNode节点包括子步骤:
对输入的节点创建StartNode节点;
调用模式解析parse_pattern处理过程生成子节点并返回。
其中,所述创建DefineNode节点包括子步骤:
对输入的节点创建DefineNode节点;读取自定义元属性将其设置到DefineNode节点中,并将DefmeNode节点添加到RNGDocument中;
对输入节点的每一个子节点调用parse_pattern处理过程,将生成的所有节点放入DefineNode节点中;并将DefineNode节点作为结果返回。
其中,所述parse_pattern处理过程包括步骤:
确定所输入的节点所符合的节点名称;
根据相应的节点名称创建相应的节点;
如上依次处理各个节点及子节点,并将生成的节点作为结果返回。
其中,所定义的节点名称包括至少以下之一:
元素element、属性attribute、组group、顺序无关项interleave、选择choice、可选optional、无或多zeroOrMore、一或多oneOrMore、列表list、混合mixed、引用ref、模式参考patternRef、空empty、文本text、值value、数据data、禁止notAllowed、外部引用externalRef。
其中,所述步骤C包括子步骤:
C1:获得RNGDocument对象;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京红旗贰仟软件技术有限公司,未经北京红旗贰仟软件技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910091471.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:电压互感器仿真负荷箱
- 下一篇:一种电力系统小干扰稳定仿真方法