其实CSS也是将HTML从数据和表现分离的有力工具。摒弃TOD(Table Oriented Design)还真不是意见容易的事情,但是一旦实现,系统本身就实现了分工和协作:就能像Winamp一样换皮肤了,从而发挥用户最大的能动性。
需求:将XML结果集中的<b>显示成红色,其实完全可以通过客户端的CSS实现: 代码如下:
首先
<blockquote>
利用CSS,不通过replace替换<b>标引</b>HTML标记
</blockquote>
利用CSS,不通过replace替换<b>标引</b>HTML标记
这样: 在CSS中定义了:b { color:red;}
后,所有的<b>除了加粗外,还有红色的属性,为了防止整个页面中的其他<b>都被标红,我将结果都放在一个< blockquote>
中,然后再在CSS中定义:
<style><!--
blockquote b {color:red;}
//-->
</style>
由于CSS的继承关系,只有所有在blockquote中的<b>才会被标红:
通过设置 font-weight:normal 甚至可以让<b>字体变细。
通过这个问题:得出一下2个结论 1 设计带有标引的对外搜索服务时,可以使用<b>做为标记 2 在客户端,可以通过CSS来实现控制。
关于:CSS, Accesibility and Standards Links
后记: 也曾经一段时间非常追求XML/XSLT/CSS的数据/结构/表现分离的理念。但是XSLT实施成本的确比较高,所以Resin上开发了基于XHTML的轻量级模板技术,我觉得还挺人性的 ASP .net的实现也是类似。
可能没有最好的模式,只有最合适的模式:关键还是要看开发本身的复杂程度 数百行代码过程性编程效率可能最高; 千行代码量可能面向函数开发效率最高; 万行代码量时,可能就不得不OO了; |