CSS选择子规则匹配方法组成比例

技术编号:2820860 阅读:279 留言:1更新日期:2012-04-11 18:40
本发明专利技术涉及嵌入式软件环境下的互联网应用技术,本发明专利技术提供一种在存储空间与匹配步骤之间取得一个更好平衡的CSS选择子规则匹配方法。本发明专利技术由命中CSS语句集猜测Hash表建立、关键字Hash匹配、对选择子的HTML栈匹配循环、命中判断几个步骤组成;对所有选择子的最后一个原始选择子的第一个关键字建立Hash表;用HTML标记所有的关键字去匹配CSS的原始选择子的关键字;按照HTML标记入栈顺序倒序进行选择子匹配验证;以CSS语句的原始选择子是否被完整匹配验证为命中判断标准。

【技术实现步骤摘要】

本专利技术涉及计算机软件技术,特别涉及一种嵌入式软件环境下的互联网应用技术。
技术介绍
HTML,即Hyper Text Markup Language,超文本标记语言,是Web技术标准的传输数据描述格式。HTML包含了传输的数据内容,并部分包含了传输内容在Web终端的显示格式。CSS,即Cascading Style Sheets,层叠样式表,是一种W3C规范下,对HTML内容进行排版格式定义的规范,它解决了网页界面排版的难题。 HTML的标记(Tag)定义网页的内容,CSS决定这些网页内容如何显示(Layout)。CSS主要对HTML Web页面的排版,但是它同样适用于在Web和其他媒介上表示XML文档。 HTML规范由标记语法和标记内容组成。CSS规范由语法、格式内容和匹配规则组成。语法规定了内容和匹配规则的表现形式,格式内容规定了各种排版规则,匹配规则规定了对何种标记应用哪一条排版规则。 CSS规则的作用是用一系列选择子运算式定义一种HTML上下文关系,使得满足这种选择子运算式的上下文关系的HTML标记的格式能够被该CSS规则所属的语句中的规则集所定义。这种将HTML标记的上下文关系与CSS规则进行比对的过程称为CSS匹配。 CSS所要处理的文档,主要是与目标HTML相关的CSS文本。它定义了若干条CSS语句,组成CSS语句集,通过标记内嵌、标记属性嵌入和外部独立文本文件嵌入三种方式与HTML产生样式定义关系。其中标记属性嵌入的CSS定义,只包含一个CSS语句,且语句仅由样式规则集构成。 一条CSS语句由选择子和样式规则集构成。浏览器要准确的支持遵循CSS规范的网页,必须针对每一个标记内容,选择正确的CSS语句来应用样式规则。这个过程称为CSS选择子匹配。针对CSS规则语句的匹配、命中是一个处理复杂、耗费资源的过程,在嵌入式环境下,在能够准确的匹配CSS规则的同时,尽可能的减小目标软件对时间和空间资源的消耗,是非常重要的问题。CSS规范的匹配规则是由多个单一匹配规则构成的一种递归规则定义。 中国申请号为“200710203272.1”(公开日为2008年5月21日)的CSS选择子规则匹配方法,公开了一种在嵌入式环境下,在一定规模的CSS定义语句空间中,完成对HTML标记的正确匹配。该方法的核心是根据CSS规则的选择子的首个具有字符串的关键字建立一个CSS规则集的哈希表,用于纪录所有CSS规则的选择子运算式关系;并建立一个匹配栈,用于记录HTML上下文的匹配历史,然后对HTML文档中的标记进行CSS规则集的哈希表中快速搜索,然后对栈中的标记进行上下文关系匹配,最后将剩余的中间结果进行上下文关系的完全检验。将尽可能多的步骤放在解析部分一次完成,而在其后多次匹配的过程中,尽可能降低每次匹配的工作量,在尽可能多的支持匹配规则的基础上,快速完成每一次对HTML内容的CSS选择子匹配。采用该正序匹配方法需要较大的中间匹配结果的存储空间。
技术实现思路
本专利技术所要解决的技术问题是,提供一种在存储空间与匹配步骤之间取得一个更好平衡的CSS选择子规则匹配方法。 本专利技术为解决上述技术问题所采用的技术手段是,CSS选择子规则匹配方法,包括以下步骤 a、建立CSS语句结构集; b、对所有CSS选择子结构取最后一个选择子的第一个关键字建立一个哈希表键值,以CSS选择子结构为内容,建立一个哈希表; c、根据当前HTML标记所有可能的关键字,从所述哈希表中检出可能匹配的CSS选择子集合作为首次匹配集; d、在所有首次匹配集中,取出一个CSS语句;若CSS语句为空,则进入步骤k;否则,进入步骤f; f、从后往前依次取出CSS语句的CSS选择子,作为当前原始选择子,若返回为空,则进入步骤j;否则,进入步骤g; g、在HTML栈中取出一个栈顶HTML标记作为当前HTML标记,若已到栈底则进入步骤i;否则,进入步骤h; h、对当前原始选择子和当前HTML标记进行匹配,单选择子匹配按选择子规范要求匹配算法实现;若匹配成功,则返回步骤f;否则,进入步骤i; i、本次CSS语句匹配失败,返回步骤d; j、本次CSS语句匹配成功,保存当前CSS语句至结果集,返回步骤d; k、返回结果集。 本专利技术的有益效果是,能在存储空间和匹配次数之间取得一个平衡,最终在完整地实现浏览器对CSS匹配规则的要求的同时,满足了嵌入式环境对CSS规则匹配算法的严格效率要求。本方法所采用的倒序匹配方法比较正序匹配方法,减少了对维持中间匹配集的要求,进一步提升了匹配时间和空间效率。算法简洁易懂,实现成本低、稳定性好。 具体实施例方式 本算法的核心部分由CSS解析、CSS匹配预处理、CSS标记栈匹配验证和CSS命中结果判断四个过程组成。实现的结果为一个实现特定功能接口规范的软件模块。软件模块可由浏览器根据HTML解析过程择机使用,获得准确的CSS样式结果。 现有技术中以首字进行匹配的首次匹配集结果较大,而本专利技术以尾关键字进行单一关键字匹配成功的首次匹配结果集往往只有1-3个,因此这种匹配方法在实际应用中大大减少了首次匹配成功的首次匹配集。本专利技术去掉中间匹配集(使得匹配栈很浅,节省了较多存储空间),通过匹配过程中去掉冗余,尽可能减少匹配次数(体现了较大的匹配速度优势),在存储空间和匹配次数之间取得最优的平衡。 以C语言为例,说明具体实现方式。本专利技术用C语言进行实现的要点是 建立CSS选择子的C语言的目标数据结构 要求建立能够描述CSS选择子的数据结构(CSS选择子结构)和CSS语句的选择子集的数据结构(CSS语句结构集);一个能支持从关键字到CSS选择子的Hash(哈希)表结构;一个HTML标记栈; 建立一个CSS选择子Hash表 对CSS解析结果进行预处理根据CSS语句,对其每一个CSS选择子结构,抽取其最后一个选择子的第一个关键字为Hash表键值,以CSS选择子结构为内容,建立一个Hash表项,放入可匹配选择子Hash表中; 建立猜测命中选择子提取函数 该函数实现如下逻辑功能 对当前标记,选择所有可能的关键字,从Hash表中选择所有能符合当前HTML标记的关键字的记录集合作为可能匹配当前HTML标记的选择子集合; 选择子、标记匹配函数 该函数实现的逻辑功能是以当前选择子的所有关键字,去检验是否能匹配当前的HTML标记; 建立匹配函数 这个函数实现如下逻辑功能 在给定的选择子、给定HTML栈状态情况下(栈顶为目标HTML标记),对HTML当前栈,从栈顶开始,依次取一个HTML标记作为当前标记;对当前标记进行选择子、标记匹配验证;若未通过,则匹配结束;取HTML栈的从顶向下计的下一个HTML标记作为当前标记; 重复上述步骤,直到栈底;判断当前选择子的验证结果若当前选择子的所有原始选择子都已经被验证通过,则匹配成功;否则匹配失败。具体步骤如下 (1)、根据当前HTML标记所有可能的关键字,从所述哈希表中检出可能匹配的CSS选择子集合作为首次匹配集; (2)、在所有首次匹配集中,取出一个CSS语句, (3)从后往前依次取出该CSS语句的CSS选择本文档来自技高网
...

