一种建立标签与样式规则绑定关系的方法和装置的制造方法_3

文档序号:9249266阅读:来源:国知局
>[0073]其中,标签属性可以是类(class)属性、ID属性以及除类(class)属性、ID属性之外的其他属性,其中,类属性对应于类选择器,ID属性对应于ID选择器,其他属性对应于属性选择器。属性值可以是标签中某项标签属性对应的值,例如,原子选择器text-block”是一个非元素选择器,其对应的标签属性为类属性,对应的属性值为text-block。
[0074]在实施中,如果多个选择器,他们的第一级简单选择器所包含的元素选择器对应的标签名相同,且他们的第一级简单选择器所包含的非元素选择器对应的标签属性和属性值也相同,则将此多个选择器分为一类。另外,如果多个选择器的第一级简单选择器中不包含元素选择器,则可以认为这些第一级简单选择器所对应的标签名相同,均为空。
[0075]在处理流程中,终端获取到线性列表中的某个选择器的第一级简单选择器后,可以记录该第一级简单选择器中所包含的元素选择器对应的标签名,如果不包含元素选择器,可以记录标签名为空,将标签名作为第一级分类的分类标识,进一步可以判断该第一级简单选择器中包含的非元素选择器是否为通配选择器,若是,则将通配属性记录为第二级分类的分类标识,对该选择器的分类结束,若不是,则可以继续判断第一级简单选择器中包含的非元素选择器是否是class选择器,若是,则将class属性和class属性值记录为第二级分类的分类标识,对该选择器的分类结束,若不是,则可以继续判断第一级简单选择器中包含的非元素选择器是否是ID选择器,若是,则将ID属性和ID属性值记录为第二级分类的分类标识,对该选择器的分类结束,若不是,则可以继续判断第一级简单选择器中包含的非元素选择器是否是伪类选择器,若是,则将伪类属性记录为第二级分类的分类标识,对于该选择器的分类结束,若不是,则将其他属性记录为第二级分类的分类标识(其他属性即是属性选择器对应的属性)对该选择器的分类结束。分类示意图可以如图2所示。
[0076]在步骤103中,遍历HTML文件中标签,对于每个遍历到的标签,如果根据其包含的标签名、标签属性和对应的属性值,确定在多个选择器分类中存在其对应的第一选择器分类,则在第一选择器分类所包含的选择器中,查找与遍历到的标签相匹配的第一选择器,并建立遍历到的标签与第一选择器所属样式规则的绑定关系。
[0077]在实施中,遍历HTML文件中的标签,对于遍历到的某个标签,可以根据标签的标签名,确定其对应的选择器的第一级分类。在所有第一级分类中,选取分类标识与当前标签的标签名相同的第一级分类,以及分类标识为空的第一级分类,如果在所有的第一级分类中不存在分类标识与当前标签的标签名相同的第一级分类和分类标识为空的第一级分类,则认为没有与该标签相匹配的样式规则;如果存在分类标识与当前标签的标签名相同的第一级分类,以及分类标识为空的第一级分类,对于选取的每个第一级分类,在其包含的第二级分类中,获取分类标识与当前标签的任一标签属性相匹配的第二级分类。在获取出的分类标识与当前标签的任一标签属性相匹配的第二级分类中,针对分类标识为class属性和ID属性的情况,进一步获取分类标识与当前标签的任一标签属性对应的属性值也匹配的第二级分类,如果某一类的属性值不匹配,则认为这一类没有与该标签相匹配的选择器,如果属性值匹配,则可以在其包含的第二级分类中查找对应的选择器。在获取出的分类标识与当前标签的任一标签属性相匹配的第二级分类中,针对分类标识为通配属性、伪类属性和其他属性的情况,可以在其包含的第二级分类中查找对应的选择器。
[0078]在第二级分类中查找对应的选择器的处理可以如下:在第二级分类中查找到的对应的选择器如果是简单选择器则认为该标签与该选择器相匹配,建立该标签与选择器所属样式规则的绑定关系,若该选择器是复杂选择器,则可以判断该标签是否存在父标签或兄弟标签,若不存在,则匹配失败,若存在,则可以按照复杂选择器的处理过程进行匹配,其过程可以如下:可以获取选择器最右的连接符以及连接符左边的简单选择器,若当前遍历到的标签存在该连接符指向的这种关系的标签,并且该标签具有连接符左边的简单选择器所指向的信息(信息可以是标签名、标签属性及其对应的属性值),则判定与该简单选择器成功,否则匹配失败,不再进行后续处理,按照相同的方式依次向左进行匹配,直到复杂选择器中最左侧的简单选择器匹配成功后,当前遍历到的该标签与该复杂选择器匹配成功,并建立该标签与选择器所属样式规则的绑定关系。对于复杂选择器的处理过程举例说明,例如,复杂选择器为div.1mage-block>p.main-note?p.sub-note,对于当前遍历到的标签Tag而言,他们的匹配判定过程如下:
[0079]a、对选择器按照连接符分割为 div.1mage-block、p.main-not、p.sub-note 三个简单选择器。
[0080]b、取第一级简单选择器(即最右的简单选择器)与标签Tag进行匹配判定,若标签Tag的标签名为P且存在class = 〃sub_note〃的属性则执行步骤C,否则匹配失败。
[0081]C、取第一级连接符(即最右的连接符)选择用于匹配的标签,根据连接符’?’选择标签Tag相邻的先前兄弟标签(可记为AdjacentSibling(Tag)),若标签选取成功则执行步骤d,否则失败。
[0082]d、取第二级简单选择器(即最右的连接符左边的简单选择器)进行匹配判定,若标签AdjacentSibling(Tag)的标签名为p且存在class = 〃main_note〃的属性则执行步骤e,否则失败。
[0083]e、取第二级连接符(即第二级简单选择器左边的连接符)选择用于匹配的标签,根据连接符’ >’选择AdjacentSibling(Tag)的父节点(记为Parent (AdjacentSibling (Tag))),若标签选取成功则执行步骤f,否则失败。
[0084]f、取第三级简单选择器(即第二级连接符左边的简单选择器)进行匹配判定,若标签 Parent (AdjacentSibling (Tag))的标签名为 div 且存在 class = ’ image-block'的属性则匹配成功,否则匹配失败,结束。
[0085]可选的,针对与某个标签建立绑定关系的多个样式规则中的样式声明冲突的情况,相应的,处理流程可以如下:如果遍历到的标签与多个样式规则建立绑定关系,则根据多个样式规则中每个样式规则的选择器的顺序信息和权重信息,在多个样式规则中选取目标样式规则,取消目标样式规则之外的其它样式规则与所述遍历到的标签的绑定关系。
[0086]在实施中,遍历的标签可能会与多个样式规则建立绑定关系,其中的样式声明对于该标签可能存在着冲突,例如,其中的某个样式声明规定已匹配的标签内的文字的字体采用楷体的字体,其中的另一个样式声明规定该标签内的文字的字体采用宋体的字体,终端可以获取多个样式规则中每个样式规则的选择器的顺序信息和权重信息,比较发生冲突的样式声明对应的样式规则中的选择器的权重,选取权重大的选择器对应的样式规则为目标样式规则,若选择器的权重相同,则可以选取先出现的选择器对应的样式规则为目标样式规则,选取目标样式规则后,取消与该标签已建立绑定关系的其它的样式规则与该标签的绑定关系。
[0087]HTML文件中的标签与其关联的CSS文件中的样式规则建立绑定关系后,终端在显示相应的网页或电子文档的过程中,可以基于每个标签绑定的样式规则对标签的内容进行显不O
[0088]本公开实施例中,获取待匹配的HTML文件和CSS文件,根据所述CSS文件中的各选择器所包含的原子选择器,将所述各选择器划分为多个选择器分类,遍历所述HTML文件中标签,对于每个遍历到的标签,如果根据其包含的标签名、标签属性和对应的属性值,确定在所述多个选择器分类中存在其对应的第一选择器分类,则在所述第一选择器分类所包含的选择器中,查找与所述遍历到的标签相匹配的第一选择器,并建立所述遍历到的标签与所述第一选择器所属样式规则的绑定关系。这样,终端可以根据遍历到的标签的信息,在多个选择器分类中确定该标签对应的选择器分类,再在此分类中查找标签所匹配的选择器,无需顺序查阅所有的选择器,提高了标签与样式规则的匹配效率。
[0089]实施例三
[0090]本公开实施例还提供了一种建立标签与样式规则绑定关系的装置,如图3所示,该装置包括:获取模块310,分类模块320和绑定模块330。
[0091]获取模块310,用于获取待匹配的HTML
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1