表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 2-0-2,this is a test
上面是BBS主題清單的一個例子。一般來說,假如不是使用Oracle(Oracle 有一條查詢語句可以自動產生家族樹,請查閱Select ... startwith ... connect by ...語句),那麼如何實現上例的列表是一件費事的工作(相信許多程式設計師都寫過)。
如果我們改用xml來實現,那麼結果會怎麼樣呢?
現在我們使用"Select * from bbs"從資料庫中查詢貼紙,並以XML格式返回(如果你是用ADO,那麼可以用其RecordSet.Save ... adPersistXML直接生成,當然如果你不喜歡ADO產生的格式,可用程式生成,如本例):
表B:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="b.xsl"?> <bbs> <post sid="4" pid="3" aid="1"> <title>4-3-1,this is a test</title> <content>slddfjslajfsdljf</content> </post> <post sid="5" pid="3" aid="1"> <title>5-3-1,this is a test</title> <content>slddfjslajfsdljf</content> </post> <post sid="3" pid="1" aid="1"> <title>3-1-1,this is a test</title> <content>slddfjslajfsdljf</content> </post> <post sid="1" pid="0" aid="1"> <title>1-0-1,this is a test</title> <content>slddfjslajfsdljf</content> </post> <post sid="2" pid="0" aid="2"> <title>2-0-2,this is a test</title> <content>slddfjslajfsdljf</content> </post> </bbs>
說明:這裡sid是貼子的id號,pid是貼子的父id號。 title是標題,content是貼文的內容。
上表中第二行是指定使用b.XSL來轉換XML內容。這是提供給IE5的資訊。假如你使用XMLDOM,那麼可以不要這訊息。
我們再來看看將上表的XML內容顯示成表A形式的XSL檔案是怎麼實現的:
表C:b.XSL
<?xml version=''1.0''?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <xsl:apply-templates select="*"/> </body> </html> </xsl:template> <xsl:template match="post"> <li> <div> <xsl:attribute name="title"><xsl:value-of select="content"/></xsl:attribute> <xsl:value-of select="title"/> <xsl:if test="/bbs/post[@pid=context()/@sid]"> <xsl:element name="ul"> <xsl:apply-templates select="/bbs/post[@pid=context()/@sid]"/> </xsl:element> </xsl:if> </div> </li> </xsl:template> <xsl:template match="bbs"> <ul> <xsl:apply-templates select="post[@pid=0]"/> </ul> </xsl:template> </xsl:stylesheet>
現在,你將表表B的內容存為abc.xml,將表C的內容存為b.xsl,然後在IE5打開,你就可以看到跟表A一樣的內容了。
因此可以看出,XSL檔案解定了最終的顯示結果。假如你有多個子論壇,那麼無需更改論壇程序,只要為各個子論壇提供不同XSL文件,就可以讓各個子論壇的版而不論風格畫面還是主題排列都會具有獨特的表現。如果提供免費論壇服務,那麼允許論壇申請者自訂自已的XSL檔案將是一個不錯的選擇。
但是假如客戶端不支援XML,該怎麼辦呢?答案很簡單,由服務端先將XML轉換成HTML,再傳到客戶端。
下面我們以IIS4/5+IE5+asp來實現這個例子(伺服器必需安裝IE5):
<%@ LANGUAGE = JScript %> <% Set rsXML=Server.CreateObject("ADODB.RecordSet"); sSQL = “SELECT * from bbs" sConn = “你自个儿写” rsXML.CursorLocation = adUseClient rsXML.Open sSQL, sConn, adOpenStatic //指定XSL文件位置 var styleFile = Server.MapPath("simple.xsl"); // Save the XML to XMLDOM var source = Server.CreateObject("Microsoft.XMLDOM"); ''rsXML.Save source, adPersistXML ''我相当不喜欢ADO直接Save出来的XML文档,我总是这样做: Dim GetData,v GetData = GetData & "<bbs>" while not RS_ForumInfo.EOF GetData = GetData & "<post>" 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 &">" &_ "<![CDATA[" & RS_ForumInfo.Fields.Item(i).Value & "]]>" &_ "</" & RS_ForumInfo.Fields.Item(i).Name &">" else GetData = GetData& "<" & RS_ForumInfo.Fields.Item(i).Name &">" &_ RS_ForumInfo.Fields.Item(i).Value &_ "</" & RS_ForumInfo.Fields.Item(i).Name &">" end if set v = Nothing next GetData = GetData & "</post>" RS_ForumInfo.MoveNext wend GetData = GetData & "</bbs>" source.loadXML GetData // Load the XSL var style = Server.CreateObject("Microsoft.XMLDOM"); style.async = false; style.load(styleFile); Response.Write(source.transformNode(style)); %>
當然,由於此處為了簡便,直接使用ADO來產生XML,因此simple.xsl和上面的b.xsl是不同的。
讀者可以參考上例和XSL參考資料(2000年的MSDN有比較詳細的XML/XSL SDK文件)來編寫。 (完)
以上就是使用XML實作BBS(主題列表篇)的詳情介紹的內容,更多相關內容請關注PHP中文網(www.php.cn)!

