麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > XML > 正文

使用XML實現(xiàn)BBS(主題列表篇)

2024-09-05 20:53:27
字體:
供稿:網(wǎng)友
表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 ...語句),那么如何實現(xiàn)上例的列表是一件費事的工作(相信許多程序員都寫過)。
  如果我們改用XML來實現(xiàn),那么結(jié)果會怎么樣呢?
  現(xiàn)在我們使用"Select * from bbs"從數(shù)據(jù)庫中查詢貼子,并以XML格式返回(如果你是用ADO,那么可以用其RecordSet.Save ... adPersistXML直接生成,當(dāng)然如果你不喜歡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是標(biāo)題,content是貼子的內(nèi)容。
  上表中第二行是指定使用b.XSL來轉(zhuǎn)換XML內(nèi)容。這是提供給IE5的信息。假如你使用XMLDOM,那么可以不要這條信息。
  我們再來看看將上表的XML內(nèi)容顯示成表A形式的XSL文件是怎么實現(xiàn)的:
  表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>
  現(xiàn)在,你將表B的內(nèi)容存為abc.xml,將表C的內(nèi)容存為b.xsl,然后在IE5中打開,你就可以看到和表A一樣的內(nèi)容了。
  因此可以看出,XSL文件解定了最終的顯示結(jié)果。假如你有多個子論壇,那么無需更改論壇程序,只要為各個子論壇提供不同XSL文件,就可以讓各個子論壇的版而不論風(fēng)格畫面還是主題排列都會具有獨特的表現(xiàn)。如果提供免費論壇服務(wù),那么允許論壇申請者定制自已的XSL文件將是一個良好的選擇。
  但是假如客戶端不支持XML,該怎么辦呢?答案很簡單,由服務(wù)端先將XML轉(zhuǎn)換成HTML,再傳到客戶端。
  下面我們以IIS4/5+IE5+ASP來實現(xiàn)這個例子(服務(wù)器必需安裝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
  ''我相當(dāng)不喜歡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));
  %>
  當(dāng)然,由于此處為了簡便,直接使用ADO來生成XML,因此simple.xsl和上面的b.xsl是不同的。
  讀者可以參考上例和XSL參考資料(2000年的MSDN有比較詳細(xì)的XML/XSL SDK文檔)來編寫。(完)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色片免费在线播放 | 久久久久久久久久久av | 欧美特一级| 精品一区二区免费视频视频 | 少妇一级淫片免费放播放 | 午夜精品福利视频 | 在线成人一区二区 | 欧美成人三级视频 | 成人做爰高潮片免费视频韩国 | 欧美爱爱视频 | 成人在线高清视频 | www.99久久久 | 久久精品国产精品亚洲 | 国产精品自拍片 | 91经典视频 | 在线播放黄色网址 | 日韩黄a| 国产精品视频一区二区噜噜 | 黄色网页在线观看 | 国产成人在线一区二区 | 天天色综合2| 91av久久| 亚洲成人精品区 | 国产高潮好爽受不了了夜色 | 激情大乳女做爰办公室韩国 | 国产精品久久久久久久av三级 | 欧美性受ⅹ╳╳╳黑人a性爽 | 欧美日韩大片在线观看 | 18欧美性xxxx极品hd | chinese军人gay呻吟 | 免费永久看羞羞片网站入口 | 精品成人在线 | av在线播放免费 | 日韩一级片毛片 | 国产精品久久久久久久亚洲按摩 | 成人免费毛片在线观看 | 亚洲欧美一区二区三区在线观看 | 欧美高清视频一区 | 日韩专区在线 | 成人国产在线看 | 国产成年人在线观看 |