版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第7章XML的數(shù)據(jù)源對象7.1數(shù)據(jù)島的概念7.2通過記錄集管理數(shù)據(jù)島7.3數(shù)據(jù)管理7.4XML與數(shù)據(jù)庫的交互7.5SQLServer對XML的支持數(shù)據(jù)島是指存在于HTML頁面中的XML代碼,作為HTML頁面數(shù)據(jù)的來源。7.1數(shù)據(jù)島的概念通過數(shù)據(jù)島技術(shù),實現(xiàn)了頁面范圍內(nèi)數(shù)據(jù)和顯示的分離。還可以將XML數(shù)據(jù)和HTML對象(如表格、文本域等)綁定。
7.1.1內(nèi)嵌的數(shù)據(jù)島
7.1.2外部數(shù)據(jù)島
返回內(nèi)嵌的數(shù)據(jù)島(1)內(nèi)嵌的數(shù)據(jù)島是指在HTML文件中中通過<xml>標記嵌入的XML代碼塊。<xml>標記含有一個重要的屬性“id”,表示該數(shù)據(jù)島的名稱,通過該名稱來調(diào)用數(shù)據(jù)島和對數(shù)據(jù)島進行相關(guān)的操作。例如,聲明內(nèi)部的數(shù)據(jù)島:
<xmlid="students"><students><student><name>張三</name><sex>男</sex><age>25</age></student><student><name>李四</name><sex>女</sex><age>24</age></student></students></xml>內(nèi)嵌的數(shù)據(jù)島(2)使用數(shù)據(jù)島:需要將數(shù)據(jù)島和HTML的對象進行綁定。例如:<tableborder="1"datasrc="#students">其中有一個屬性“datasrc”,該屬性表示該表格對象要和一個數(shù)據(jù)源對象相捆綁。屬性值是“#”加一個數(shù)據(jù)源對象的id屬性值。HTML的其他對象也可以和XML數(shù)據(jù)島捆綁。例如:
<spandatasrc=”#數(shù)據(jù)源名稱”datafld=”標記或?qū)傩悦Q”></span><divdatasrc=”#數(shù)據(jù)源名稱”datafld=”標記或?qū)傩悦Q”></div><inputdatasrc=”#數(shù)據(jù)源名稱”datafld=”標記或?qū)傩悦Q”></input><textareadatasrc=”#數(shù)據(jù)源名稱”datafld=”標記或?qū)傩悦Q”></textarea>“datafld”屬性來獲得標記的數(shù)據(jù),屬性值就是要用到的數(shù)據(jù)的標記名稱。
返回外部的數(shù)據(jù)島就是一個外部XML文件,是和HTML文件相對獨立的。在HTML內(nèi)部通過<xml>標記導(dǎo)入該文件。聲明外部數(shù)據(jù)島的格式為:
外部數(shù)據(jù)島
<xmlid=”students”src=”XML文件的URI”></xml>XML文件的URI必須是一個有效的XML文件路徑。外部的XML文件必須是一個良構(gòu)的XML文件。
外部數(shù)據(jù)島的具體用法和內(nèi)部的數(shù)據(jù)島完全一樣。使用外部數(shù)據(jù)島有很多有益的地方。比如,可以提高數(shù)據(jù)的共享性,方便數(shù)據(jù)的維護;可以提高程序的擴展性和代碼的重用性。
返回7.2通過記錄集管理數(shù)據(jù)島
7.2.1創(chuàng)建記錄集
7.2.2通過記錄集訪問數(shù)據(jù)島中各個標記
7.2.3操作記錄集
7.2.4遍歷記錄集
7.2.5對記錄集進行分頁
7.2.6把記錄存儲到數(shù)組中
返回創(chuàng)建記錄集
創(chuàng)建記錄集首先要定義一個數(shù)據(jù)島,然后調(diào)用該數(shù)據(jù)島的一個屬性來生成一個記錄集,例如:<!--定義數(shù)據(jù)島--><xmlid="students"src="01.xml"/><scriptlanguage="javascript"> <!--創(chuàng)建記錄集-->
varrs=students.recordset;</script>集合rs就是創(chuàng)建的記錄集。返回通過記錄集訪問數(shù)據(jù)島中各個標記
訪問數(shù)據(jù)島中各個標記有如下的一些方法:
rs(‘標記名稱’)rs(index)rs.Fields(‘標記名稱’)rs.Fields(index)rs.Fields.Item(‘標記名稱’)rs.Fields.Item(index)“index”表示標記的編號。例如:rs(0)rs.fields('sex')rs.fields.item(2)返回操作記錄集
操作記錄集包括添加和刪除,通過調(diào)用記錄集的Addnew()和Delete()方法來完成。例如:
functioninsertrs(){
rs.addnew();
rs(0)="趙六";
rs(1)="男";
rs(2)="24";}functiondeleters(){
rs.movelast();
rs.Delete();}
insertrs方法首先調(diào)用“rs”的“addnew()”方法向記錄集中添加一條新記錄,記錄的值通過下面的三條語句設(shè)定。deleters方法包含兩條語句,第一條語句的作用是把當前記錄移動到記錄集的最后一條記錄。第二條語句調(diào)用“rs”的“Delete()”方法,把當前記錄從記錄集中刪除。
返回遍歷記錄集
記錄集中通常含有很多條記錄,當打開一個記錄集時,當前的位置總是指向第一條記錄,如果想要查看其它的記錄,就需要借助于記錄集的一些方法:
moveNex()方法,表示當前記錄移動到下一條記錄。
movePrevious()方法,表示當前記錄移動到上一條記錄。
moveFirst()方法,表示當前記錄移動到第一條記錄。
moveLast()方法,表示當前記錄移動到最后一條記錄。
moveNumRecords()方法,表示當前記錄向前或向后移動到指定數(shù)目的記錄。
記錄集還包含一些屬性,用來描述記錄集。
AbsolutePosition屬性用來設(shè)置或讀取當前記錄在記錄集中的位置序號。
RecordCount屬性可以獲得記錄集中的總記錄數(shù)。返回對記錄集進行分頁
如果記錄集中包含大量的數(shù)據(jù)記錄,一次顯示出來會占用很大的頁面空間。也不方便查找和閱讀數(shù)據(jù)。因此,對記錄集的顯示可以采用分頁機制來顯示數(shù)據(jù)。分頁是指把記錄集中的記錄分成若干個邏輯頁,一次顯示一個頁的數(shù)據(jù),也就是一次只顯示記錄集的一部分數(shù)據(jù)。通過設(shè)置下面的3個屬性就可以完成對記錄集的分頁管理。
AbsolutePage屬性,用于指定當前的頁。PageCount屬性,返回記錄集中的邏輯頁數(shù)。PageSize屬性,用于指定每個邏輯頁所包含的記錄數(shù),默認值是10。分頁的方法是首先通過PageSize屬性指定每頁的記錄數(shù),然后通過AbsolutePage屬性移動到特定的頁。
返回把記錄存儲到數(shù)組中
把記錄集中的數(shù)據(jù)轉(zhuǎn)存的數(shù)組中,可以在不改變記錄集本身基礎(chǔ)上修改其中的數(shù)據(jù)。要把記錄集的數(shù)據(jù)轉(zhuǎn)存到數(shù)組,需要借助于記錄集的GetRows()方法。GetRows()方法可以自動創(chuàng)建數(shù)組并加入數(shù)據(jù)。對于不同的腳本語言,GetRows()的使用有些不同,得到的數(shù)組結(jié)構(gòu)也有所不同。
使用VBScript:sarray=rs.getrows()得到的是一個二維數(shù)組。
使用JavaScript:studentsarray=rs.getrows().toArray();這是因為JavaScript里沒有二維數(shù)組,如果要用GetRows()方法獲取數(shù)據(jù),就必須將結(jié)果集轉(zhuǎn)換成JavaScript能識別的數(shù)組,即一維數(shù)組。需要toArray方法。返回7.3數(shù)據(jù)管理
7.3.1關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的存儲與查詢
7.3.2XML數(shù)據(jù)中信息的存儲與查詢
返回關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的存儲與
查詢(1)數(shù)據(jù)存儲:數(shù)據(jù)庫通常分為層次式數(shù)據(jù)庫、網(wǎng)絡(luò)式數(shù)據(jù)庫和關(guān)系式數(shù)據(jù)庫3種。而不同的數(shù)據(jù)庫是按不同的數(shù)據(jù)結(jié)構(gòu)來聯(lián)系和組織的。目前使用最廣泛的是關(guān)系型數(shù)據(jù)庫,關(guān)系型數(shù)據(jù)結(jié)構(gòu)把一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡單的二元關(guān)系(以二維表的形式存儲數(shù)據(jù))。由關(guān)系數(shù)據(jù)結(jié)構(gòu)組成的數(shù)據(jù)庫系統(tǒng)被稱為關(guān)系數(shù)據(jù)庫系統(tǒng)。在關(guān)系數(shù)據(jù)庫中,對數(shù)據(jù)的操作幾乎全部建立在一個或多個關(guān)系表格上,通過對這些關(guān)系表格的分類、合并、連接或選取等運算來實現(xiàn)數(shù)據(jù)的管理。二維表格由行和列組成。一般情況下,一列稱為一個字段,表示記錄的一個屬性。一行表示一條記錄。例如:
idnamesexbirthday1張三男1984-01-203李四女1985-11-123王五男1983-05-12關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的存儲與
查詢(2)數(shù)據(jù)操作:數(shù)據(jù)操作包括數(shù)據(jù)的插入、修改、查詢和刪除等操作。
1.查詢操作
select字段列表
from表名[where條件]2.插入操作
insertinto表名[字段列表]values(對應(yīng)字段的記錄值)3.修改操作
update表名
set字段名=表達式[,字段名=表達式][where條件]4.刪除操作
deletefrom表名[where條件]返回XML數(shù)據(jù)中信息的存儲與查詢
XML數(shù)據(jù)是通過標記的描述來存儲的,XML文件是文本文件,對其進行查詢、添加、刪除和更新操作需要使用DOM來進行。
參看書中本章實例和第8章內(nèi)容返回7.4XML與數(shù)據(jù)庫的交互
7.4.1數(shù)據(jù)庫到XML文檔的信息交互
7.4.2XML文檔到數(shù)據(jù)庫的信息交互
返回數(shù)據(jù)庫到XML文檔的信息交互
把數(shù)據(jù)庫中的數(shù)據(jù)寫進XML文件需要利用某種技術(shù)(例如:ASP、Java等)與數(shù)據(jù)庫建立連接,取出數(shù)據(jù)后再利用DOM技術(shù)生成XML文檔。例如,利用Java技術(shù)建立與SQLServer數(shù)據(jù)庫的連接:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();conn=DriverManager.getConnection("jdbc:odbc:myds","sa","sa");查詢記錄:Statement
st=conn.createStatement();ResultSetrst=st.executeQuery("select*fromstudents");rst就是查詢出來的記錄集。然后再利用DOM技術(shù)對記錄集進行操作生成XML文檔。具體代碼參見書中實例。返回XML文檔到數(shù)據(jù)庫的信息交互
把XML文件中數(shù)據(jù)寫入數(shù)據(jù)庫首先需要利用解析器解析出XML文件中的數(shù)據(jù),再利用某種技術(shù)獲得數(shù)據(jù)庫的連接,把數(shù)據(jù)寫進數(shù)據(jù)庫。具體代碼參見書中實例。返回7.5SQLServer對XML的支持
7.5.1從SQLServer數(shù)據(jù)庫中提取XML數(shù)據(jù)
7.5.2XML數(shù)據(jù)保存到數(shù)據(jù)庫
能夠使用HTTP訪問SQLServer。支持XDR(XML數(shù)據(jù)簡化)架構(gòu)并且能夠指定對這些架構(gòu)的XPath查詢。能夠檢索并寫入XML數(shù)據(jù)。增強了SQLServer2000OLEDB提供程序(SQLOLEDB),使得可以將XML文檔設(shè)置為命令文本并以流的形式返回結(jié)果集。SQLServer2000對XML的支持包括以下內(nèi)容:返回從SQLServer數(shù)據(jù)庫中提取XML數(shù)據(jù)(1)從SQLServer數(shù)據(jù)庫提取數(shù)據(jù)到XML的方法是在查詢語句中使用FORXML子句,F(xiàn)ORXML子句的語法為:
FORXMLmode[,XMLDATA][,ELEMENTS]mode表示生成XML文件的模式,有以下幾種取值:
RAW:為SELECT語句所返回結(jié)果中每行記錄生成一個<row>標記。可以通過編寫嵌套FORXML查詢來生成XML層次結(jié)構(gòu)。AUTO:將基于指定SELECT語句的方式來使用試探性方法在XML結(jié)果中生成嵌套。對生成的XML的形狀具有最低限度的控制能力。除了AUTO模式的試探性方法生成的XML結(jié)構(gòu)之外,還可以編寫FORXML查詢來生成XML層次結(jié)構(gòu)。EXPLICIT:允許對XML的結(jié)構(gòu)進行更多控制。可以隨意混合屬性和標記來確定XML的結(jié)構(gòu)。由于執(zhí)行查詢而生成的結(jié)果集需要具有特定的格式。此集格式隨后將映射為XML結(jié)構(gòu)。
從SQLServer數(shù)據(jù)庫中提取XML數(shù)據(jù)(2)XMLDATA是可選項,表示查看用上面的任何一種模式所創(chuàng)建的Schema。
ELEMENTS也是可選項,用來指定字段以標記的形式而非屬性的形式表示。
例如:select*frombooksFORXMLAUTO,XMLDATA,ELEMENTS查詢出來的結(jié)果將是一個帶有Schema的XML數(shù)據(jù),并且每個字段是以子標記的形式出現(xiàn)的。它們的父標記的名稱是表的名稱。
結(jié)果示例返回XML數(shù)據(jù)保存到數(shù)據(jù)庫(1)
把XML文件中的數(shù)據(jù)存入數(shù)據(jù)庫,需要借助于OPENXML函數(shù),該函數(shù)的主要作用就是將XML文件的數(shù)據(jù)插入到數(shù)據(jù)庫的表中。OPENXML函數(shù)的語法如下:
OPENXML(iDocint[in],RowPattern[,Flagsbyte[in]])[WITH(column-namecolumn-type|tablename)
iDoc參數(shù)表示XML文件的內(nèi)部節(jié)點樹,該參數(shù)包含由sp_xml_preparedocument
存儲過程返回的值。
RowPattern參數(shù)表示要返回的XML文件的節(jié)點。Flags參數(shù)是可選的參數(shù),表示SQLServer要搜索的屬性和節(jié)點,該值可以是0(默認值,屬性)、1(屬性)或2(節(jié)點)。如果要同時搜索屬性和節(jié)點,值需要設(shè)置為3。WITH參數(shù)也是一個可選參數(shù),表示希望出現(xiàn)的列或關(guān)聯(lián)的數(shù)據(jù)表。
XML數(shù)據(jù)保存到數(shù)據(jù)庫(2)
下面通過創(chuàng)建一個名為“xmltodb”的存儲過程來使用OPENXML函數(shù),該存儲過程包含一個參數(shù)“@mydoc”用于接收XML文件,在SQLServer2005中可以使用“xml”數(shù)據(jù)類型,SQLServer2000中沒有“xml”數(shù)據(jù)類型,所以使用“varchar”類型。需要注意的是,聲明的長度必須能夠接收XML文件中所有的字符,否則,程序?qū)鲥e。定義存儲過程的代碼如下:CREATEPROCEDUREdbo.xmltodb@mydocvarchar(100)ASdeclare@docHandleintExecsp_xml_preparedocument@docHandleOUTPUT,@mydocinsertintobooks(name,author,price)SELECT*FROMOPENXML(@docHandle,'/books/book',3)WITH(namenvarchar(50),authornvarchar(50),pricenvarchar(50))GO返回<Schemaname="Schema1"xmlns="urn:schemas-microsoft-com:xml-data"xmlns:dt="urn:schemas-microsoft-com:datatypes"><ElementTypename="books"content="eltOnly"model="closed"order="many"><elementtype="name"/><elementtype="author"/><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南師范大學(xué)《古生物與地層學(xué)含實驗》2023-2024學(xué)年第一學(xué)期期末試卷
- 加工中心的編程教學(xué)課件
- 七年級道德與法治上冊第一單元成長的節(jié)拍第一課中學(xué)時代第二課時誤區(qū)警示新人教版
- 三年級數(shù)學(xué)上冊6乘法單元概述和課時安排素材北師大版
- 三年級科學(xué)上冊7土壤的保護教案冀教版
- 三年級科學(xué)下冊第三單元固體和液體1認識固體教案蘇教版1
- 《知識社會學(xué)》課件
- 高二物理期末模擬卷(A卷)【測試范圍:必修第一、二、三冊及選擇性必修第一冊第1章】(考試版A3)(浙江專用)
- 《前言關(guān)鍵點》課件
- 初中數(shù)學(xué)等腰直角三角形添加輔助線三垂直構(gòu)建K字型全等專項練習(xí)題1(附答案詳解)
- 江蘇省揚州市2024-2025學(xué)年高中學(xué)業(yè)水平合格性模擬考試英語試題(含答案)
- 2025年蛇年年度營銷日歷營銷建議【2025營銷日歷】
- 福建省泉州市2023-2024學(xué)年高一上學(xué)期期末質(zhì)檢英語試題 附答案
- 安保服務(wù)評分標準
- 馬工程《思想政治教育學(xué)原理 第二版》課后習(xí)題詳解
- 山東中醫(yī)藥大學(xué)中醫(yī)學(xué)(專升本)學(xué)士學(xué)位考試復(fù)習(xí)題
- 學(xué)生對課堂教學(xué)滿意度調(diào)查
- 住房公積金中心窗口人員個人工作總結(jié)
- 集成電路單粒子效應(yīng)評估技術(shù)研究PPT課件
- 會議記錄模板
- 幼兒園小班生成活動教案20篇
評論
0/150
提交評論