CN104025068A - 来自多个来源的css定义的冲突解决 - Google Patents

来自多个来源的css定义的冲突解决 Download PDF

Info

Publication number
CN104025068A
CN104025068A CN201280065685.7A CN201280065685A CN104025068A CN 104025068 A CN104025068 A CN 104025068A CN 201280065685 A CN201280065685 A CN 201280065685A CN 104025068 A CN104025068 A CN 104025068A
Authority
CN
China
Prior art keywords
css
definition
style sheet
cascading style
conflict
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.)
Granted
Application number
CN201280065685.7A
Other languages
English (en)
Other versions
CN104025068B (zh
Inventor
J·P·布撤瓦尔德
P·B·施尼特泽尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104025068A publication Critical patent/CN104025068A/zh
Application granted granted Critical
Publication of CN104025068B publication Critical patent/CN104025068B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets

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)
  • Information Transfer Between Computers (AREA)

Abstract

可提供一种用于来自多个来源的层叠样式表定义的冲突解决的方法。经由代理组件来建立服务器与客户端之间的通信。要在代理组件处执行的方法包括存储用于层叠样式表定义的改写的规则,并且拦截网页请求的客户端服务器通信,其中网页请求发源自客户端,并且对网页请求的响应包括至少两个层叠样式表定义。该方法还包括基于规则对两个层叠样式表定义之一进行改写,得到非冲突的层叠样式表定义,并且将非冲突的层叠样式表定义与相关内容一起提供给客户端。

Description