【技术保护点】
CSS选择子规则匹配方法,其特征在于,包括以下步骤: a、建立CSS语句结构集; b、对所有CSS选择子结构取最后一个选择子的第一个关键字建立一个哈希表键值,以CSS选择子结构为内容,建立一个哈希表; c、根据当前HTML标记所有可能的关键字,从所述哈希表中检出可能匹配的CSS选择子集合作为首次匹配集; d、在所有首次匹配集中,取出一个CSS语句;若CSS语句为空,则进入步骤k;否则,进入步骤f; f、从后往前依次取出CSS语句的CSS选择子,作为当前原始选择子,若返回为空,则进入步骤j;否则,进入步骤g; g、在HTML栈中取出一个栈顶HTML标记作为当前HTML标记,若已到栈底则进入步骤i;否则,进入步骤h; h、对当前原始选择子和当前HTML标记进行匹配,匹配成功,则返回步骤f;否则,进入步骤i; i、本次CSS语句匹配失败,返回步骤d; j、本次CSS语句匹配成功,保存当前CSS语句至结果集,返回步骤d; k、返回结果集。

【技术特征摘要】

【专利技术属性】
技术研发人员:胡涛
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:51[中国|四川]

网友询问留言 已有1条评论
  • 来自[未知地区] 2015年02月25日 08:45
    规则,一般指由群众共同制定、公认或由代表人统一制定并通过的,由群体里的所有成员一起遵守的条例和章程。规则具有普遍性。另外规则也指大自然的变化规律。下面将有更为详细的各种解释。
    0
1
相关领域技术
  • 暂无相关专利