使用XML實現BBS(主題列表篇) (轉)
沐楓(初稿)
表A:
- 1-0-1,this is a test
- 3-1-1,this is a test
- 4-3-1,this is a test
- 5-3-1,this is a test
- 3-1-1,this is a test
- 2-0-2,this is a test
上面是BBS主題列表的一個例子。一般來說,假如不是使用(Oracle 有一條查詢語句可以自動生成家族樹,請查閱 ... start with ... connect by ...語句),那麼如何實現上例的列表是一件費事的工作(相信許多員都寫過)。
如果我們改用來實現,那麼結果會怎麼樣呢?
現在我們使用"Select * from bbs"從中查詢貼子,並以XML格式返回(如果你是用ADO,那麼可以用其RecordSet.Save ... adPersistXML直接生成,當然如果你不喜歡ADO生成的格式,可用程式生成,如本例):
表B:
說明:這裡sid是貼子的id號,pid是貼子的父id號。title是標題,content是貼子的內容。
上表中第二行是指定使用b.XSL來轉換XML內容。這是提供給的資訊。假如你使用XML,那麼可以不要這條資訊。
我們再來看看將上表的XML內容顯示成表A形式的XSL是怎麼實現的:
表C: b.XSL
現在,你將表B的內容存為abc.xml,將表C的內容存為b.xsl,然後在IE5中開啟,你就可以看到和表A一樣的內容了。
因此可以看出,XSL檔案解定了最終的顯示結果。假如你有多個子論壇,那麼無需更改論壇程式,只要為各個子論壇提供不同XSL檔案,就可以讓各個子論壇的版而不論風格畫面還是主題排列都會具有獨特的表現。如果提供免費論壇服務,那麼允許論壇申請者定製自已的XSL檔案將是一個良好的選擇。
但是假如客戶端不支援XML,該怎麼辦呢?答案很簡單,由服務端先將XML轉換成HTML,再傳到客戶端。
下面我們以IIS4/5+IE5+來實現這個例子(必需IE5):
Set rsXML=Server.Create("ADO.RecordSet");
s = “SELECT * from bbs"
nn = “你自個兒寫”
rsXML.CursorLocation = adUseClient
rsXML.Open sSQL, sConn, adOpenStatic
//指定XSL檔案位置
var styleFile = Server.MapPath("simple.xsl");
// Save the XML to XMLDOM
var = Server.CreateObject(".XMLDOM");
' rsXML.Save source, adPersistXML
'我相當不喜歡ADO直接Save出來的XML文件,我總是這樣做:
Dim GetData,v
GetData = GetData & "
while not RS_ForumInfo.EOF
GetData = GetData & "
for i = 0 to RS_ForumInfo.Fields.Count -1
set v = RS_ForumInfo.Fields.Item(i)
if (v.Type=201)or(v.Type=203)or(v.Type=205) then
GetData = GetData& "" &_
"" &_
"" & RS_ForumInfo.Fields.Item(i).Name &">"
else
GetData = GetData& "" &_
RS_ForumInfo.Fields.Item(i).Value &_
"" & RS_ForumInfo.Fields.Item(i).Name &">"
end if
set v = Nothing
next
GetData = GetData & "
RS_ForumInfo.MoveNext
wend
GetData = GetData & "
source.loadXML GetData
// Load the XSL
var style = Server.CreateObject("Microsoft.XMLDOM");
style.async = false;
style.load(styleFile);
Response.Write(source.tranormNode(style));
%>
當然,由於此處為了簡便,直接使用ADO來生成XML,因此simple.xsl和上面的b.xsl是不同的。
讀者可以參考上例和XSL參考資料(2000年的MSDN有比較詳細的XML/XSL SDK文件)來編寫。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989734/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 元件使用總結:使用 JAXB 實現 XML檔案和java物件互轉元件XMLJava物件
- 關於IDEA使用xml實現動態sql的問題IdeaXMLSQL
- Flutter UI使用Provide實現主題切換FlutterUIIDE
- iOS開發UI篇--使用UICollectionView實現一個傾斜列表效果iOSUIView
- 使用 flutter 的ListView實現滾動列表FlutterView
- WPF上位機 - 使用轉換器實現TIA Wincc中的文字列表功能
- iOS開發UI篇--使用UICollectionView實現一個列表頭部拉伸效果的案例iOSUIView
- oh-my-zsh 主題樣式列表
- Python練習題篇(列表、字典、元祖)Python
- 例2.4 使用列表推導式實現巢狀列表的平鋪巢狀
- PHP xml 轉陣列 陣列轉 xml 操作PHPXML陣列
- 實現Vue專案主題切換Vue
- Sass應用之實現主題切換
- 4.2.13 主備庫實現自動故障轉移
- 列表篇_深,淺拷貝,刪除,反轉,排序排序
- 使用Redis分散式鎖實現主備Redis分散式
- 陣列和列表的轉換問題陣列
- 使用Rust和Elixir實現高效的下發好友列表Rust
- LDA主題模型簡介及Python實現LDA模型Python
- bbs論壇 在前端加上@評論 a標籤 跳轉到使用者介面前端
- 使用 NSProxy 實現訊息轉發
- Mars Chen影片XML程式碼實現XML
- 【轉】概念主題模型簡記模型
- 序列化篇 生成xml 以及讀取xmlXML
- Java中如何使用泛型實現介面中的列表集合?Java泛型
- App 多區域皮膚(主題)的實現APP
- c#winform主題實現的一個方法C#ORM
- sap 內錶轉xml,類的使用if_ixml_elementXML
- vue實現城市列表選擇Vue
- 實習任務之使用react實現登入獲取動態列表React
- 【摸魚神器】UI庫秒變LowCode工具——列表篇(一)設計與實現UI
- 虛擬主機使用中可能出現的問題
- java 語音用xml檔案實現圖形介面 xml檔案JavaXML
- xml字串轉JSON字串XML字串JSON
- C# 操作xml(轉)C#XML
- NGINX使用rewrite實現http 跳轉 httpsNginxHTTP
- Spring AOP基於xml的方式實現SpringXML
- java使用jaxb解析XML(含根據xml自動生成實體類)JavaXML
- 外掛化實現Android多主題功能原理剖析Android