来自多个来源的CSS定义的冲突解决
技术领域
本发明概括而言涉及用于层叠样式表定义的自动冲突解决的方法。
本发明还涉及冲突解决模块、web服务器模块、计算系统、数据处理程序和计算机程序产品。
背景技术
当在网站内递送内容时,最好的做法是区分或分隔数据本身和呈现布局。对于网站,这是利用层叠样式表(Cascading Style Sheet,CSS)标准来完成的。CSS标准定义了向建立用户界面上的外观的任何给定标记应用观感(例如,颜色、字体大小、元素的位置等等)的语言。相关的CSS样式定义由声明该样式应用到哪个标记元素的选择子和属性-值对的声明块构成。选择子可基于特定类型的标记元素(例如,h1,即所有一阶标题)、CSS类(例如,.customStyle,即所有标签有CSS类customStyle的元素)或者两者的组合。属性-值对通常包含样式的实际布局定义,比如color:block,即,将黑颜色用于显示。
通常在三个不同的级别上定义CSS样式:
1.为特定标记元素直接定义的内联样式,在此情况下省略选择子(例如,<p style="color:blue;margin-left:10px">);
2.标记中的嵌入样式定义:由<style>标签包围的CSS定义的文本块;以及
3.外部样式表文件:包含从标记引用的CSS定义的单独文件,例如,<link rel="stylesheet"href="style.css"type="text/css">。
CSS规范本身定义了对样式定义的以下评估顺序:
-内联样式定义推翻嵌入或外部样式表,意思是内联样式始终被认为是决定性的,而嵌入和外部CSS定义被以较低的优先级来应用并且被同等对待。
-更具体的选择子推翻不那么具体的选择子。例如,如果有对于h1.customStyle"andh1"的定义,则任何标签有customStyle类的h1元素的样式是根据"h1.customStyle"的定义的。
CSS的机制在网站运营者或设计者能够控制所递送的样式的环境中工作良好。对于聚集来自多个来源的标记的方案,例如像是门户环境,可发生在图2的上下文中论述的若干个问题。
对于CSS应用,目前为止应用了若干个已知的技术:
文献US7,770,108公开了一种对多部分电子文档的复合样式表应用。确定与所识别的内容相对应的子集样式表。将所选择的样式表与全局样式表合并来生成复合样式表。
另外,文献US2010/0180194公开了一种在web应用构成中解决UI样式冲突的方法。
然而,可能需要一种CSS定义处理,其允许在设计门户页面和相关门户组件(portlet)时的更高程度的自由,并且不是一定要有严格的确定和互斥的CSS定义。
发明内容
这个需求可由根据独立权利要求的用于层叠样式表定义的自动冲突解决的方法、冲突解决模块、web服务器模块、计算系统、数据处理程序和计算机程序产品来解决。
根据一个实施例,可提供一种用于来自多个来源的层叠样式表定义的冲突解决——具体而言是自动冲突解决——的方法。可经由代理组件来建立服务器与客户端之间的通信。在代理组件处要执行的方法可包括存储用于层叠样式表定义的改写的规则,具体而言是多个规则。具体地,规则可包括对于层叠样式表定义中的至少一个的改写的至少一个改写指定;改写规则可基于层叠样式表定义文件的来源。该方法还可包括拦截网页请求的客户端服务器通信,其中网页请求发源自客户端,并且其中对网页请求的响应可包括两个层叠样式表定义;以及基于规则对两个层叠样式表定义之一进行改写,得到非冲突的层叠样式表定义。最后,该方法可包括将非冲突的层叠样式表定义与相关内容一起提供给客户端。这里,可利用要应用的经更改的CSS定义来显示内容。
根据另一实施例,可提供一种冲突解决模块。用于来自多个来源的层叠样式表定义的自动冲突解决的该冲突解决模块或者换言之代理的元素或代理元素可包括适用于存储用于层叠样式表定义的改写的规则的规则存储单元。可经由代理组件来建立服务器与客户端之间的相关通信。冲突解决模块还可包括拦截单元,适用于拦截网页请求的客户端服务器通信,其中网页请求发源自客户端,并且其中对网页请求的响应包括两个层叠样式表定义。冲突解决模块还可包括改写单元,适用于基于规则对两个层叠样式表定义之一进行改写,得到非冲突的层叠样式表定义;以及提供单元,适用于将非冲突的层叠样式表定义与相关内容一起提供给客户端。
可注意,客户端可以是web浏览器或者任何其他请求/接收方程序或单元。
详细描述
本领域技术人员将会理解,请求除了包括内容以外还可包括对页面标记的请求和对于被引用的层叠样式表文件的相关请求。很有可能没有相关的CSS文件可用,并且CSS定义中的至少两个可能是冲突的。
在本申请的上下文中,可遵循以下约定:
CSS——术语“CSS”或“层叠样式表”可被理解为用于描述以标记语言编写的文档的呈现语义——外观和格式——的传统样式表语言。其最常见的应用是设定以HTML和XHTML编写的网页的样式,但该语言也可应用到任何种类的XML文档,包括普通XML、SVG和XUL。层叠样式表可主要被设计来使能以HTML或类似的标记语言编写的文档内容与包括诸如布局、颜色和字体之类的元素在内的文档呈现的分隔。这个分隔可改善内容可访问性,在呈现特性的指定中提供更多的灵活性和控制,使得多个页面能够共享格式,并且降低结构性内容中的复杂度和重复,这例如是通过无表格web设计来实现的。CSS定义可表示样式表语言的一组表达式。CSS定义可以可存储在文件中。
冲突解决——这个术语可表示如下情况:在冲突解决之后,在相关元素之间不再存在冲突。在如下事实中可看到冲突:例如,两个CSS定义可同时存在,但在一个时间点只可以使用一个。在冲突解决之后,可以决定使用这两个CSS定义中的任一个或者并行使用。
代理——在计算机网络中,代理服务器可表示对于来自寻求来自其他服务器的资源的客户端的请求充当中介的服务器(计算机系统或应用)或服务器组件。客户端可连接到代理服务器,请求一些服务,例如文件、连接、网页或从一不同的服务器可得的其他资源。代理服务器根据其过滤规则来评估该请求。例如,其可以按IP地址(IP=互联网协议)或协议来过滤流量。如果该请求可得到过滤器的确证,则代理可通过连接到相关服务器并代表客户端请求服务以最终将请求的结果递送到客户端,从而来提供资源。
规则——术语“规则”可表示对于决策——具体而言是关于要使用哪个CSS定义的决策——的指令。规则可基于所请求的内容的来源、CSS定义的来源或者CSS定义内部的其他内容。
拦截——术语“拦截”可表示在代理或代理服务器上对客户端/服务器通信的主动干预。拦截可改变来自客户端的请求或请求的结果。
客户端服务器通信——这个术语可表示两个计算机程序之间的关系,其中一个程序——客户端——向另一程序——服务器——作出服务请求,该另一程序履行该请求。在一些情况下,客户端可驻留在一个计算机上并在该一个计算机上被执行,并且另一计算机程序可在另一计算机上被执行。然而,这可以不是必要条件。
网页请求——术语网页请求可表示对通常可驻留在一个或多个服务器上的网页或网页的一些部分的请求。
临时模型——这个术语可表示可存储在存储单元中——具体而言是瞬态临时模型存储中——的瞬态临时模型或数据模型。这可包含特定的被请求网页视图的所有CSS定义的表示。这个表示可包含各个CSS选择子、每个选择子的当前值以及此选择子的CSS来源——或者来源关联。临时模型的实现示例可以是树结构,如下所述。
CSS来源关联——这个术语可表示服务器上的特定CSS与特定来源之间的链接。
覆写——术语“覆写”可表示某些参数值的重定义或改写的过程。一CSS定义可被另一CSS定义覆写,使得被覆写的CSS定义可不再有效,而只有进行覆写的那个有效。
非冲突——这个术语可表示——尤其是在覆写和CSS定义的上下文中——用于web门户页面的不同门户组件的CSS定义可不具有矛盾的内容或矛盾的应用规则的情形。具有非冲突的CSS定义的一种方式可以是使用一个定义而不是另一CSS定义。或者,可以使用若干个CSS定义,每个用于其各自的门户组件,从而使得对于一个web门户页面内的不同门户组件——但最终是对于不同的门户组件——使用不同的样式或标记。
并行使用——术语并行使用可以——在此上下文中——表示如下事实:两个事实,例如两个CSS定义,可存在并且可被同时应用,即,应用在相同的被请求网页上。
门户——术语门户——也描述为链接页面——可表示充当对万维网或企业的内联网或者两者的混合中的信息的访问点的网站的布局。门户可以以统一的方式——具体而言是以门户组件——呈现来自不同来源的信息。门户组件可表示门户窗口的子窗口。除了标准的搜索引擎特征之外,web门户还可提供其他服务,例如电子邮件、新闻、股票价格、信息、数据库和娱乐。门户可提供一种方式,供企业为多个应用和数据库提供具有访问控制和过程的一致观感,这多个应用和数据库否则将完全是不同的实体。
所提出的用于自动CSS冲突解决的方法可提供几个优点。
创造性方法可允许并行地——意思是同时在同一页面上——使用多于一个CSS定义。可以不再要求对于整个网页决定一个CSS定义。最后应用的CSS定义将不被用于整个网页。对于网页上的或者web门户中的不同门户组件,不同的CSS定义可成为可能,从而门户组件的内容或标题的不同标题和外观可成为可能。这可使得程序员或网页的设计者在设计过程中有多得多的自由,并且其可为被请求网页的阅读者或用户提供更好的可理解性。从而可提高门户的易用性。
在该方法的一个实施例中,该方法可包括代理组件可存储可适用于表示层叠样式表定义的临时模型。这种模型可以是用于应用用于改写CSS定义的特定规则的中央信息点。
根据该方法的另一实施例,临时模型可基于树结构。这种结构可允许应用规则的决策模型容易导航。树结构一般很适合于决策过程。
在该方法的另一实施例中,树结构可包括由层叠样式表选择子、值和指示多个来源之一的层叠样式表来源关联构成的元素。从而,CSS和/或其内容的起源可由CSS来源关联来描述。可利用此CSS来源关联来访问CSS。这样,当应用用于CSS定义的改写的一个或多个规则时,CSS定义的所有相关信息成分都可用于决策过程。
再根据该方法的另一个实施例,用于两个层叠样式表定义之一的改写的规则可包括对于基于两个层叠样式表定义的来源关联由第二层叠样式表定义覆写第一层叠样式表定义的第一指定。由此,规则可基于CSS定义的内容和值。在此情况下,其可基于CSS定义及其相关内容的起源。
在该方法的另一实施例中,用于两个层叠样式表定义之一的改写的规则可包括对于基于两个层叠样式表定义的来源关联对第一层叠样式表定义和第二层叠样式表定义的并行使用的第二指定。也可定义关于并行使用的其他决策标准。
在该方法的优选实施例中,规则可以取两个层叠样式表定义的内容元素作为输入参数。这可使能基于CSS定义的内容的决策。具体地,来源关联可用作具体内容。然而,可以使用任何元素。其他示例可以是CSS定义的颜色方案的配合或和谐。这意味着如果两个颜色非常接近一颜色值,则可以增大颜色值的差异,以便不同门户元素有更好的可理解性。
在该方法的另一优选实施例中,CSS定义或相关内容的多个来源可被分组成类别,以使得在应用规则时,特定类别的所有成员可被同等对待。这样,可以向更大的来源组应用规则,从而使能了共同的对待,例如在金融应用中,可以以相同的方式呈现所有股票价格,从而降低了对门户的性能要求并且增强了对门户中的特定信息元素的再认识。
也可提供一web服务器模块,其可包括冲突解决模块。两个元素——web服务器模块以及冲突解决模块——或者各个代理元素可被一起安装和维护,以减少对两个模块的维护工作。
web服务器模块可以单独实现或者与计算系统结合实现。web服务器模块与计算系统的这种典型配置也可使能更容易维护和集成到计算网络中。
在另一实施例中,可提供用于在数据处理系统中执行的数据处理程序,该数据处理程序包括当该程序可在数据处理系统上运行时用于执行如上所述的方法的软件代码部分。数据处理系统可以是计算机或计算机系统。
另外,实施例可采取可从计算机可使用或计算机可读介质访问的计算机程序产品的形式,该计算机可使用或计算机可读介质提供程序代码来由计算机或任何指令执行系统使用或联系计算机或任何指令执行系统使用。就本描述而言,计算机可使用或计算机可读介质可以是任何如下装置:该装置可包含用于存储、传达、传播或传输程序来由指令执行系统、装置或设备使用或联系指令执行系统、装置或设备使用的装置。
介质可以是用于传播介质的电子、磁、光、电磁、红外或半导体系统。计算机可读介质的示例可包括半导体或固态存储器、磁带、可移除计算机盘、随机访问存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。光盘的当前示例包括致密盘-只读存储器(CD-ROM)、致密盘-读/写(CD-R/W)、DVD和蓝光盘。
还应当注意,参考不同的主题描述了本发明的实施例。具体地,一些实施例是参考方法型权利要求来描述的,而其他实施例是参考装置型权利要求来描述的。然而,本领域技术人员将从以上和接下来的描述了解到,除非另有通知,否则除了属于一类主题的特征的任何组合以外,涉及不同主题的特征之间的任何组合,具体而言是方法型权利要特征和装置型权利要求的特征之间的任何组合,也被认为在本文献中公开了。
本发明的以上定义的方面和更多方面从下文要描述的实施例的示例中清楚显现,并且被参考实施例的示例来加以说明,但本发明不限于这些实施例的示例。
附图说明
现在将仅以示例方式并参考以下附图来描述本发明的优选实施例:
图1示出了创造性方法的实施例的框图。
图2示出了门户上的网页的实施例的框图。
图3示出了临时模型的树结构的实施例的框图。
图4示出了冲突解决模块的实施例的框图。
图5示出了客户端/服务器通信环境中的冲突解决模块的实施例的框图。
图6示出了包括冲突解决模块的计算系统的实施例。
具体实施方式
下面,将给出对附图的详细描述。附图中的所有指令是示意性的。首先,将描述用于层叠样式表的自动冲突解决的创造性方法的实施例的框图。然后,将描述该方法、冲突解决模块和计算系统的实施例。
图1示出了用于来自多个来源的层叠样式表定义的冲突解决的创造性方法100的实施例的框图100,其中经由代理组件建立(102)服务器与客户端之间的通信。可在代理组件处执行的方法100可包括存储(104)用于层叠样式表定义的改写的规则。具体地,一个或多个规则可包括对于层叠样式表定义中的至少一个的改写的至少一个改写指定。该方法还可包括拦截(106)网页请求的客户端服务器通信,其中网页请求发源自客户端,并且其中对网页请求的响应包括至少两个层叠样式表定义;以及基于规则对两个层叠样式表定义之一进行改写(108),得到非冲突的层叠样式表定义。该方法还可具有提供,用于将非冲突的层叠样式表定义与相关内容一起提供(110)给客户端。
图2示出了门户上的网页200的实施例的框图。网页或门户页面200可被显示在计算机屏幕上。可以有一般布局,其中标题包括词语“WS-Portal”、“Home”、“Admin”、“Tag Center”等等。CSS的传统机制在网站运营者能够控制作为门户的一部分递送的样式的环境中工作良好。对于聚集来自多个来源的标记的解决方案,尤其是门户环境,可发生以下问题:
复杂的网站通常可由多于一个样式元素构成。例如,可以有对于PortletA204的定义,对于PortletB206的另一定义,以及对于周围主题202的另一定义。本领域技术人员可清楚,标号不仅可标示标志“Patent”,而且还可标示完整的相关子屏幕。这可由指向也包括门户组件204和206的子页面的不同地方的若干个标号202来指示。
CSS可遵循的仅有的两个机制是层叠的和基于时间的那个——意思是如果在相等级别上对同一选择子定义了两个样式,那么除了浏览器实现的将应用最后加载的那个的方法以外,没有解决方案。
在第一示例场景中,同一门户页面上的两个门户组件PortletA和PortletB对于同一选择子“customStyle”定义CSS定义,但具有不同的值。PortletA可包含标记元素<span class=”customStyle”>TitlePortlet A</span>,并且PortletB可包含标记元素<spanclass=”customStyle”>Title Portlet B</span>。期望的结果是每个门户组件的标题可由该门户组件本身递送的CSS定义来设定样式。以下描述在浏览器中利用现有技术方法将如何解读这样的门户页面并且示出了结果。在本描述中,为了简单进行了以下假设:
·用于PortletA的样式在用于PortletB的样式之前被加载。对此进行交换将影响实际的视觉结果,但不改变问题描述。
·到目前为止还没有加载样式,并且除了所讨论的样式以外没有其他样式存在。
活动的潜在时间轴看起来可以像下面这样:用于PortletA的样式——例如来自外部文件portletAstyle.css——被加载并且被移交到浏览器引擎。portletAstyle.css包含对于“customStyle”类的定义,其中值指定字体大小10px(像素)和颜色红色。浏览器决策引擎检查是否存在内联样式。如果不存在,则该样式被应用到所有具有“customStyle”属性的元素。结果是来自portletAstyle.css的定义被应用到两个门户组件标题,即标题PortletA和标题PortletB两者都被以字体大小10px和红颜色来显示。
现在,来自PortletB的样式——例如来自外部文件portletBstyle.css——被加载并且与上述相同的步骤被处理。portletBstyle.css包含对于“customStyle”类的定义,其中值指定字体大小15px和颜色绿色。结果是——由于此样式被后加载——其被应用到页面,其结果是所有字体大小现在都是15px大小并且是绿色,如PortletB的CSS定义所定义的那样。这样的结果可不同于期望的设计结果,在期望的设计结果中应当使用CSS定义的并行使用,即,对于PortletA的标题是10px的字体大小、红颜色,而对于PortletB的标题是15px的字体大小、绿颜色。
图3示出了临时模型的树结构的实施例的框图300,其中每个树元素302、304、306、308、310、312可表示特定的CSS定义选择子(例如,h1)和属性集合(例如,{color:blue;})。每个元素可被标签到对于此确切定义贡献了值的CSS来源,例如,块312中的“sourceA”可表示当前属性集合根源于内容来源A。CSS特异性关系在树300中可被表示为父-子关系。块302、304、306、308、310、312之间的箭头可表示“特殊化”,即,306和308特殊化304。这些块可表示在特定时间点的CSS定义,并且根据此实施例中定义的规则的冲突解决可实现为适当的树修改操作。
在图3的示例中,块312中的“sourceA”可被标签到内容来源A,并且括号“{...}”可包含合并后的CSS值。左侧的块——块304、306、308——可表示合并之前和应用改写规则之前的CSS定义。
图4示出了冲突解决模块400的实施例的框图,冲突解决模块400可以是代理元素的组件,用于来自多个来源的层叠样式表定义的自动冲突解决。可经由代理组件建立服务器与客户端之间的通信。冲突解决模块400可包括适用于存储用于层叠样式表定义的改写的规则的规则存储单元402,和适用于拦截网页请求的客户端/服务器通信的拦截单元404,其中网页请求发源自客户端(502),并且其中对网页请求的响应包括两个层叠样式表定义。
冲突解决模块400还可包括改写单元406,适用于改写两个层叠样式表定义之一,得到非冲突的层叠样式表定义;以及提供单元408,适用于将非冲突的层叠样式表定义与相关内容一起提供给客户端。
图5示出了客户端/服务器通信环境中的冲突解决模块的实施例的框图。所公开的冲突解决模块506可拦截客户端502与服务器504之间的通信,其中客户端502通常是浏览器程序,服务器504可递送具有来自多个来源的网页,通常是门户服务器。冲突解决模块506的主要子组件是:
·解析和改写引擎508,其可能够读取并替换客户端/服务器通信中包含的任何文本数据,
·持久性规则存储库或规则存储单元402,其可存储关于在本描述中如何基于CSS来源来解决CSS冲突的配置和策略信息,以及
·瞬态临时模型存储库512,其中临时存储用于特定网页的CSS样式。
解析和改写引擎508可以是冲突解决模块的协调组件,具体而言是拦截服务器响应、对其进行解析并利用临时模型存储库相应于规则存储库中存储的规则来对其进行改写的CSS代理。利用序列流程来详细描述此组件的确切功能。
对使用所公开的冲突解决模块的场景中的典型交互序列描述如下:
514:浏览器或者说客户端502向服务器504请求网页。该请求被冲突解决模块506拦截。
516:冲突解决模块506将网页请求转发到服务器。
518:服务器504向CSS代理或冲突解决模块506发送包含网页标记的响应,CSS代理或冲突解决模块506将其路由到内部解析和改写引擎508。
520:解析和改写引擎为当前网页请求创建id并且将CSS定义的最初为空的临时模型512关联(532)到它。其随后解析标记并以如下方式来改写它:
a)对于任何全局嵌入CSS定义,其将这些定义存储到与来源信息“嵌入”相关联的当前网页请求的临时模型512。
b)对于标记中的任何CSS样式引用(即,像<link rel="stylesheet"type="text/css"href="/css/c1.css"/>这样的表达式),其改写该链接,添加关于当前网页请求的参数(例如,<link rel="stylesheet"type="text/css"href="/css/c1.css?requestId=1234"/>)。
c)对于根据规则存储库匹配CSS来源的定义模式的任何标记元素,其通过添加表示该来源的唯一附加CSS类注释来改写该标记(例如,<div id=”portletContainer123”class=”portletContainer123”)。
d)对于根据c)在标记元素内部的任何嵌入CSS定义,其将CSS定义合并到临时模型并且在必要时改写CSS定义。这以如下方式对每个CSS定义选择子执行:
·如果在临时模型中还没有具有相同选择子的CSS定义,则可添加到与所确定的CSS来源相关联的临时模型的CSS定义和值。响应中的CSS定义保持不变并且不被改写。
·如果在临时模型中已经有具有相同选择子的CSS定义,则其从临时模型取回现有定义的关联CSS来源。其随后从规则存储库取回所存储的关于现有来源和新来源的规则,530。取决于规则,解析和改写引擎508执行以下操作:
1.现有来源覆写新来源:临时模型512保持不变。响应中的CSS定义被省略,即,被以空串来改写。
2.新来源覆写现有来源:临时模型512中的各个CSS选择子被以新值来更新并与新来源相关联。响应中的CSS定义保持不变并且不被改写。
3.新来源和现有来源两者都保持其个体CSS定义:通过如步骤c)中所定义的为CSS来源添加唯一的附加CSS类,对于各个CSS选择子以两个新的更具体的子元素来更新临时模型。每个更具体的CSS选择子被关联到相应的CSS来源并且获得它的值。父CSS选择子被复位到不包含任何值并且不与任何CSS来源相关联。响应中的CSS定义也被改写到两个更具体的选择子和来自两个来源的值。
520:CSS代理将经改写的标记返回给浏览器。
522:浏览器502自动请求在标记中引用的CSS文件。到此CSS文件的链接已经在之前的步骤中被改写(见上文),并且因此包含关于当前网页请求的参数(例如,/css/c1.css?requestId=1234)。该请求再次被CSS代理506所拦截。
524:CSS代理506向服务器504请求原始CSS文件(/css/c1.css)。
526:服务器504向代理返回包含一组CSS定义的CSS文件,代理将其路由到内部解析和改写引擎。
536:解析和改写引擎508为此CSS文件确定CSS来源,例如基于规则存储单元402中存储的URL模式来确定,并且加载关于此CSS来源的规则。
534:解析和改写引擎508基于请求参数为此网页请求加载临时模型。其将来自CSS文件的CSS定义与临时模型合并并且在必要时改写文件中的CSS定义。对512中存储的临时模型的改写和更新以如以上步骤d)中描述的方式对每个CSS定义选择子执行。
528:CSS代理将经改写的CSS文件返回给浏览器。
对原始网页中引用的任何另外的CSS文件重复步骤522至528。
持久性规则存储库或规则存储单元402可用于配置关于CSS定义的哪些来源存在、它们如何被识别以及必须使用哪些偏好规则来解决来自不同来源的CSS定义之间的冲突。
CSS来源的典型定义可包括:
1.匹配可关联到此CSS来源的标记元素的模式或正则表达式(例如,像<div id=”portletInstance*”这样的表达式,*是通配符,包围门户环境中的门户组件实例的标记)。
2.可匹配指向此CSS来源的CSS文件的URL的模式或正则表达式(例如,像/portletapp/*.css这样的表达式,*是通配符,用于门户环境中的门户组件贡献的CSS文件)。
可以按如下方式来定义规则:对于来源sourceA和sourceB的每个组合,可以配置在冲突的情况下哪些CSS定义获胜。可能的配置可以是:
1.sourceA覆写sourceB,
2.sourceB覆写sourceA,或者
3.sourceA和sourceB两者都保持其个体CSS定义。
换言之,临时模型存储库512或瞬态临时模型存储库可包含特定网页视图的所有CSS定义的表示。这个表示可包含各个CSS选择子、每个选择子的当前值以及此选择子的CSS来源,如上所述。临时模型的实现示例可以是树结构,其中每个树元素表示特定的CSS定义选择子(如图3的上下文中所指示),例如h1,以及属性集合,例如{color:blue;},并且被标签有为此确切定义贡献了值的CSS来源。CSS特异性关系被表示为树中的父-子关系(见上文)。
在本发明到先前提及的示例场景的示范性实施例中,可定义这样的规则:如果有冲突,则PortletA和PortletB两者都应当保持其自己的CSS定义。由此得到的动作流可以如下:来自PortletA的样式通过CSS代理被加载。CSS代理根据对图5的描述来处理此文件。由于来自PortletA的样式是加载的第一样式,所以还没有必要对样式定义进行任何改写。然而,页面标记被改写,为围绕PortletA和PortletB的容器元素添加附加的唯一CSS类(例如,对于围绕门户组件标记的div元素添加<div class=“portletA“>)。在这个时间点,像先前那样只应用PortletA样式,即,两个标题都被以10px大小和红颜色来显示。接下来,浏览器再次通过CSS代理加载关于PortletB的样式。CSS代理检测到已经有来自PortletA的等同定义。根据两个PortletA和PortletB都应当保持其个体样式定义这个规则,其改写CSS以包含关于PortletA和PortletB的两个更具体的定义,例如.portletA.customStyle{font-size:10px;color:red;}以及.portletB.customStyle{font-size:15px;color:green;}。这些经改写的CSS定义与经改写的标记相结合产生了期望的结果,即PortletA的标题被以10px大小和红颜色显示,并且PortletB的标题被以15px大小和绿颜色显示。
本发明的实施例可与几乎任何类型的计算机一起实现,无论适合于存储和/或执行程序代码的平台是什么。例如,如图6所示,计算系统600可包括一个或多个处理器602(每个处理器具有一个或多个核)、关联的存储器元件604、内部存储设备606(例如,硬盘、诸如致密盘驱动器或数字视频盘(DVD)驱动器之类的光驱动器、闪存条,等等)以及当今的计算机的许多其他典型元件和功能(未示出)。存储器元件604可包括在程序代码的实际执行期间使用的主存储器,例如随机访问存储器(RAM),以及缓存存储器,其提供对至少一些程序代码和/或数据的临时存储以便减少必须从长期存储介质或外部大容量存储装置616取回代码和/或数据来执行的次数。计算机600内部的元件可通过具有相应适配器的总线系统618链接在一起。此外,包括冲突解决模块400的web服务器模块620可附接到总线系统618。或者,冲突解决模块400可直接附接到总线系统618。
计算系统600还可包括输入装置,例如键盘608、诸如鼠标612之类的指点设备、或者麦克风(未示出)。或者,计算系统可配备有触摸敏感屏幕作为主输入设备。另外,计算机600可包括输出装置,例如监视器或屏幕612(例如,液晶显示器(LCD)、等离子显示器、发光二极管显示器(LED、OLED)或者阴极射线管(CRT)监视器)。计算机系统600可经由网络接口连接614连接到网络(例如,局域网(LAN),广域网(WAN),例如因特网或任何其他类似类型的网络,包括无线网络)。这可允许耦合到其他计算机系统或存储网络或磁带驱动器。本领域技术人员将会明白,存在许多不同类型的计算机系统,并且上述输入和输出装置可采取其他形式。一般来说,计算机系统600可至少包括实现本发明的实施例所必要的最低限度处理、输入和/或输出装置。
另外,本领域技术人员将会明白,上述计算机系统600的一个或多个元件可位于远程位置并通过网络连接到其他元件。另外,本发明的实施例可在具有多个节点的分布式系统上实现,其中本发明的每个部分可位于该分布式系统内的一不同节点上。在本发明的一个实施例中,节点对应于计算机系统。或者,节点可对应于具有关联的物理存储器的处理器。节点或者可对应于具有共享存储器和/或资源的处理器或者智能电话。
另外,执行本发明的实施例的软件指令可存储在诸如致密盘(CD)、磁盘、磁带或任何其他计算机可读存储设备之类的计算机可读介质上。
虽然已联系有限数目的实施例描述了本发明,但受益于本公开的本领域技术人员将会明白,可以设计出不脱离如本文公开的本发明的范围的其他实施例。因此,本发明的范围应当仅由所附权利要求来限定。
还应当注意,术语“包括”不排除其他元素或步骤并且“一个”不排除多个。另一方面,术语“包括”也可包括“由…构成”的情况。另外,与不同实施例相关联地描述的元素可被组合。还应当注意,权利要求中的附图标记不应当被解释为限制性元素。

Claims (14)

1.一种用于来自多个来源的层叠样式表定义的冲突解决的方法(100),其中经由代理组件来建立(102)服务器(504)与客户端(502)之间的通信,其中要在所述代理组件处执行的所述方法(100)包括
-存储(104)用于层叠样式表定义的改写的规则,
-拦截(106)网页请求(514)的客户端服务器通信,其中所述网页请求(514)发源自所述客户端(502),并且其中对所述网页请求(514)的响应(518)包括至少两个层叠样式表定义,
-基于所述规则对所述两个层叠样式表定义之一进行改写(108),得到非冲突的层叠样式表定义,以及
-将所述非冲突的层叠样式表定义与相关内容一起提供给(110)所述客户端(502)。
2.根据权利要求1所述的方法(100),其中,所述代理组件存储适用于表示层叠样式表定义的临时模型。
3.根据权利要求2所述的方法(100),其中,所述临时模型是基于树结构(300)的。
4.根据权利要求3所述的方法(100),其中,所述树结构(300)包括由层叠样式表选择子、值和指示所述多个来源之一的层叠样式表来源关联构成的元素。
5.根据前述权利要求中的任何一个所述的方法(100),其中,用于所述两个层叠样式表定义之一的改写的规则包括对于基于所述两个层叠样式表定义的来源关联由第二层叠样式表定义覆写第一层叠样式表定义的第一指定。
6.根据前述权利要求中的任何一个所述的方法(100),其中,用于所述两个层叠样式表定义之一的改写的规则包括对于基于所述两个层叠样式表定义的来源关联对第一层叠样式表定义和第二层叠样式表定义的并行使用的第二指定。
7.根据前述权利要求中的任何一个所述的方法(100),其中,所述规则取所述两个层叠样式表定义的内容元素作为输入参数。
8.根据前述权利要求中的任何一个所述的方法(100),其中,所述多个来源被分组成类别,以使得在应用规则时,特定类别的所有成员被同等对待。
9.一种冲突解决模块(400),用于来自多个来源的层叠样式表定义的自动冲突解决,其中经由代理组件来建立服务器(504)与客户端(502)之间的通信,其中所述冲突解决模块(400,508)包括
-规则存储单元(402),适用于存储用于层叠样式表定义的改写的规则,
-拦截单元(404),适用于拦截网页请求(514)的客户端/服务器通信,其中所述网页请求(514)发源自所述客户端(502),并且其中对所述网页请求(514)的响应(518)包括两个层叠样式表定义,
-改写单元(406),适用于对所述两个层叠样式表定义之一进行改写,得到非冲突的层叠样式表定义,以及
-提供单元(408),适用于将所述非冲突的层叠样式表定义与相关内容一起提供给所述客户端(502)。
10.根据权利要求9所述的冲突解决模块(400),还包括用于临时模型的第二存储单元(512)。
11.一种web服务器模块(620),包括根据权利要求9或10所述的冲突解决模块(400)。
12.一种计算系统(600),包括根据权利要求11所述的web服务器模块(620)。
13.一种用于在数据处理系统(600)中执行的数据处理程序,包括用于当所述程序在数据处理系统(600)上运行时执行根据前述权利要求1至8中的任何一个所述的方法(100)的软件代码部分。
14.一种计算机程序产品,存储在计算机可使用介质上,包括计算机可读程序装置,用于当所述程序在计算机(600)上运行时使得计算机(600)执行根据前述权利要求1至8中的任何一个所述的方法(100)。
CN201280065685.7A 2012-01-02 2012-11-06 来自多个来源的css定义的冲突解决 Active CN104025068B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP12150002.9 2012-01-02
EP12150002 2012-01-02
PCT/IB2012/056173 WO2013102802A1 (en) 2012-01-02 2012-11-06 Conflict resolution of css definition from multiple sources

Publications (2)

Publication Number Publication Date
CN104025068A true CN104025068A (zh) 2014-09-03
CN104025068B CN104025068B (zh) 2017-06-13

Family

ID=48695978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280065685.7A Active CN104025068B (zh) 2012-01-02 2012-11-06 来自多个来源的css定义的冲突解决

Country Status (3)

Country Link
US (1) US10241984B2 (zh)
CN (1) CN104025068B (zh)
WO (1) WO2013102802A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105577719A (zh) * 2014-10-15 2016-05-11 阿里巴巴集团控股有限公司 一种数据压缩方法和装置
CN105989126A (zh) * 2015-02-15 2016-10-05 阿里巴巴集团控股有限公司 一种网页显示方法及装置

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE420512T1 (de) 1999-10-22 2009-01-15 Nomadix Inc System und verfahren zur dynamischen teilnehmer- basierten bandbreitenverwaltung in einem kommunikationsnetz
US8868740B2 (en) 2006-09-29 2014-10-21 Nomadix, Inc. Systems and methods for injecting content
US20110030037A1 (en) 2009-07-07 2011-02-03 Vadim Olshansky Zone migration in network access
WO2013102802A1 (en) 2012-01-02 2013-07-11 International Business Machines Corporation Conflict resolution of css definition from multiple sources
US9137281B2 (en) 2012-06-22 2015-09-15 Guest Tek Interactive Entertainment Ltd. Dynamically enabling guest device supporting network-based media sharing protocol to share media content over local area computer network of lodging establishment with subset of in-room media devices connected thereto
CN104252412B (zh) * 2013-06-28 2017-12-29 国际商业机器公司 用于css冲突的自动检测的方法和系统
US10002005B2 (en) * 2014-09-30 2018-06-19 Sonos, Inc. Displaying data related to media content
WO2016061269A1 (en) * 2014-10-15 2016-04-21 Alibaba Group Holding Limited Compression of cascading style sheet files
CN105574041B (zh) 2014-10-16 2020-07-21 阿里巴巴集团控股有限公司 一种数据重组方法和装置
CN105630345B (zh) 2014-11-06 2019-02-19 阿里巴巴集团控股有限公司 一种控制显示方向的方法和设备
CN105677654B (zh) * 2014-11-18 2020-07-03 阿里巴巴(中国)有限公司 广告过滤方法及装置
US10372795B2 (en) 2015-03-18 2019-08-06 Microsoft Technology Licensing, Llc Conditionally controlled styling
US10482165B2 (en) * 2015-03-18 2019-11-19 Microsoft Technology Licensing, Llc Declarative cascade reordering for styles
US10769715B1 (en) * 2015-09-04 2020-09-08 Etalify Inc. System and process for in-app sale of physical products
CN105138697B (zh) * 2015-09-25 2018-11-13 百度在线网络技术(北京)有限公司 一种搜索结果的展现方法、装置及系统
CN113688339A (zh) * 2021-07-26 2021-11-23 珠海金山办公软件有限公司 一种信息加载方法、装置、电子设备及计算机存储介质
US12032647B2 (en) * 2022-06-13 2024-07-09 Microsoft Technology Licensing, Llc Tenant network for rewriting of code included in a web page

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005085057A (ja) * 2003-09-10 2005-03-31 Hitachi Ltd コンテンツ表示制御システム
CN1802642A (zh) * 2003-07-08 2006-07-12 艾利森电话股份有限公司 通过利用较短字代替长字来压缩标记语言文件的方法
US20070028164A1 (en) * 2005-07-26 2007-02-01 Fujitsu Limited Computer readable storage medium and document processing method
US20070240041A1 (en) * 2006-04-05 2007-10-11 Larry Pearson Methods and apparatus for generating an aggregated cascading style sheet
US20100011284A1 (en) * 1999-05-20 2010-01-14 Microsoft Corporation Dynamic web page behavior

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7134073B1 (en) 2000-06-15 2006-11-07 International Business Machines Corporation Apparatus and method for enabling composite style sheet application to multi-part electronic documents
US7620891B2 (en) * 2003-06-30 2009-11-17 International Business Machines Corporation Method and system for improving presentation of HTML pages in web devices
US10452756B2 (en) * 2006-09-29 2019-10-22 Oath Inc. Platform for rendering content for a remote device
CN101777048B (zh) 2009-01-14 2013-04-03 国际商业机器公司 解决web应用复合中UI样式冲突的方法和装置
JP2011003182A (ja) * 2009-05-19 2011-01-06 Studio Ousia Inc キーワード表示方法およびそのシステム
US8375296B2 (en) * 2010-06-30 2013-02-12 Samsung Electronics Co., Ltd. Reusing style sheet assets
US9275018B2 (en) * 2011-07-26 2016-03-01 Google Inc. Techniques for analyzing web pages to determine font subsets
US8959427B1 (en) * 2011-08-05 2015-02-17 Google Inc. System and method for JavaScript based HTML website layouts
US9104527B2 (en) * 2011-09-08 2015-08-11 Microsoft Technology Licensing, Llc Automatically generated style rules for page design
US20130159839A1 (en) * 2011-12-14 2013-06-20 Microsoft Corporation Semantic compression of cascading style sheets
WO2013102802A1 (en) 2012-01-02 2013-07-11 International Business Machines Corporation Conflict resolution of css definition from multiple sources
US9542379B1 (en) * 2012-09-19 2017-01-10 Amazon Technologies, Inc. Synchronizing electronic publications between user devices

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100011284A1 (en) * 1999-05-20 2010-01-14 Microsoft Corporation Dynamic web page behavior
CN1802642A (zh) * 2003-07-08 2006-07-12 艾利森电话股份有限公司 通过利用较短字代替长字来压缩标记语言文件的方法
JP2005085057A (ja) * 2003-09-10 2005-03-31 Hitachi Ltd コンテンツ表示制御システム
US20070028164A1 (en) * 2005-07-26 2007-02-01 Fujitsu Limited Computer readable storage medium and document processing method
US20070240041A1 (en) * 2006-04-05 2007-10-11 Larry Pearson Methods and apparatus for generating an aggregated cascading style sheet

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105577719A (zh) * 2014-10-15 2016-05-11 阿里巴巴集团控股有限公司 一种数据压缩方法和装置
CN105577719B (zh) * 2014-10-15 2019-11-05 阿里巴巴集团控股有限公司 一种数据压缩方法和装置
CN105989126A (zh) * 2015-02-15 2016-10-05 阿里巴巴集团控股有限公司 一种网页显示方法及装置

Also Published As

Publication number Publication date
US10241984B2 (en) 2019-03-26
WO2013102802A1 (en) 2013-07-11
US20130174021A1 (en) 2013-07-04
CN104025068B (zh) 2017-06-13

Similar Documents

Publication Publication Date Title
CN104025068A (zh) 来自多个来源的css定义的冲突解决
US7954107B2 (en) Method and system for integrating the existing web-based system
CN104714980B (zh) 页面嵌套路径确定方法及装置
US9870203B2 (en) Consumption layer for business entities
CN102609425B (zh) 用于显示数据的模板
US20130325789A1 (en) Defining and Mapping Application Interface Semantics
US7805464B2 (en) Web viewer setup dialog and grammar for generating web addresses
El Akkaoui et al. A BPMN-based design and maintenance framework for ETL processes
US9020973B2 (en) User interface model driven data access control
AU2006326623A1 (en) Remote module incorporation into a container document
US11423105B1 (en) Content curation application and graphical user interface
US20170031877A1 (en) Web Page Design System
US20190102477A1 (en) Novel metadata relationships in a configuration management database
US10742764B2 (en) Web page generation system
US10031932B2 (en) Extending tags for information resources
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
US8862976B1 (en) Methods and systems for diagnosing document formatting errors
US8666951B2 (en) Managing multiple versions of enterprise meta-models using semantic based indexing
US20230350965A1 (en) System and Method for Validating a Protocol-Compliant Uniform Resource Locator
US10324600B2 (en) Web page generation system
US20230289041A1 (en) System and Method for Creating a Single-Entity Protocol-Compliant Uniform Resource Locator
US11570230B1 (en) System and method for creating a protocol-compliant uniform resource locator
CN115905759A (zh) 一种无障碍网页生成方法、装置、介质和设备
US11677822B2 (en) Portal management
Pinnis Modern Website Development with Strapi and Next. js

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant