|
這個(gè)星期,我們將使用可擴(kuò)充標(biāo)記語(yǔ)言(XML)以及在ASP中使用ActiveX Data Object(ADO).在最新的互聯(lián)網(wǎng)信息服務(wù)器(IIS 5)和ADO(2.6)版本中,我們現(xiàn)在能夠從游標(biāo)對(duì)象中提取數(shù)據(jù)作為XML直接保存并直接發(fā)給ASP的response對(duì)象 。
下面的Phonelist.asp工程從創(chuàng)建一個(gè)底層的Access數(shù)據(jù)庫(kù)開(kāi)始.我的想法是開(kāi)發(fā)一個(gè)對(duì)任何公司都有用的簡(jiǎn)單的數(shù)據(jù)集.第一步是命名表單contacts然后增加四個(gè)域:FirstName,LastName, Location, 和Phone.你要明白XML和可擴(kuò)充風(fēng)格頁(yè)語(yǔ)言(XSL)是大小些敏感的,因此你要確保你的數(shù)據(jù)域名和XSL風(fēng)格頁(yè)中的那些定義相匹配.
本工程中的ASP只有一個(gè)簡(jiǎn)單的功能:提取數(shù)據(jù)并將它作為XML返回.首先,我們需要將文件內(nèi)容類型標(biāo)示為text/xml.然后,添加X(jué)ML信息頭和風(fēng)格頁(yè)連接信息來(lái)格式化XML數(shù)據(jù).第三步,創(chuàng)建一個(gè)ADO游標(biāo)對(duì)象來(lái)提取數(shù)據(jù).這里你可以體會(huì)到XML技術(shù)的簡(jiǎn)單性是如此的精巧.我們不需要循環(huán)遍歷整個(gè)游標(biāo)對(duì)象也不需要將HTML和腳本代碼混合來(lái)在ASP里格式化和顯示數(shù)據(jù),我們只需要簡(jiǎn)單的打開(kāi)游標(biāo)然后將數(shù)據(jù)作為XML保存到response對(duì)象里.
開(kāi)發(fā)者能夠容易的用XSL格式化和顯示數(shù)據(jù)的確是令人神往的.你的開(kāi)發(fā)過(guò)程越簡(jiǎn)單,問(wèn)題存在的可能性就越小.
更多的信息和ADO MDAC 2.6版的下載鏈接可以在下面的站點(diǎn)找到:Microsoft Universal Access Data Web site.
下面是Phonelist.asp程序的代碼. <%@ Language=VBScript %> <% Response.ContentType = "text/xml" Response.Write "<?xml version=""1.0"" ?>" & vbcrlf Response.Write "<?xml-stylesheet type=""text/xsl"" " & _ "href=""PhoneList.XSL"" ?>" & vbcrlf & vbcrlf
set rsContacts = Server.CreateObject("ADODB.Recordset") dataConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "User ID=Admin;Data Source=D:\Inetpub\wwwroot\ASP_Utils\PhoneList.mdb;" & _ "Mode=Share Deny None;Extended Properties="""";" & _ "Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";" & _ "Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;" & _ "Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;" & _ "Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";" & _ "Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;" & _ "Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:" & _ "Compact Without Replica Repair=False;Jet OLEDB:SFP=False;User Id=Admin;" sql = "SELECT LastName + ', ' + FirstName AS Name, " & _ "Phone, Location FROM Contacts ORDER BY LastName"
rsContacts.ActiveConnection = dataConnStr rsContacts.Source = sql rsContacts.CursorLocation = 3'Use Client side cursor rsContacts.Open rsContacts.ActiveConnection = nothing
rsContacts.Save response, 1 'adPersistXML Set rsContacts = Nothing %>
The Phonelist.xsl file source: <HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <TITLE>Company Phone List</TITLE> <STYLE> .Table {background:black} .TableHead {font:bold; color:white; background:blue} .ColumnHeader {font:normal 'Verdana' bold; color:white; background:blue} .TableRow {font:x-small 'Verdana'; color:black; background:#CCCCCC} </STYLE> <BODY> <DIV > <TABLE CLASS="Table" ID="RecordTable"> <THEAD> <TR CLASS="TableHead"> <TH CLASS="ColumnHeader">Name</TH> <TH CLASS="ColumnHeader">Location</TH> <TH CLASS="ColumnHeader">Phone</TH> </TR> </THEAD> <xsl:for-each select="xml/rs:data/z:row"> <TR CLASS="TableRow"> <TD><xsl:value-of select="@Name" /></TD> TD align="center"><xsl:value-of select="@Location" /></TD> <TD><xsl:value-of select="@Phone" /></TD> </TR> </xsl:for-each> </TABLE> </DIV> </BODY> </HTML>
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!