使用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用javascript+xml實現分頁(轉)JavaScriptXML
- PHP的bbs實現之二PHP
- 使用xstream實現對JavaBean與xml字串的互轉JavaBeanXML字串
- iOS開發UI篇--使用UICollectionView實現一個傾斜列表效果iOSUIView
- Flutter UI使用Provide實現主題切換FlutterUIIDE
- 元件使用總結:使用 JAXB 實現 XML檔案和java物件互轉元件XMLJava物件
- java 實現的XML schema 驗證(轉)JavaXML
- FSO+遞迴生成檔案列表(xml) (轉)遞迴XML
- 使用JDOM處理XML資料之PDF篇(二) (轉)XML
- 使用JDOM處理XML資料之PDF篇(一) (轉)XML
- php陣列轉xml的遞迴實現PHP陣列XML遞迴
- 使用 flutter 的ListView實現滾動列表FlutterView
- Android使用RecyclerView實現二級列表AndroidView
- 使用JDOM處理XML資料之XSLT篇(二) (轉)XML
- 使用JDOM處理XML資料之XSLT篇(一) (轉)XML
- iOS開發UI篇--使用UICollectionView實現一個列表頭部拉伸效果的案例iOSUIView
- oh-my-zsh 主題樣式列表
- 使用XML+XSLT實現業務表單XML
- XSLT實現XML文件轉換成HTML文件XMLHTML
- 基於XML的購物車的實現(轉)XML
- WPF上位機 - 使用轉換器實現TIA Wincc中的文字列表功能
- 實現Vue專案主題切換Vue
- Sass應用之實現主題切換
- 主機掃描程式實現方法 (轉)
- 用XML實現程式語言間的互譯 (轉)XML
- Python練習題篇(列表、字典、元祖)Python
- SQLserver自定義樣式主鍵-函式實現篇SQLServer函式
- ggplot2——主題篇
- 載入xml出現問題XML
- 使用Redis分散式鎖實現主備Redis分散式
- 自己動手實現主題搜尋引擎
- 通過JDOM實現XML與String的相互轉換XML
- 交替顏色列表實現
- 使用Rust和Elixir實現高效的下發好友列表Rust
- Windows 98 桌面主題和使用者管理(轉)Windows
- 使用XML上傳檔案 (轉)XML
- 學習使用XML引擎XQEngine(轉)XML
- 使用PHP DOM-XML建立和解析XML檔案 (轉)PHPXML