亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

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

2024-09-05 20:53:27
字體:
來源:轉載
供稿:網友
表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文檔)來編寫。(完)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产中文精品字幕自在自线| 亚洲精品国产精品国产自| 欧美极品在线视频| 国产一区二区在线播放| 亚洲人成在线电影| 欧美午夜电影在线| 国产成人精品久久亚洲高清不卡| 亚洲女人天堂色在线7777| 久久视频这里只有精品| 欧美午夜片在线免费观看| 久热精品视频在线观看| 欧美日韩国产一区二区三区| 欧美人与物videos| 91黄色8090| 精品视频久久久| 亚洲欧美国产另类| 国产日产久久高清欧美一区| 秋霞成人午夜鲁丝一区二区三区| 国产精品视频1区| 久久网福利资源网站| 国产裸体写真av一区二区| 永久555www成人免费| 波霸ol色综合久久| 91精品国产高清| 成人网在线免费看| 欧美精品一二区| 精品美女永久免费视频| 国产视频精品一区二区三区| 日韩精品亚洲元码| 国产成人欧美在线观看| 日韩欧美在线网址| 国产精品福利网| 国产一区二区三区在线观看视频| 精品香蕉在线观看视频一| 91亚洲国产成人精品性色| 亚洲国产精品va在看黑人| www.亚洲成人| 97视频在线观看视频免费视频| 国产美女精品视频免费观看| 成人免费大片黄在线播放| 欧美理论片在线观看| 91色中文字幕| 国产精品久久久久久久久久东京| 亚洲第一页中文字幕| 亚洲欧美日韩高清| 久久免费视频这里只有精品| 日本在线精品视频| 亚洲精品一区二区三区婷婷月| 欧美怡春院一区二区三区| 精品香蕉一区二区三区| 欧美国产精品人人做人人爱| 久久夜色精品亚洲噜噜国产mv| 亚洲精品第一国产综合精品| 亚洲在线免费观看| 中文字幕日韩欧美精品在线观看| 欧美怡春院一区二区三区| 欧美主播福利视频| 国产欧美亚洲视频| 亚洲激情在线观看视频免费| 国产精品久久久久99| 91精品国产高清久久久久久| 91久久综合亚洲鲁鲁五月天| 欧美性xxxxhd| 久久人人爽人人爽人人片亚洲| 久久av在线看| 最近2019年手机中文字幕| 日韩在线免费高清视频| 国产视频欧美视频| 久久久久这里只有精品| 色综合天天综合网国产成人网| x99av成人免费| 中文字幕久久亚洲| 九九热r在线视频精品| 欧美激情第一页xxx| 欧美在线中文字幕| 国产999精品视频| 日本高清+成人网在线观看| 欧美视频在线免费看| 亚洲国产精品久久久久久| 在线成人激情黄色| 国产欧美精品在线播放| 亚洲最新视频在线| 亚洲一区二区三| 国产亚洲一区二区在线| 91国产中文字幕| 国产成人在线精品| 91久久国产综合久久91精品网站| 丝袜一区二区三区| 97在线免费观看| 亚洲另类图片色| 2019中文字幕免费视频| 久久影视电视剧免费网站清宫辞电视| 韩曰欧美视频免费观看| 97久久精品人人澡人人爽缅北| 日韩av片永久免费网站| 国产精品三级久久久久久电影| 91久久久久久国产精品| 欧美综合国产精品久久丁香| 国产成人avxxxxx在线看| 77777亚洲午夜久久多人| 欧美在线中文字幕| 久久精品久久久久久国产 免费| 国产香蕉一区二区三区在线视频| 久久全国免费视频| 日韩av一区在线观看| 91久久精品久久国产性色也91| 国产一区玩具在线观看| 亚洲欧美日韩中文在线| 欧美另类暴力丝袜| 91精品视频在线免费观看| 欧美人交a欧美精品| 日韩成人激情在线| 福利微拍一区二区| 久久久精品免费视频| 国产91精品高潮白浆喷水| 欧美日韩在线另类| 国产欧美在线观看| 欧美亚洲第一页| 欧美国产视频日韩| 午夜精品在线观看| 久久精品99国产精品酒店日本| 欧美与黑人午夜性猛交久久久| 红桃视频成人在线观看| 国产黑人绿帽在线第一区| 日韩中文字幕在线视频播放| 国产福利精品视频| 欧美裸体xxxx极品少妇软件| 一区二区国产精品视频| 成人性生交大片免费看小说| 成人h片在线播放免费网站| 亚洲福利视频专区| 国产精品第一区| 国产视频亚洲精品| 日本成人在线视频网址| 日本中文字幕不卡免费| 国产亚洲欧美一区| 亚洲精品久久久久久久久| 亚洲欧美综合区自拍另类| 欧美日韩精品二区| 精品偷拍一区二区三区在线看| 亚洲自拍偷拍一区| 久久成人精品一区二区三区| 欧美日韩加勒比精品一区| 夜夜嗨av色综合久久久综合网| 久久黄色av网站| 免费91麻豆精品国产自产在线观看| 国产视频在线一区二区| 欧美在线观看www| 日韩成人中文字幕| 国产手机视频精品| 69视频在线免费观看| 久久精品国产成人精品| 久久久噜噜噜久久| 98精品国产高清在线xxxx天堂| 在线精品国产欧美| 久久免费视频在线| 亚洲a在线观看| 亚洲欧美激情在线视频| 欧美精品在线网站| 欧美激情xxxxx| 黑人巨大精品欧美一区二区| 日韩电视剧免费观看网站| 亚洲性av在线| 精品久久久久久久久久|