其實css也是將HTML從數(shù)據(jù)和表現(xiàn)分離的有力工具。石頭的CSS Oriented Design:COD非常合我的口味,摒棄TOD(Table Oriented Design)還真不是意見容易的事情,但是一旦實現(xiàn),系統(tǒng)本身實現(xiàn)了分工和協(xié)作:能像Winamp一樣換皮膚了,從而發(fā)揮用戶的能動性。最直接的例子是本網(wǎng)站使用的MT系統(tǒng),所有的STYLE都來自MovableStyle,。
需求:將XML結果集中的<b>顯示成紅色,其實完全可以通過客戶端的CSS實現(xiàn):
代碼如下:
首先
<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來實現(xiàn)控制。
關于:CSS, Accesibility and Standards Links
后記:
也曾經(jīng)一段時間非常追求XML/XSLT/CSS的數(shù)據(jù)/結構/表現(xiàn)分離的理念。但是XSLT實施成本的確比較高,所以Resin上開發(fā)了基于XHTML的輕量級模板技術,我覺得還挺人性的 ASP .net的實現(xiàn)也是類似。
可能沒有的模式,只有最合適的模式:關鍵還是要看開發(fā)本身的復雜程度
數(shù)百行代碼過程性編程效率可能;
千行代碼量可能面向函數(shù)開發(fā)效率;
萬行代碼量時,可能不得不OO了;