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

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 19:59:17
字體:
來源:轉載
供稿:網友
表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
欧美一级视频免费在线观看| 欧美日韩国产页| 精品国产欧美一区二区三区成人| 亚洲国产免费av| 亚洲国产精彩中文乱码av在线播放| 成人国产在线视频| 九色成人免费视频| 狠狠色噜噜狠狠狠狠97| 欧美日韩综合视频| 九九热在线精品视频| 欧美多人爱爱视频网站| 亚洲成人av中文字幕| 欧美日韩日本国产| 一区国产精品视频| 久久精品男人天堂| 98精品国产自产在线观看| 国产成人啪精品视频免费网| 日本伊人精品一区二区三区介绍| 欧美老女人xx| 91在线免费视频| 国产成人久久精品| 在线视频欧美日韩精品| 日韩欧美中文在线| 欧美丝袜一区二区三区| 欧美激情视频三区| 国产91精品不卡视频| 亚洲综合第一页| 欧美日韩美女在线观看| 久久av在线看| 精品视频久久久久久| 欧美一区二区三区免费观看| 精品国产自在精品国产浪潮| 精品久久久免费| 91精品国产自产91精品| 青青久久av北条麻妃海外网| 国产一区视频在线播放| 九九热精品视频国产| 91精品久久久久久久久久久| 日韩精品视频免费在线观看| 亚洲视频精品在线| 4438全国亚洲精品在线观看视频| 国产精品激情av电影在线观看| 成人激情春色网| 久久免费成人精品视频| 国产一区二区三区免费视频| 欧美激情视频三区| 久久国产加勒比精品无码| 疯狂欧美牲乱大交777| 成人免费观看49www在线观看| 日韩av中文在线| 亚洲乱码国产乱码精品精| 超在线视频97| 国产精品久久久久久久久借妻| 91在线免费看网站| 国产日韩一区在线| 国产精品美女网站| 91香蕉亚洲精品| 国产精品第一区| 一本色道久久综合亚洲精品小说| 亚洲aⅴ日韩av电影在线观看| 欧美麻豆久久久久久中文| 国产精品91免费在线| 福利视频第一区| 97免费视频在线| 欧美日本中文字幕| 日本精品性网站在线观看| 日韩亚洲一区二区| 国产精品草莓在线免费观看| 亚洲第一视频网| 亚洲精品视频网上网址在线观看| 91精品国产91久久久久久久久| 国产精品露脸av在线| 亚洲国产又黄又爽女人高潮的| 欧美老女人在线视频| 精品无人区乱码1区2区3区在线| 国产成人鲁鲁免费视频a| 91网站在线看| 国产91在线视频| 亚洲男人天堂九九视频| 超碰日本道色综合久久综合| 国产日韩亚洲欧美| 精品久久久香蕉免费精品视频| 亚洲天堂av女优| 日韩在线观看网站| 精品亚洲aⅴ在线观看| 91免费的视频在线播放| 欧美高清在线视频观看不卡| 在线观看国产精品91| 日韩欧美国产成人| 国产精品福利久久久| 高清一区二区三区日本久| 亚洲九九九在线观看| 国产精品久久久久久超碰| 国产精品久久久久久久美男| 久久亚洲精品国产亚洲老地址| 亚洲一区制服诱惑| 久久久国产精品免费| 日本一本a高清免费不卡| 在线视频欧美日韩精品| 日韩成人黄色av| 欧美精品免费在线| 日韩视频欧美视频| 日韩欧美国产成人| 欧美日韩国产一区二区| 亚洲男人天堂网| 欧美日韩国产成人在线| 色先锋资源久久综合5566| 精品视频www| 国产91精品久| 亚洲男人av电影| 日韩av成人在线观看| 日韩成人av在线| 成人xxxxx| 26uuu日韩精品一区二区| 欧洲精品久久久| 精品亚洲一区二区三区四区五区| 97色在线播放视频| 亚洲视频在线播放| 黑人精品xxx一区一二区| 日韩av片免费在线观看| 国产精品99导航| 另类天堂视频在线观看| 日韩中文视频免费在线观看| 国产精品久久久久久搜索| 国产精品美女久久| 久久综合久久88| 青青a在线精品免费观看| 美女久久久久久久久久久| 久久精品免费播放| 久久久久久12| 亚洲人线精品午夜| 欧美午夜精品伦理| 欧美日韩免费区域视频在线观看| 日韩少妇与小伙激情| 国产精品免费视频xxxx| 日韩av在线免费观看一区| 日本一区二区不卡| 欧美日韩视频免费播放| 精品久久久久久国产91| 欧美性一区二区三区| 久久久国产精品一区| 日韩精品亚洲精品| 麻豆乱码国产一区二区三区| 国产精品嫩草影院久久久| 大荫蒂欧美视频另类xxxx| 日韩中文字幕免费| 国产成人精品久久二区二区| 中文字幕不卡在线视频极品| 欧美大片免费观看在线观看网站推荐| 久99九色视频在线观看| 欧美激情视频网站| 国产日韩在线免费| 欧美日韩精品在线视频| 国产精品老牛影院在线观看| 欧美精品一区二区免费| 日韩美女在线看| 久久成人精品一区二区三区| 成人网址在线观看| 茄子视频成人在线| 精品久久久国产精品999| 日韩激情在线视频| 成人久久18免费网站图片| 国产精品入口福利| 91福利视频在线观看|