CN102053994B - 一种语言解析器和应用该解析器的解析方法 - Google Patents
一种语言解析器和应用该解析器的解析方法 Download PDFInfo
- Publication number
- CN102053994B CN102053994B CN 200910211716 CN200910211716A CN102053994B CN 102053994 B CN102053994 B CN 102053994B CN 200910211716 CN200910211716 CN 200910211716 CN 200910211716 A CN200910211716 A CN 200910211716A CN 102053994 B CN102053994 B CN 102053994B
- Authority
- CN
- China
- Prior art keywords
- language
- label
- module
- caching server
- page
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本申请公开了一种语言解析器和解析方法,所述方法包括:解析服务器通过前台业务框架接受来自用户终端的应用请求,判断出缓存服务器内不存在与所述应用请求相对应的已解析后的第二语言时,抓取所述应用请求所对应的页面;所述解析服务器将抓取到页面内第一语言所采用的标签、类型样式及JavaScript脚本转换成第二语言所支持的标签、类型样式及JavaScript脚本,获得转换后的第二语言,将转换后的第二语言存入缓存服务器;所述解析服务器通过前台业务框架将缓存服务器中的第二语言传送给用户终端。应用本申请,不但确保了解析的安全性,还提高了解析效率。而且,更好的支持网站平台的应用扩展和第三方开发,使得扩展更方便。
Description
技术领域
本申请涉及计算机软件技术领域,特别涉及一种语言解析器和应用该解析器的解析方法。
背景技术
API开放平台提供了访问数据的开放接口。购物网站可以被理解为一种API开放平台,其可以满足商家快速、个性建站的需求,可以方便商家建立外部网店的一个系统。商家可以使用这个开发平台,更好的塑造自己的品牌。第三方可以基于这个开放平台,开发第三方应用,满足用户的需求,同时实现自己的价值。
如果第三方开发者基于HTML直接在购物网站平台上开发应用,因为HTML的灵活性,安全性得不到保证,同时因为HTML的限制性,又不能方便的使用旺店内部的数据,这便诞生了淘宝扩展HTML标记语言-TBML。它既可以保证第三方开发者开发的安全性、灵活性,又提供了一个访问淘宝内部数据的通道。但TBML语言并不能在用户浏览器中直接解析展现。
现有的FBML的解析器(Parser)是美国著名的社交网站Facebook的后端模块,其所采用的语言为fbml语言。FBML的Parser实现机理如下:
核心的算法由mozilla引擎和自定义的Sink模块fbml ContentSink完成;其中,Mozilla是一个为标准的兼容性,跨平台性和可移植特性而设计的一个开放源码web浏览器和工具包;
Parser以PHP扩展(PHP,Personal Home Pages)模块的方式提供使用;
fb标签的扩展,渲染以及整个html文档的重构则在php层面进行。
页面的渲染过程其实就是一个以深度优先遍历一颗文档对象模型(DOM,Document Object Model)树的过程,遇到特殊节点时调用相应的回调函数进行渲染,例如css,js以及fb自定义标签等回调函数可以用php编写,通过php模块提供给mozilla引擎使用。
从上述实现机理可知,FBML的Parser底层使用Mozilla Parser,虽然该引擎成熟稳定,功能强大,可大大减少程序员开发工作,但由于将解析和转换过程独立开,增加了灵活性同时降低了效率;虽然通过php的反射机制动态扩展标签而无需重新编译,但由于大量工作在php层面进行,存在效率问题,例如反射机制的使用。
Facebook的FBML Parser是针对于交友网络的,对商务开放平台需要改造很多;FBML在安全性上要求不严格,会造成HTML注入漏洞;页面渲染等工作在PHP层面完成,效率较低,影响性能。
发明内容
本申请实施例在于提供一种语言解析器和应用该解析器的解析方法,不但能确保解析的安全性,还能够提高解析效率。
本发明实施例提供了一种语言解析方法,包括:
解析服务器通过前台业务框架接受来自用户终端的应用请求,判断出缓存服务器内不存在与所述应用请求相对应的已解析后的第二语言时,抓取所述应用请求所对应的页面;
所述解析服务器通过编译语言将抓取到页面内第一语言所采用的标签、类型样式及JavaScript脚本转换成第二语言所支持的标签、类型样式及JavaScript脚本,获得转换后的第二语言,将转换后的第二语言存入缓存服务器;
所述解析服务器通过前台业务框架将缓存服务器中的第二语言传送给用户终端。
其中,所述来自用户终端的应用请求中包括URL;
所述解析服务器判断出缓存服务器内不存在与所述应用请求相对应的已解析后的第二语言时,抓取所述应用请求所对应的页面的步骤具体包括:
通过URL判断缓存服务器内是否存在与所述URL相对应的已解析后的第二语言,若不存在,则抓取与所述URL对应的页面。
其中,所述将第一语言所采用的标签和类型样式转换成第二语言所支持的标签和类型样式的步骤包括:
过滤掉第一语言中的第一类字符;
构造缓冲区;
将第一语言中的所有应用进行分块处理,令每个应用对应一个模块;
将所述每个模块中的第一语言所采用的标签都处理为第二语言所支持的标签,将处理后的第二语言所支持的标签存入所述缓冲区;
将第一语言中分散在不同位置的所有类型样式进行合并,将合并后的类型样式存入所述缓冲区的最后位置;
将缓冲区中的内容写入缓存服务器中。
其中,将一个模块中的第一语言所采用的标签都处理为第二语言所支持的标签的步骤包括:
遍历第一语言中的字符串,
如果获取到一个合法的标签,则
如果所述合法的标签是闭合标签,则当其不是第一语言所特有的标签,且在栈中有匹配的开始标签时,在缓冲区中追加标签闭合字符(</tag>),并让所述开始标签出栈;
如果所述合法标签是非闭合标签,则当所述非闭合标签是第一语言所特有的标签时,调用该标签所对应的处理函数进行处理,之后,返回遍历第一语言中的字符串的步骤;当所述非闭合标签不是第一语言所特有的标签且有与之对应的回调函数时,调用该标签所对应的回调函数进行处理,之后,返回遍历第一语言中的字符串的步骤;当所述非闭合标签不是第一语言所特有的标签且没有与之对应的回调函数时,在缓冲区追加标签开始字符,并判断所述不是第一语言所特有的标签且没有与之对应的回调函数的非闭合标签是否需要闭合,若需要,则将当前标签放入栈中,若不需要,返回遍历第一语言中的字符串的步骤。
其中,所述将第一语言所采用的JavaScript脚本转换成第二语言所支持的JavaScript脚本的步骤包括:
初始化一用于存储TBJS各个标志token的链表;
将第一语言所采用的JavaScript脚本解析为各个token,并解析出每个Token的类型;
检查第一语言所采用的JavaScript脚本是否符合预设的框架格式要求,若符合,转换为第一语言所采用的JavaScript脚本框架语法,之后,遍历所述链表,根据链表中token的类型作相应处理,将所述链表中的各个token转换为第二语言所支持的JavaScript脚本。
其中,所述将转换后的第二语言存入缓存服务器的步骤包括:
01)根据前台业务框架的设置,判断是否需要将所述转换后的第二语言存入缓存服务器,若是,再执行步骤02);
02)将第二语言的标记语言页面存入缓存服务器;
03)将第二语言所支持的类型样式和JavaScript脚本存入缓存服务器。
其中,将第二语言的标记语言页面存入缓存服务器的步骤包括:
判断是否满足预设的缓存要求,若满足,再按照已生成的缓存关键值所指示的位置进行缓存;
所述预设的缓存要求包括:所抓取的页面正确,且该页面URL的请求类型为GET。
其中,将第二语言所支持的类型样式和脚本存入缓存服务器的步骤包括:
分别获取类型样式标签和脚本标签所对应的URL和内容;
根据应用路径,获取所述内容的长度及内容的哈希值,根据所述长度及哈希值生成缓存关键值;
对所述内容进行语法检查并生成用于转换的中间代码;
将所述中间代码加入到所述类型样式标签和脚本标签所对应的内容中,获得转换后的类型样式标签和脚本标签;
缓存所述转换后的类型样式标签和脚本标签;
在所述转换后的类型样式标签和脚本标签中插入用于区别标记语言页面的符号。
其中,所述方法还包括:在解析服务器判断出缓存服务器中存在与所述应用请求相对应的已解析后的第二语言时,将所述缓存服务器中的第二语言通过前台业务框架传送给用户终端。
其中,其特征在于,所述第一语言为TBML,第二语言为HTML。
其中,所述前台业务框架通过PHP扩展的方式与用户终端进行交互;所述解析服务器所执行的转换操作由C语言实现。
本发明实施例还提供了一种语言解析服务器,包括:
判断模块,用于通过前台业务框架接受来自用户终端的应用请求,判断出缓存服务器内不存在与所述应用请求相对应的已解析后的第二语言时,通知抓取模块;
抓取模块,用于根据接收到的通知抓取所述应用请求所对应的页面;
转换模块,用于通过编译语言将抓取到页面内第一语言所采用的标签、类型样式及JavaScript脚本转换成第二语言所支持的标签、类型样式及JavaScript脚本,获得转换后的第二语言;
缓存模块,用于将转换后的第二语言存入缓存服务器;
传送模块,用于通过前台业务框架将缓存服务器中的第二语言传送给用户终端。
其中,所述转换模块包括:
过滤模块,用于过滤掉第一语言中的第一类字符;
构造模块,用于构造缓冲区;
分割模块,用于将第一语言中的所有应用进行分块处理,令每个应用对应一个模块;
处理模块,用于将所述每个模块中的第一语言所采用的标签都处理为第二语言所支持的标签,将处理后的第二语言所支持的标签存入所述缓冲区;
合并模块,用于将第一语言中分散在不同位置的所有类型样式进行合并,将合并后的类型样式存入所述缓冲区的最后位置;
写入模块,用于将缓冲区中的内容写入缓存服务器中。
其中,所述缓存模块包括:
页面缓存模块,用于将第二语言的标记语言页面存入缓存服务器;
类型样式和脚本缓存模块,用于将第二语言所支持的类型样式和脚本存入缓存服务器。
其中,所述判断模块,还用于判断出缓存服务器中存在与所述应用请求相对应的已解析后的第二语言时,通知传送模块。
其中,所述第一语言为TBML,第二语言为HTML。
应用本申请,不但确保了解析的安全性,还提高了解析效率。而且,更好的支持购物网站平台的应用扩展和第三方开发,使得扩展更方便。由于对第三方应用实现了代码级的监控,所以能够严格、适当、有效的控制第三方应用,保证购物网站平台的健壮和安全性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的TBML解析器的网络示意图;
图2是根据本申请实施例的解析服务器的逻辑层示意图;
图3是根据本申请实施例的语言解析方法流程图;
图4是根据本申请实施例的将TBML所采用的标签和类型样式转换成HTML所支持的标签和类型样式的流程图;
图5是根据本申请实施例的将一个模块中的TBML所采用的标签都处理为HTML所支持的标签的处理流程图,即步骤404的详细处理流程图;
图6是根据本申请实施例的将TBML所采用的JavaScript脚本转换成HTML所支持的JavaScript脚本的流程图;
图7是根据本申请实施例的判断缓存服务器内是否存在与应用请求相对应的已解析后的HTML的流程图;
图8是根据本申请实施例的将HTML页面存入缓存服务器的流程图;
图9是将HTML所支持的类型样式和脚本存入缓存服务器的流程图;
图10是根据本申请实施例的用于电子商务的解析服务器的逻辑结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了更好的说明本申请,下面先对TBML做一简单介绍。
TBML(TaoBao Markup Language),是一种HTML商务扩展标记语言,是基于超文本标记语言(HTML,HyperText Mark-up Language)子集进行扩展后的标记语言。
TBML包含两种类型的标签(或元素):
标准HTML标签:TBML支持绝大部分常用的HTML标签和属性,不支持的标签和属性如下:
不支持在浏览器中引用外部对象的标签,如:<object>、<base>、<applet>、<param>等;
不支持HTML4.01中弃用的标签,如:<dir>、<isindex>、<menu>、<basefont>等;
部分支持样式相关属性:如:border、bgcolor、color等;
不支持极少数会使用到的属性,如:charset、char、clear、ismap等;
TBML扩展标签:用来表示购物网站的网页中特殊的数据或组件,这些标签以tb:开头。如:<tb:flash>等,这部分标签将逐步提供。
TBJS(TaoBao JavaScript),可以称为淘宝JavaScript脚本,是基于JavaScript脚本(Javascript)子集进行扩展后的标记语言。TBJS是为在下一代电子商务平台(NCP,Next Commerce Platform)版外部网店平台上开发应用程序的开发者提供支持Javascript的解决方案。其中,Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言。
TBML支持的标签及其属性如表1所示:
表1
标签名称 | 属性 |
a | href,name,rel,target,type,title,id,dir,class,style |
abbr | title,id,dir,class,style |
acronym | title,id,dir,class,style |
address | title,id,dir,class,style |
area | id,class,href,alt,shape,coords,target,style |
b | title,id,dir,class,style |
bdo | title,id,class,style,dir |
big | title,id,dir,class,style |
blockquote | title,id,dir,class,style,cite(url) |
br | title,id,class,style |
button | disabled,name,type,value,title,id,dir,class,style,tabindex,size |
caption | title,id,dir,class,style,align,span |
center | title,id,class |
cite | title,id,dir,class,style |
col | align,span,valign,title,id,dir,class,style |
colgroup | align,span,valign,width,title,id,dir,class,style |
dd | title,id,dir,class,style |
del | datetime,title,id,dir,class,style,cite(url) |
dfn | title,id,dir,class,style |
div | title,id,dir,class,style,align |
dl | title,id,dir,class,style |
dt | title,id,dir,class,style |
em | title,id,dir,class,style |
embed | src,width,height,wmode,var,style,flashvars,quality,id,name,type allowNetworking(强制写为internal),allowScriptAccess(强制写为neyer) |
fieldset | title,id,dir,class,style |
font | title,id,class,face,size,color,style |
form | action,enctype,method,target,title,id,dir,class,style |
h1 | title,id,dir,class,style,align |
h2 | title,id,dir,class,style,align |
h3 | title,id,dir,class,style,align |
h4 | title,id,dir,class,style,align |
h5 | title,id,dir,class,style,align |
h6 | title,id,dir,class,style,align |
hr | size,width,title,id,class,style,height,noshade |
i | title,id,dir,class,style |
img | alt,height,src,width,title,id,dir,class,style,border,usemap,align,valign,vspace,hspace |
input | alt,checked,disabled,maxlength,name,readonly,size,src,type,value,title,id,dir,class,style,tabindex,usemap |
ins | datetime,title,id,dir,class,style,cite(url) |
kbd | title,id,dir,class,style |
label | title,id,dir,class,style,for |
legend | title,id,dir,class,style |
1i | type,title,id,dir,class,style |
link | href,style,rel,type |
map | name,title,id,dir,class,style |
nobr | class,id,title,style |
noscript | title,id,dir,class,style |
ol | type,title,id,dir,class,style |
optgroup | disabled,label,title,id,dir,class,style |
option | disabled,label,selected,value,title,id,dir,class,style |
p | title,id,dir,class,style,align |
q | title,id,dir,class,style,cite(url) |
s | title,id,class |
script | src,type |
select | disabled,multiple,name,size,title,id,dir,class,style,tabindex |
small | title,id,dir,class,style |
span | title,id,dir,class,style |
strike | title,id,class |
strong | title,id,dir,class,style |
style | media,type,dir |
sub | title,id,dir,class,style |
sup | title,id,dir,class,style |
table | border,cellpadding,cellspacing,summary,width,title,id,dir,class,style,bgcolor,background,height,align,valign,color |
tbody | align,valign,title,id,dir,class,style,bgcolor |
td | abbr,align,colspan,headers,rowspan,scope,valign,width,title,id,dir,class,style,bgcolor,background,height |
textarea | cols,disabled,name,readonly,rows,title,id,dir,class,style,wrap(SOFT|HARD|OFF),tabindex(1~32767) |
tfoot | align,valign,title,id,dir,class,style,bgcolor |
th | abbr,align,colspan,headers,rowspan,scope,valign,width,title,id,dir,class,style,bgcolor,background,height |
thead | align,valign,title,id,dir,class,style,bgcolor |
title | dir |
tr | align,valign,title,id,dir,class,style,bgcolor,background,height |
tt | title,id,dir,class,style |
u | title,id,class |
ul | type,title,id,dir,class,style |
var | title,id,dir,class,style |
TBML支持的CSS样式属性如表2所示:
表2
ascent | background | background-attachment | background-color |
background-image | background-position | background-repeat | border |
border-bottom | border-bottom-color | border-bottom-style | border-bottom-width |
border-collapse | border-color | border-left | border-left-color |
border-left-style | border-left-width | border-right | border-right-color |
border-right-style | border-right-width | border-spacing | border-style |
border-top | border-top-color | border-top-style | border-top-width |
border-width | cap-height | caption-side | clear |
color | counter-increment | counter-reset | cursor |
descent | direction | display | empty-cells |
float | font | font-family | font-size |
font-size-adjust | font-stretch | font-style | font-variant |
font-weight | height | letter-spacing | line-height |
list-style | list-style-image | list-style-position | list-style-type |
margin | margin-bottom | margin-left | margin-right |
margin-top | max-height | max-width | min-height |
min-width | orphans | outline | outline-color |
outline-style | outline-width | overflow(-x,-y) | padding |
padding-bottom | padding-left | padding-right | padding-top |
panose-1 | slope | stemh | stemv |
table-layout | text-align | text-decoration | text-indent |
text-transform | unicode-bidi | vertical-align | visibility |
white-space | widows | width | word-spacing |
word-break | word-wrap | writing-mode | x-height |
TBML具有如下优点:
扩展方便:更好的支持购物网站平台的应用扩展和第三方开发;
解析快速:采用编译语言C实现解析,响应速度更迅速;
内嵌缓存:实现了缓存机制,提高应用的响应速度并减轻应用服务器压力;
安全严格:对第三方应用实现了代码级的监控,严格、适当、有效的控制第三方应用保证旺店平台的健壮和安全;
淘宝建站中用TBML来定义应用要展示的内容。应用回调接口输出的内容必须以TBML的形式返回给淘宝旺店,淘宝站点的前台业务框架再将TBML转换为HTML并嵌入最终页面。
本申请所涉及的语言解析器-Parser,是基于第一语言的扩展标记语言解析器,可以将第一语言转化为第二语言,这里,第一语言是指TBML/TBJS,第二语言是指HTML/Javascript。
简单而言,TBML是基于HTML子集进行扩展后的标记语言,也就是说TBML只支持部分最常用的HTML标记,同时增加了TBML支持而HTML不支持的标记。
TBJS是为第三方的应用程序开发者提供支持Javascript的解决方案。出于安全方面的考虑,本发明对原生的Javascript做了一些限制,也就是说必须按照指定的规则写javascript代码。
参见图1,其是根据本申请实施例的TBML解析器的网络示意图;本实施例中,解析服务器102通过前台业务框架接受来自用户终端101的应用请求,如果解析服务器102确定缓存服务器104中存在与所述应用请求对应的已解析后的第二语言,则将该第二语言通过前台业务框架发送给用户终端101,如果不存在,则从应用服务器103中抓取与所述应用请求对应的页面,将抓取到页面内第一语言所采用的标签、类型样式及JavaScript脚本转换成第二语言所支持的标签、类型样式及JavaScript脚本,获得转换后的第二语言,将转换后的第二语言存入缓存服务器104;之后,再从缓存服务器104中获取与应用请求对应已解析后的第二语言,通过前台业务框架传送给用户终端101。
上述抓取操作可以通过Curl工具(一个开源的抓取页面的工具)实现,缓存服务器可以通过现有的MemCache的分布式缓存工具实现,也可以通过自开发的FastDHT缓存工具实现。
参见图2,其是根据本申请实施例的解析服务器的逻辑层示意图;Parser是用C语言开发的一个so文件,通过PHP扩展Extension的方式由前台页面框架调用。解析器内核(Parser Core)是一个共享的函数库或称为共享程序库。Parser还包括抓取工具和缓存工具。其中,so文件是一个UNIX的动态连接库,是二进制文件,相当于WINDOWS下的.dll文件。
参见图3,其是根据本申请实施例的用于电子商务的语言解析方法流程图。本实施例中,解析服务器的框架会把用户请求的应用的各种参数预先传给Parser,其中,TBML为第一语言,HTML为第二语言,所述流程具体包括:
步骤301,解析服务器通过前台业务框架接受来自用户终端的应用请求,该请求中包含统一资源定位符(URL)信息;
这里,上述应用请求实际就是用户打开一个网页,即一个HTTP页面请求,上述URL指示待访问应用服务器的地址;
步骤302,判断缓存服务器内是否存在与所述应用请求相对应的已解析后的HTML,若存在,执行步骤306,若不存在,执行步骤303;
上述判断的具体方式可以是:通过URL判断缓存服务器内是否存在与所述URL相对应的已解析后的HTML。
步骤303,抓取所述应用请求所对应的页面;
步骤304,解析服务器通过Parser Core将TBML转换为HTML,具体的,通过编译语言将抓取到页面内TBML所采用的标签、类型样式及JavaScript脚本转换成HTML所支持的标签、类型样式及JavaScript脚本,从而获得解析后的HTML;
步骤305,判断是否需要将解析后的HTML存入缓存服务器中,若是,再执行步骤306,否则直接执行步骤307。
这里,是根据前台业务框架的设置的指示参数决定是否需要将解析后的HTML存入缓存服务器中。
步骤306,将解析后得到的HTML存入缓存服务器;
具体的,包括:将第二语言的标记语言页面存入缓存服务器;以及将第二语言所支持的类型样式和脚本存入缓存服务器;
步骤307,解析服务器通过前台业务框架将缓存服务器中的HTML传送给用户终端。
需要说明的是,前台业务框架通过PHP扩展的方式与用户终端进行交互;解析服务器所执行的转换操作由C语言实现。
由于本申请提供的TBML、TBJS支持第三方开发,因而可以将第三方开发后的内容放到网站购物平台上,以供用户(如商户)使用,其与现有的腾讯拍拍、百度有啊相比,具有更好的可扩展性,即本申请能够更好的支持网站购物平台的应用扩展和第三方开发;再有,本申请提供的方案不但确保了解析的安全性,还因为使用了C语言而提高了解析效率,而且让扩展更方便。
下面对图3的中的步骤304、302和305的具体实现过程进行详细说明。
参见图4,其是根据本申请实施例的将TBML所采用的标签和类型样式转换成THML所支持的标签和类型样式的流程图,该流程包括:
步骤401,过滤掉TBML中的第一类字符;
这里,第一类字符是非UTF8字符,即过滤掉TBML中的非UTF8字符;
步骤402,构造缓冲区;
步骤403,将TBML中的所有应用进行分块处理,令每个应用对应一个模块;
具体的,对于步骤403,可以通过<div id=”tp-(module_id)”>语句来实现,通过div可以把每一个应用隔开,使得各个应用不会互相影响。
步骤404,将所述每个模块中的TBML所采用的标签都处理为HTML所支持的标签;
对于步骤404,具体的,可以通过tbml_do_parse()函数来实现。
步骤405,将处理后的HTML所支持的标签存入所述缓冲区;
步骤406,将TBML中分散在不同位置的所有类型样式进行合并,将合并后的类型样式存入所述缓冲区的最后位置;
具体的,将extinfo->style Buffer中的css样式加入buffer;其中,CSS是一种样式表语言,用于为HTML文档定义布局。例如,CSS涉及字体、颜色、边距、高度、宽度、背景图像、高级定位等方面;
步骤407,将缓冲区中的内容写入缓存服务器中。
参见图5,其是根据本申请实施例的将一个模块中的TBML所采用的标签都处理为HTML所支持的标签的处理流程图,即步骤404的详细处理流程,该流程包括:
步骤501,遍历第一语言中的字符串,
步骤502,获取一个标签tag,并判断其是否合法,若合法,则执行步骤503,否则执行步骤518;
步骤503,判断所获取的标签是否为闭合标签closs_tag,若是,执行步骤504,否则执行步骤507;
步骤504~506,对于合法的闭合标签,当其不是TBML所特有的标签,且在栈中有匹配的开始标签时,在缓冲区中追加标签闭合字符(</tag>),并让所述开始标签出栈;然后返回步骤501;
步骤507,判断是否为TBML所特有的标签,若是,则执行步骤508,否则执行步骤509;
步骤508,调用该TBML标签所对应的处理函数进行处理,然后返回步骤501;
步骤509,判断是否有parser回调函数,若有,则执行步骤510,否则执行步骤511;
步骤510,调用该标签所对应的回调函数进行处理,然后返回步骤501;
步骤511~517,在缓冲区追加标签开始字符“<tag”,解析该tag所对应的属性,并判断该标签是否为闭合标签,若是,在缓冲区中追加“/”后再追加“>”,否则直接在缓冲区中追加“>”,之后,判断该标签是否需要闭合,若需要,则将当前标签放入栈中,然后返回步骤501,若不需要,直接返回步骤501;
步骤518,栈中是否仍有未匹配的标签,若有则报错,否则结束解析处理,将处理后的HTML所支持的标签存入所述缓冲区。
也就是说,图5所示流程可以简单的表述为:遍历第一语言中的字符串,
如果获取到一个合法的标签,则判断是否为闭合标签;
如果所述合法的标签是闭合标签,则当其不是第一语言所特有的标签,且在栈中有匹配的开始标签时,在缓冲区中追加标签闭合字符(</tag>),并让所述开始标签出栈;
如果所述合法标签是非闭合标签,则当所述非闭合标签是第一语言所特有的标签时,调用该标签所对应的处理函数进行处理,之后,返回遍历第一语言中的字符串的步骤;当所述非闭合标签不是第一语言所特有的标签且有与之对应的回调函数时,调用该标签所对应的回调函数进行处理,之后,返回遍历第一语言中的字符串的步骤;当所述非闭合标签不是第一语言所特有的标签且没有与之对应的回调函数时,在缓冲区追加标签开始字符,并判断是否需要闭合(即判断不是第一语言所特有的标签且没有与之对应的回调函数的非闭合标签是否需要闭合),若需要,则将当前标签放入栈中,若不需要,返回遍历第一语言中的字符串的步骤。
参见图6,其是根据本申请实施例的将TBML所采用的JavaScript脚本转换成HTML所支持的JavaScript脚本的流程图,该流程具体包括:
步骤601,初始化一链表,该链表用于存储TBJS各个标志(token);
步骤602,将TBML所采用的JavaScript脚本即TBJS解析为各个token,并解析出每个Token的类型,该类型包括函数名,变量名,操作符等,将所解析出的各个token及该token所对应的类型存储在所述链表中;若解析失败则返回错误信息;
步骤603~605,检查TBJS是否符合预设的框架格式要求,若符合,转换为TBJS框架语法,之后,遍历所述链表,根据链表中Token的类型作不同处理(例如,在变量值的前面添加“TBJS.$(this).”之类的前缀),将所述链表中的各个token转换为第二语言所支持的JavaScript脚本。
上述预设的框架格式要求为:程序的前面五个Token是否分别为:“TBJS”、“.”、“app”、“=”及“{”,最后一个Token是“;”;如果TBJS满足上述框架格式要求,则判定为符合,否则判定为不符合。
下面从如何缓存的角度对本申请再做说明。
首先,待缓存的内容需要满足以下规则:
只对获取(GET)类型的请求返回作缓存,对post类型的请求返回不作缓存;
只对页面返回码为200的,即返回正确的应用页面作缓存。
缓存的时间可根据用户需要而定,缓存时间范围为1分钟到1天:(60~86400)s。
缓存的内容主要是三大部分,即应用页面内容解析为html的缓存、页面内部css以及js的缓存以及页面外部css以及js的缓存。
下面从缓存的角度具体说明步骤302和步骤305的实现过程。
参见图7,其是根据本申请实施例的判断缓存服务器内是否存在与应用请求相对应的已解析后的HTML的流程图,该流程具体包括:
步骤701,通过parser extension接口判断URL类型(url_type)是否为获取(GET),若是,则执行步骤702,否则结束;
步骤702,解析服务器根据前台业务框架的设置的指示参数,判断是否需要缓存,若是,则执行步骤703,否则结束;
步骤703,根据url_paras数组生成缓存关键值(cache key),该cache key包括应用模块的标识(modul)长度、内容哈希码(hashcode);
步骤704,根据cache key判断缓存中是否已经存在待缓存的内容,若是,则返回缓存的内容,然后结束,否则直接结束。
参见图8,其是根据本申请实施例的将HTML页面存入缓存服务器的流程图;该流程包括:
步骤801,解析服务器获得通过抓取得到的页面;
步骤802,解析服务器判断所抓取返回的页面是否正确,即状态是否为200,若是,则执行步骤803,否则结束;
步骤803,解析服务器获取缓存控制字段(cache-control);
步骤804,判断抓取得到页面的url_type是否为GET,若是,则执行步骤805,否则结束;
步骤805,判断cache-control所表示的信息是否允许缓存,若是,则执行步骤807,否则执行步骤806;
步骤806,将解析后内容按照cache key所指示的位置进行缓存,结束;
步骤807,将解析后内容按照cache key所指示的位置进行缓存,并返回给用户终端。
也就是说,将HTML页面存入缓存服务器的步骤是判断是否满足预设的缓存要求,若满足,再按照已生成的缓存关键值所指示的位置进行缓存;该预设的缓存要求包括:所抓取的页面正确,该页面URL的类型为GET,且cache-control所表示的信息是否允许缓存。
参见图9,其是将HTML所支持的类型样式和脚本存入缓存服务器的流程图,具体包括:
步骤901~907,分别获取类型样式标签和脚本标签所对应的URL和内容;
步骤908,根据应用路径(app_path),获取所述内容的长度及内容的哈希值,根据所述长度及哈希值生成缓存关键值(cache key);
步骤909,判断cache key是否已被缓存,若是,则执行步骤912,否则执行步骤910;
步骤910,对所述内容进行语法检查并生成用于转换的中间代码,并把中间代码存储到缓存中;
步骤911,将所述中间代码加入到所述类型样式标签和脚本标签所对应的内容中,获得转换后的类型样式标签和脚本标签;
步骤912,在所述转换后的类型样式标签和脚本标签中插入用于区别标记语言页面的符号。
本申请的TBML Parser与现有的FBML Parse的比较结果如表3所示:
表3
FBML Parser | TBML Parser | |
程序语言 | PHP | C |
开源 | 大部分开放 | 否 |
扩展方式 | PHP扩展模块 | PHP扩展模块 |
标签扩展性 | 方便 | 方便 |
效率 | 一般 | 高 |
缓存 | 公布的代码中没有 | 有 |
安全 | 一般 | 高 |
HTML标签支持 | 齐全 | 比较齐全 |
可见,本申请中的Parser比现有技术中的FBML Parser具有更高的效率和安全性,在实际应用中更可靠,更方便。
本申请实施例还提供了一种用于电子商务的语言解析服务器,参见图10,具体包括:
判断模块1001,用于通过前台业务框架接受来自用户终端的应用请求,判断出缓存服务器内不存在与所述应用请求相对应的已解析后的第二语言时,通知抓取模块;
抓取模块1002,用于根据接收到的通知抓取所述应用请求所对应的页面;
转换模块1003,用于通过编译语言将抓取到页面内第一语言所采用的标签、类型样式及JavaScript脚本转换成第二语言所支持的标签、类型样式及JavaScript脚本,获得转换后的第二语言;
缓存模块1004,用于将转换后的第二语言存入缓存服务器;
传送模块1005,用于通过前台业务框架将缓存服务器中的第二语言传送给用户终端。
上述转换模块1003还可以包括:
过滤模块,用于过滤掉第一语言中的第一类字符;
构造模块,用于构造缓冲区;
分割模块,用于将第一语言中的所有应用进行分块处理,令每个应用对应一个模块;
处理模块,用于将所述每个模块中的第一语言所采用的标签都处理为第二语言所支持的标签,将处理后的第二语言所支持的标签存入所述缓冲区;
合并模块,用于将第一语言中分散在不同位置的所有类型样式进行合并,将合并后的类型样式存入所述缓冲区的最后位置;
写入模块,用于将缓冲区中的内容写入缓存服务器中。
上述缓存模块1004可以具体包括:
页面缓存模块,用于将第二语言的标记语言页面存入缓存服务器;
类型样式和脚本缓存模块,用于将第二语言所支持的类型样式和脚本存入缓存服务器。
上述判断模块,还用于判断出缓存服务器中存在与所述应用请求相对应的已解析后的第二语言时,通知传送模块。
上述第一语言为TBML,第二语言为HTML。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (13)
1.一种语言解析方法,其特征在于,包括:
解析服务器通过前台业务框架接受来自用户终端的应用请求,判断出缓存服务器内不存在与所述应用请求相对应的已解析后的第二语言时,抓取所述应用请求所对应的页面;
所述解析服务器通过编译语言将抓取到页面内第一语言所采用的标签、类型样式及JavaScript脚本转换成第二语言所支持的标签、类型样式及JavaScript脚本,获得转换后的第二语言,将转换后的第二语言存入缓存服务器;
所述解析服务器通过前台业务框架将缓存服务器中的第二语言传送给用户终端;
将第一语言所采用的标签和类型样式转换成第二语言所支持的标签和类型样式的步骤包括:
过滤掉第一语言中的第一类字符;所述第一类字符是非UTF8字符;
构造缓冲区;
将第一语言中的所有应用进行分块处理,令每个应用对应一个模块;
将所述每个模块中的第一语言所采用的标签都处理为第二语言所支持的标签,将处理后的第二语言所支持的标签存入所述缓冲区;
将第一语言中分散在不同位置的所有类型样式进行合并,将合并后的类型样式存入所述缓冲区的最后位置;
将缓冲区中的内容写入缓存服务器中;
将一个模块中的第一语言所采用的标签都处理为第二语言所支持的标签的步骤包括:
遍历第一语言中的字符串,
如果获取到一个合法的标签,则
如果所述合法的标签是闭合标签,则当其不是第一语言所特有的标签,且在栈中有匹配的开始标签时,在缓冲区中追加标签闭合字符</tag>,并让所述开始标签出栈;
如果所述合法标签是非闭合标签,则当所述非闭合标签是第一语言所特有的标签时,调用该标签所对应的处理函数进行处理,之后,返回遍历第一语言中的字符串的步骤;当所述非闭合标签不是第一语言所特有的标签且有与之对应的回调函数时,调用该标签所对应的回调函数进行处理,之后,返回遍历第一语言中的字符串的步骤;当所述非闭合标签不是第一语言所特有的标签且没有与之对应的回调函数时,在缓冲区追加标签开始字符,并判断所述不是第一语言所特有的标签且没有与之对应的回调函数的非闭合标签是否需要闭合,若需要,则将当前标签放入栈中,若不需要,返回遍历第一语言中的字符串的步骤。
2.根据权利要求1所述的方法,其特征在于,
所述来自用户终端的应用请求中包括URL;
所述解析服务器判断出缓存服务器内不存在与所述应用请求相对应的已解析后的第二语言时,抓取所述应用请求所对应的页面的步骤具体包括:
通过URL判断缓存服务器内是否存在与所述URL相对应的已解析后的第二语言,若不存在,则抓取与所述URL对应的页面。
3.根据权利要求1所述的方法,其特征在于,所述将第一语言所采用的JavaScript脚本转换成第二语言所支持的JavaScript脚本的步骤包括:
初始化一用于存储淘宝JavaScript脚本各个标志token的链表;
将第一语言所采用的JavaScript脚本解析为各个token,并解析出每个Token的类型;
检查第一语言所采用的JavaScript脚本是否符合预设的框架格式要求,若符合,转换为第一语言所采用的JavaScript脚本框架语法,之后,遍历所述链表,根据链表中token的类型作相应处理,将所述链表中的各个token转换为第二语言所支持的JavaScript脚本。
4.根据权利要求1所述的方法,其特征在于,所述将转换后的第二语言存入缓存服务器的步骤包括:
01)根据前台业务框架的设置,判断是否需要将所述转换后的第二语言存入缓存服务器,若是,再执行步骤02)和步骤03);
02)将第二语言的标记语言页面存入缓存服务器;
03)将第二语言所支持的类型样式和JavaScript脚本存入缓存服务器。
5.根据权利要求4所述的方法,其特征在于,将第二语言的标记语言页面存入缓存服务器的步骤包括:
判断是否满足预设的缓存要求,若满足,再按照已生成的缓存关键值所指示的位置进行缓存;
所述预设的缓存要求包括:所抓取的页面正确,且该页面URL的请求类型为GET。
6.根据权利要求4所述的方法,其特征在于,将第二语言所支持的类型样式和脚本存入缓存服务器的步骤包括:
分别获取类型样式标签和脚本标签所对应的URL和内容;
根据应用路径,获取所述内容的长度及内容的哈希值,根据所述长度及哈希值生成缓存关键值;
对所述内容进行语法检查并生成用于转换的中间代码;
将所述中间代码加入到所述类型样式标签和脚本标签所对应的内容中,获得转换后的类型样式标签和脚本标签;
缓存所述转换后的类型样式标签和脚本标签;
在所述转换后的类型样式标签和脚本标签中插入用于区别标记语言页面的符号。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:在解析服务器判断出缓存服务器中存在与所述应用请求相对应的已解析后的第二语言时,将所述缓存服务器中的第二语言通过前台业务框架传送给用户终端。
8.根据权利要求1-7任一所述的方法,其特征在于,所述第一语言为淘宝扩展HTML标记语言,第二语言为HTML。
9.根据权利要求8所述的方法,其特征在于,所述前台业务框架通过PHP扩展的方式与用户终端进行交互;所述解析服务器所执行的转换操作由C语言实现。
10.一种语言解析服务器,其特征在于,包括:
判断模块,用于通过前台业务框架接受来自用户终端的应用请求,判断出缓存服务器内不存在与所述应用请求相对应的已解析后的第二语言时,通知抓取模块;
抓取模块,用于根据接收到的通知抓取所述应用请求所对应的页面;
转换模块,用于通过编译语言将抓取到页面内第一语言所采用的标签、类型样式及JavaScript脚本转换成第二语言所支持的标签、类型样式及JavaScript脚本,获得转换后的第二语言;
缓存模块,用于将转换后的第二语言存入缓存服务器;
传送模块,用于通过前台业务框架将缓存服务器中的第二语言传送给用户终端;
其中,所述转换模块包括:
过滤模块,用于过滤掉第一语言中的第一类字符;所述第一类字符是非UTF8字符;
构造模块,用于构造缓冲区;
分割模块,用于将第一语言中的所有应用进行分块处理,令每个应用对应一个模块;
处理模块,用于将所述每个模块中的第一语言所采用的标签都处理为第二语言所支持的标签,将处理后的第二语言所支持的标签存入所述缓冲区;
合并模块,用于将第一语言中分散在不同位置的所有类型样式进行合并,将合并后的类型样式存入所述缓冲区的最后位置;
写入模块,用于将缓冲区中的内容写入缓存服务器中;
将所述每个模块中的第一语言所采用的标签都处理为第二语言所支持的标签的步骤包括:
遍历第一语言中的字符串,
如果获取到一个合法的标签,则
如果所述合法的标签是闭合标签,则当其不是第一语言所特有的标签,且在栈中有匹配的开始标签时,在缓冲区中追加标签闭合字符</tag>,并让所述开始标签出栈;
如果所述合法标签是非闭合标签,则当所述非闭合标签是第一语言所特有的标签时,调用该标签所对应的处理函数进行处理,之后,返回遍历第一语言中的字符串的步骤;当所述非闭合标签不是第一语言所特有的标签且有与之对应的回调函数时,调用该标签所对应的回调函数进行处理,之后,返回遍历第一语言中的字符串的步骤;当所述非闭合标签不是第一语言所特有的标签且没有与之对应的回调函数时,在缓冲区追加标签开始字符,并判断所述不是第一语言所特有的标签且没有与之对应的回调函数的非闭合标签是否需要闭合,若需要,则将当前标签放入栈中,若不需要,返回遍历第一语言中的字符串的步骤。
11.根据权利要求10所述的语言解析服务器,其特征在于,所述缓存模块包括:
页面缓存模块,用于将第二语言的标记语言页面存入缓存服务器;
类型样式和脚本缓存模块,用于将第二语言所支持的类型样式和脚本存入缓存服务器。
12.根据权利要求10所述的语言解析服务器,其特征在于,
所述判断模块,还用于判断出缓存服务器中存在与所述应用请求相对应的已解析后的第二语言时,通知传送模块。
13.根据权利要求10-12任一所述的语言解析服务器,其特征在于,所述第一语言为淘宝扩展HTML标记语言,第二语言为HTML。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910211716 CN102053994B (zh) | 2009-11-10 | 2009-11-10 | 一种语言解析器和应用该解析器的解析方法 |
HK11105887.2A HK1151872A1 (en) | 2009-11-10 | 2011-06-10 | Language resolver and method of applying the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910211716 CN102053994B (zh) | 2009-11-10 | 2009-11-10 | 一种语言解析器和应用该解析器的解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102053994A CN102053994A (zh) | 2011-05-11 |
CN102053994B true CN102053994B (zh) | 2013-06-05 |
Family
ID=43958328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910211716 Expired - Fee Related CN102053994B (zh) | 2009-11-10 | 2009-11-10 | 一种语言解析器和应用该解析器的解析方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102053994B (zh) |
HK (1) | HK1151872A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495882B (zh) * | 2011-12-07 | 2014-01-22 | 方正国际软件有限公司 | Java环境下页面对象与数据库字段绑定的实现系统和方法 |
CN102707958B (zh) * | 2012-06-08 | 2017-07-14 | 北京奇虎科技有限公司 | 一种基于开放平台的接口生成校验方法及设备 |
CN103942215A (zh) * | 2013-01-21 | 2014-07-23 | 联想(北京)有限公司 | 页面显示方法装置 |
CN104423932B (zh) * | 2013-08-21 | 2018-03-16 | 上海科泰世纪科技有限公司 | Javascript中调用二进制组件的方法 |
US9853956B2 (en) | 2014-02-11 | 2017-12-26 | Texas Instruments Incorporated | JSON encryption and hashing with indication added to key-value |
CN105739957B (zh) * | 2014-12-09 | 2018-11-16 | 阿里巴巴集团控股有限公司 | 用户界面数据处理方法及系统 |
CN104408178B (zh) * | 2014-12-12 | 2018-10-16 | 用友网络科技股份有限公司 | Web控件加载装置和方法 |
CN104572278B (zh) * | 2014-12-22 | 2018-11-23 | 百度在线网络技术(北京)有限公司 | 轻应用调用本地端能力的方法、装置及设备 |
CN106484947A (zh) * | 2016-09-08 | 2017-03-08 | 国电南瑞科技股份有限公司 | 基于事件驱动的电网cim/e模型解析方法 |
CN109145235B (zh) * | 2017-06-16 | 2021-02-02 | 艺龙网信息技术(北京)有限公司 | 用于解析网页的方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1291766A2 (en) * | 2001-06-15 | 2003-03-12 | Microsoft Corporation | Systems and methods for creating and displaying a user interface for displaying hierarchical data |
CN1852302A (zh) * | 2005-09-20 | 2006-10-25 | 华为技术有限公司 | 一种在下一代网络中实现语音交互功能的方法 |
CN1906609A (zh) * | 2003-10-22 | 2007-01-31 | 英特尔公司 | 在数据中心中使用的用于进行数据格式转换的系统 |
-
2009
- 2009-11-10 CN CN 200910211716 patent/CN102053994B/zh not_active Expired - Fee Related
-
2011
- 2011-06-10 HK HK11105887.2A patent/HK1151872A1/xx unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1291766A2 (en) * | 2001-06-15 | 2003-03-12 | Microsoft Corporation | Systems and methods for creating and displaying a user interface for displaying hierarchical data |
CN1906609A (zh) * | 2003-10-22 | 2007-01-31 | 英特尔公司 | 在数据中心中使用的用于进行数据格式转换的系统 |
CN1852302A (zh) * | 2005-09-20 | 2006-10-25 | 华为技术有限公司 | 一种在下一代网络中实现语音交互功能的方法 |
Non-Patent Citations (2)
Title |
---|
3G移动通讯中标记语言自动转换系统的设计与实现;施向伟;《中国优秀硕士学位论文全文数据库》;20070520;第4.1节第一段,第4.2-4.11节 * |
施向伟.3G移动通讯中标记语言自动转换系统的设计与实现.《中国优秀硕士学位论文全文数据库》.2007, |
Also Published As
Publication number | Publication date |
---|---|
HK1151872A1 (en) | 2012-02-10 |
CN102053994A (zh) | 2011-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102053994B (zh) | 一种语言解析器和应用该解析器的解析方法 | |
US8402427B2 (en) | Web application generator | |
US7752256B2 (en) | Presentation server | |
US6748569B1 (en) | XML server pages language | |
US7120702B2 (en) | System and method for transcoding web content for display by alternative client devices | |
US7191397B2 (en) | XML server pages language | |
US7873668B2 (en) | Application data binding | |
US9098481B2 (en) | Increasing accuracy in determining purpose of fields in forms | |
JP5010551B2 (ja) | 動的ウェブページコンテンツファイルからのサーバ側コード生成 | |
CN101609399B (zh) | 基于建模的智能化网站开发系统及方法 | |
CN110059282A (zh) | 一种交互类数据的获取方法及系统 | |
US9311303B2 (en) | Interpreted language translation system and method | |
CN1408093A (zh) | 一种能够运行在不同格式的厂商站点上的电子购物代理 | |
CN111045678A (zh) | 页面执行动态代码的方法、装置、设备及存储介质 | |
US8117610B2 (en) | System and method for integrated artifact management | |
KR20040046171A (ko) | 엘리먼트 기반 웹 문서의 파싱시스템 및 그 방법 | |
WO2014153457A1 (en) | Merging web page style addresses | |
Butler | Current technologies for device independence | |
CN114398138A (zh) | 界面生成方法、装置、计算机设备和存储介质 | |
Liu et al. | An XML-enabled data extraction toolkit for web sources | |
Kao et al. | A personal Web page tailoring toolkit for mobile devices | |
US7458016B1 (en) | Framework for declarative customization of web presentation formats | |
KR101231329B1 (ko) | 모바일 환경에서의 웹 데이터 추출을 위한 시스템 | |
Joshi | Beginning XML with C# 7: XML Processing and Data Access for C# Developers | |
CN113127776A (zh) | 面包屑路径生成方法、装置及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1151872 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1151872 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130605 Termination date: 20201110 |
|
CF01 | Termination of patent right due to non-payment of annual fee |