RSS文檔是基於XML的結構化文件,用於發布和訂閱頻繁更新的內容。它的主要作用包括:1)自動化內容更新,2)內容聚合,3)提高瀏覽效率。通過RSSfeed,用戶可以訂閱並及時獲取來自不同來源的最新信息。

RSS的XML結構包括:1.XML聲明和RSS版本,2.頻道(Channel),3.條目(Item)。這些部分構成了RSS文件的基礎,允許用戶通過解析XML數據來獲取和處理內容信息。

RSSFEEDSUSEXMLTOSYNDICATECONTENT; PARSINGTHEMINVOLVESLOADINGINGINGINGINSSTRUCTURE,andExtractingData.ApplicationsIncludeBuildBuildingNewSagGregatorSaterNewSagGregatorSator andTrackingPodcastepodcastepisodes。

RSS文檔的工作原理是通過XML文件發佈內容更新,用戶通過RSS閱讀器訂閱並接收通知。 1.內容髮布者創建並更新RSS文檔。 2.RSS閱讀器定期訪問並解析XML文件。 3.用戶瀏覽和閱讀更新內容。使用示例:訂閱TechCrunch的RSS源,只需複制鏈接到RSS閱讀器中即可。

使用XML構建RSSfeed的步驟如下:1.創建根元素並設置版本;2.添加channel元素及其基本信息;3.添加條目(item)元素,包括標題、鏈接和描述;4.轉換XML結構為字符串並輸出。通過這些步驟,你可以從零開始創建一個有效的RSSfeed,並通過添加額外的元素如發布日期和作者信息來增強其功能。

創建RSS文檔的步驟如下:1.使用XML格式編寫,根元素為,包含元素。 2.在內添加、、等元素描述頻道信息。 3.添加元素,每個代表一個內容條目,包含、、、等。 4.可選地添加和元素,豐富內容。 5.確保XML格式正確,使用在線工具驗證,優化性能並保持內容更新。

XML在RSS中的核心作用是提供一種標準化和靈活的數據格式。 1.XML的結構和標記語言特性使其適合數據交換和存儲。 2.RSS利用XML創建標準化格式,方便內容共享。 3.XML在RSS中的應用包括定義feed內容的元素,如標題和發布日期。 4.優勢包括標準化和可擴展性,挑戰包括文件冗長和嚴格語法要求。 5.最佳實踐包括驗證XML有效性、保持簡潔、使用CDATA和定期更新。

rssfeedsarexmldocuments usedforcontentAggregation and distribution.totransformthemintoreadableContent:1)parsethethexmlusinglibrarieslibrariesliblarieslikeparserinparserinpython.2)andledifferentifferentrssssssssssssssssssssssssssssssssssssssssssssssersions andpotentionparsingrorS.3)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版