其實CSS也是將Html從數據和表現分離的有力工具。石頭的CSS OrIEnted Design:COD非常合我的口味,摒棄TOD(Table OrIEnted Design)還真不是意見容易的事情,但是一旦實現,系統本身就實現了分工和協作:就能像Winamp一樣換皮膚了,從而發揮用戶最大的能動性。最直接的例子就是本網站使用的MT系統,所有的STYLE都來自MovableStyle,。
需求:將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了;