




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據描述與數據交換XML簡介(1)
XML(eXtensibleMarkupLanguage)是由W3C于1998年2月發布的一種標準。它是SGML的一個簡化子集,它將SGML的豐富功能與HTML的易用性結合到Web應用中,以一種開放的自我描述方式定義數據結構,在描述數據內容的同時能突出對結構的描述,從而體現出數據之間的關系。以XML為基礎的新一代WWW環境是直接面對Web數據的,不僅可以很好地兼容原有的Web應用,而且可以更好地實現Web中的信息共享與交換。
XML簡介(2)XML的主要特點如下:(1)可擴展性:XML是一種元標記語言,用戶可以根據自己的需要和習慣來定義標記和屬性,從而可以以一種更有意義的方式描述信息,這方面與HTML存在根本性的區別。XML中的標簽是用來標識數據內容本身的,就像我們在程序中給變量取一個比較容易理解的名稱一樣。例如:<姓名>小明</姓名>
XML簡介(3)(2)結構性:XML數據存儲格式不受顯示格式的制約,一般包括三個要素:數據、結構以及顯示方式。XML把文件的三要素獨立開來,分別處理。首先把顯示格式從數據內容中獨立出來,保存在樣式文件(StyleSheet)中,這樣如果需要改變文檔的顯示方式,只要修改樣式文件就行了。于是就把資料的內容和其表現形式合理地隔開,從而大大提高XML數據的可理解性、可交換性和重用性。
XML簡介(4)(3)平臺獨立性:XML文件是純文本,獨立于平臺和應用。
由于上述特點,XML目前正在迅速成為網絡數據描述和交換的標準。
XML文件的正規性和有效性(1)與HTML相比,XML的格式要嚴格的多。它包括兩方面的要求,即格式的正規性和文件的有效性。
實際使用的XML文件必須是一個格式正規的XML文件,否則,解析器或應用程序就不能對其進行有效的分析與處理。
XML文件的正規性和有效性(2)格式正規的XML文件的主要要求:每個元素都要有一個起始標簽和一個結束標簽;每個XML文檔都要有一個唯一的根元素;元素和屬性的名字區分大小寫;元素必須正確的嵌套,在結構上不能交迭,如下的嵌套是不正確的:<a>..<b>..</a>..</b>;有些字符內容不能直接使用,必須由其它的字符組合代替(例如使用<;代替<);屬性的值必須包含在引號(單引號或雙引號)之中;空元素可以用簡單的方式描述(如<a></a>可以簡化成<a/>)。XML文件的正規性和有效性(3)格式正規的XML文件由三部分組成:(1)序言(可選)指出現在文件的開始標簽或根元素之前的信息,由它們提供有關XML文件總體情況的信息,如編碼方式、樣式表等。(2)文件元素其定義形式是一個簡單的層次樹,每個文檔都有且僅有一個根結點,稱其為文件根。(3)尾聲(可選)出現在文件元素之后的內容,可包含注釋或空白。XML文件的正規性和有效性(4)元素是xml文件的組成部分,元素可由其它元素、其它類型數據等組成。XML元素間的關系:由于XML元素必須規定根元素,所以根元素以下的元素都為子元素,相互之間為兄弟元素關系。為了數據存儲方便,應確保子元素內容與根元素相關,并且各個兄弟元素間最好也有邏輯上的關聯。XML元素內容:XML文件是用于存儲數據的,因此它一定要有內容,內容可以是空白內容,也可以是簡單的文本或單一數據,也可以是復雜的多個數據列,甚至還可以是其它的分類子元素。XML元素命名規則:同Java、C等命名規則類似,可以是英文字母或中文,可以用數字和字母作為名字開頭,但名稱中不能出現空格,可以用下劃線取代空格的功能來進行詳細命名,而且在名稱中嚴禁出現冒號。
屬性是包含關于元素的額外信息的元素部分。在XML中,屬性值可以被用來為元素添加額外的說明信息。
XML文件的正規性和有效性(5)<?XMLversion=“1.0”,encode=“GB2312”?><booklist><book><書名>計算機網絡</書名><作者>謝希仁</作者><出版社>電子工業出版社/</出版社></book><book><書名>微機原理及應用</書名><作者>周明德</作者><出版社>清華大學出版社</出版社></book></booklist>XML文件的正規性和有效性(6)booklistbook書名計算機網絡作者謝希仁出版社電子工業出版社book書名微機原理及應用作者出版社周明德清華大學出版社XML文件的正規性和有效性(7)
有時,XML文件是正規的還不夠,還要求它是有效的,即要遵循有關的DTD或Schema所建立的規則。一個有效的XML文件只能包含DTD或Schema所規定的元素和屬性,而且還要符合它們所確定的嵌套規則和數據類型。
當我們利用DTD或Schema檢查XML文件的有效性時,就是對XML文件的確認。文檔類型定義DTD
XML不同于HTML,XML并沒有自己固定標準的標記以及屬性。而用戶要使用自己的標記、屬性或者是實體參考等就要自行定義它們。而這些定義的工作要在DTD文檔類型定義中進行。DTD為XML文件定義了該文件中應該包含的或者是可以包含的元素、標記、屬性和實體的一個清單以及它們之間的相互關系。
XMLschema
XMLSchema為一類文件建立了一個模式,規范了文件中的標簽和文本可能的組合形式。它不僅包括了DTD能實現的所有功能,而且它本身就是規范的XML文件。XMLSchema提供了一系列新特色,大大彌補了DTD的不足:支持數據類型、支持屬性分組、可以更新定義的內容模式、支持名字空間(名字空間的作用是指明元素是屬于哪個文件的)。XML的應用領域(1)描述數據。與樣式表相結合形成形式多樣的數據表現形式。(2)通過對XML文檔的操作實現數據傳輸。(3)通過統一的DTD或Schema產生的XML文件完成對異構數據源的數據采集和數據整合,消除已有的數據孤島,有利于網絡環境下的系統集成。(4)使用XML數據形式產生圖形、動畫、聲音。ASP簡介
ASP(ActiveServerPage)是一種服務器端的開發環境,利用它開發者可以把超文本、任何腳本和ActiveX組件組合在一起,從而生成動態的、交互的Web應用程序。ASP目前已經成為Web應用程序開發的主流環境。ASP的基本工作原理
ASP文件的擴展名均為.ASP,一個ASP文件相當于一個可執行文件,它必須被放在Web服務器上一個有執行權限的目錄下。當用戶從客戶端瀏覽器輸入一個ASP文件的地址后,瀏覽器就將這個URL請求發給Web服務器,Web服務器開始調用指定的ASP文件,并由嵌入Web服務器的ASP解釋程序將被請求的ASP文件從頭讀到底,執行每一條命令,然后動態生成一個HTML頁面并傳送給客戶端瀏覽器。ASP中的XML應用(采用VBScript語言)通過ADO獲取數據庫的信息產生XML數據島使用DOM對XML文件進行解析和處理ADO簡介
ADO(ActiveXDataObject)又稱ActiveX數據對象,是微軟推出的一項數據庫鏈接技術,它提供了程序開發人員實時存取各類數據庫(如Access、Oracle、SQLServer、Sybase)的能力,使用ADO可以輕松地完成對各類數據庫的查詢、存取等操作。
通過ADO連接數據庫
首先,通過ODBC設置源數據庫db1,然后,聲明一個Connection對象cn_ebookstore,用來連接數據庫:Setcn_ebookstore=CreateObject("ADODB.Connection")再通過以下語法連接到數據庫db1:cn_ebookstore.Open(DNS=“db1”)查詢需要的信息
假設通過產品名查詢。數據庫中的“產品”表記錄了產品的詳細信息。Session("query")="SELECT*FROM產品"&_“WHEREchanmingLIKE‘%”&Request(“txtQuery”)&“%‘”將查詢得到的記錄保存在recordset對象rsBookdetail中。
SetrsBookdetail=cn_ebookstore.Execute(Session(“query”))XML數據島
XML數據島是將XML與HTML結合最直接的方法,它允許直接編寫script來瀏覽XML文件而不需要通過對象標記<OBJECT>的引導。大多數屬于Well-FormedXML文件的內容都可以放在XML數據島之中。對IE5.x而言,可在HTML網頁中使用標記<XML>來建立一個XML數據島,并將XML內容放置于該<XML>標記之內。除此之外,也可通過<XML>標記的SRC屬性來指定一個外部的XML文件作為XML數據島的內容。要引用XML數據島內的數據,可以使用HTML的某些特定標記來對應XML數據島的某些標記,則HTML標記就會自動獲取該XML標記的數據。制作XML數據島
制作一個XML數據島,其內容就是Recordset對象rsBookdetail的各個字段值,也就是該產品的詳細信息。<xmlid="Detailsdso"><?xmlversion="1.0"?><business><產品名稱><%=rsBookdetail("chanming")%></產品名稱><產地><%=rsBookdetail("chandi")%></產地><等級><%=rsBookdetail("dengji")%></等級><計價單位><%=rsBookdetail("jijiadanwei")%></計價單位><單價><%=rsBookdetail("danjia")%></單價><規格><%=rsBookdetail("guige")%></規格></business></xml>DOM簡介
DOM(DocumentObjectModel)即文檔對象模型,也可以說是一種API的標準。當我們將文件視為一個文檔對象(DOM)時,我們就可以通過(script)程序語言調用DOM對象,來對該文件做數據的訪問,并且利用程序對獲取的對象數據做進一步的應用操作。
各種DOM對象Node:(1)Document文檔對象,也是樹狀結構的根結點。(2)Element元素結點對象,代表的是XML的某一元素。(3)Attr屬性結點對象,代表的是XML的某一個元素中的某一個屬性。(4)Text文字結點對象,也就是XML元素或屬性的內容。Nodelist:結點列表對象,是由一些結點所組成的集合,可以通過索引方式,獲取其中的單一結點。ParseError:剖析對象,可以用來剖析XML文件。XMLDOM
XMLDOM的設計思路為:將所有的文件放入樹的各個結點之中。由于結點是一個Node對象,因此提供了很多函數和屬性(如firstChild、lastChild、previousSibling、nodeName、nodeValue、nodeType等),通過這些函數與屬性,配合Script程序,將可以完成所需要的各項工作。結點對象的各項屬性說明屬性返回對象說明范例ownerDocumentDocument對象返回擁有該結點的文件對象currentNode.ownerDocumentParentNodeNode對象返回該結點的父結點對象currentNode.parentNodeChildNodesNodelist對象返回該結點的所有子結點所形成的結點列表對象,并可利用索引方式取出各個子結點。currentNode.childNodes(0)currentNode.childNodes(1)……currentNode.childNodes(n)FirstChildNode對象返回第一個子結點對象currentNode.firstChildLastChildNode對象返回最后一個子結點對象currentNode.lastChildpreviousSiblingNode對象返回上一個兄弟結點對象currentNode.previousSiblingNextSiblingNode對象返回下一個兄弟結點對象currentNode.nextSibling通過DOM對象讀取XML數據島
建立一個文檔對象,并通過該對象讀取XML數據島的數據。//聲明了一個XMLDOM文檔對象docBook,并直接設置為XML數據島Detailsdso的屬性XMLDocument的返回值,也就是整個XML數據島的內容SetdocBook=detailsdso.XMLDocument解析XML文件
當DOM樹產生之后,所有的數據都放在該樹的某些結點中,于是可以通過對象的相關屬性來讀取這些數據或瀏覽其他的結點。
setrootNode=docBook.documentElement//獲取根結點//觀看根元素下的各個子元素i=0forEachchildinrootNode.childNodessetC1=rootNodes.childNodes.item(i)MsgBoxC1.xmli=i+1Next
數據整合XML數據島xmldso(數據來自本地端數據庫)<xmlid="xmldso"><?xmlversion="1.0"?><employeelist><employee><員工編號>1</員工編號><姓名>丁當</姓名><出生年月>1979-4-4</出生年月><工資>1600</工資></employee>……</employeelist></xml>XML數據島xmldso2(數據來自遠程數據庫)<xmlid="xmldso2"><?xmlversion="1.0"?><employeelist><employee><員工編號>1</員工編號><家庭地址>南京理工大學</家庭地址><郵箱>aaa@</郵箱></employee>……</employeelist></xml>整合XML文件(1)利用XMLDOM將兩個數據島xmldso和xmldso2整合在一起,xmldso和xmldso2分別為人員基本情況信息。Setdoc=CreateObject("Microsoft.XMLDOM")Setdoc=xmldso.XMLDocumentSetdoc2=CreateObject("Microsoft.XMLDOM")Setdoc2=xmldso2.XMLDocument
因此,doc和doc2分別具體化為代表XML數據島xmldso和xmldso2的Document對象。
整合XML文件(2)使用selectNodes函數來獲取所有“employee”元素結點所形成的結點列表對象。Setemployeelist1=doc.selectNodes("http://employee")Setemployeelist2=doc2.selectNodes("http://employee")整合XML文件(3)i=0ForEachnode1inemployeelist1eno1=node1.selectSingleNode("員工編號").firstchild.nodevaluecount=node1.childnodes.length-1ForEachnode2inemployeelist2eno2=node2.selectSingleNode("員工編號").firstchild.nodevalueif(eno1=eno2)thenFork=1Tonode2.childnodes.length-1text=node2.childnodes.item(k).firstchild.nodevaluename=node2.childnodes.item(k).nodenameSetnamenode=doc.createElement(name)Settextnode=doc.createTextNode(text)namenode.appendChildtextnodeemployeelist1.item(i).insertBeforenamenodeemployeelist1.item(i).childnodes.item(count)Nexti=i+1EndIfNextNext整合XML文件(4)經過數據整合后得到的新的XML數據島為:<xmlid="xmldso"><?xmlversion="1.0"?><employeelist><employee><員工編號>1</員工編號><姓名>丁當</姓名><出生年月>1979-4-4</出生年月><工資>1600</工資>
<家庭地址>南京理工大學</家庭地址><郵箱>aaa@</郵箱></employee>……</employeelist></xml>JSP簡介
JSP(JavaServerPage)是ASP的Java版本,它提供了許多和ASP一樣的功能,但是也有很多明顯的區別:ASP適用于Windows平臺,在非Windows平臺上,JSP的使用比ASP多得多。現在JSP的腳本語言只限于Java,將來將支持更多的腳本語言。JSP允許創建新標簽,允許擴展語言本身。JSP中的XML應用通過JDBC連接數據庫,獲取數據庫的信息動態產生XML文件使用DOM對XML文件進行解析和處理JDBC簡介
JDBC(Java數據庫連接,JavaDatabaseConnectivity)是一種基于X/Open的SQL命令級接口,它由一組用Java語言編寫的類和接口組成,使得程序開發人員可以建立一個與數據庫無關、與平臺無關的編程接口來建立數據庫應用程序。
使用JDBC連接數據庫
//加載驅動程序,下面的代碼為加載MySQL驅動程序Class.forName("com.mysql.jdbc.Driver");//注冊MySQL驅動程序DriverManager.registerDriver(newcom.mysql.jdbc.Driver());//用適當的驅動程序連接到數據庫StringdbUrl="jdbc:mysql://localhost:3306/DB?useUnicode=true&characterEncoding=GB2312";StringdbUser="dbuser";StringdbPwd="1234";//建立數據庫連接con=java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);//創建一個JDBC聲明stmt=con.createStatement();生成XML文件(1)
//首先獲得一個XML文件的解析器,并解析XML文件生成DOM文檔的接口類,以便訪問DOM。DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=factory.newDocumentBuilder();//然后,定義一個Document接口描述對應于整個XML文件的文檔樹,并創建一個根元素。Documentdocument=builder.newDocument();Elementroot=document.createElement(“公文”);//新建結點root1,節點名稱為“公文信息”。Elementroot1=document.createElement(“公文信息”);//新建節點item,節點名稱為”保密期限“,將變量baomiqixian的值作為一個文字節點的值,并將此文字節點作為item的子節點。而”保密期限“又作為”公文信息“的子節點。Elementitem=document.createElement(“保密期限”);item.appendChild(document.createTextNode(baomiqixian));root1.appendChild(item);root.appendChild(root1);生成XML文件(2)//類TransformerFactory實現獲得將DOM文檔轉化為XML文件的轉換器TransformerFactorytfactory=TransformerFactory.newInstance();//類Transformer實現轉化APITransformertransformer=tfactory.newTransformer();//將DOM對象轉化為DOMSource類對象,該對象表現為轉化成別的表達方式的信息容器DOMSourcesource=newDOMSource(document);//獲得一個StreamResult類對象,該對象是DOM文檔轉化成的其他形式的文檔的容器。此處將轉化為gongwen1.xml文件。StreamResultresult=newStreamResult(newFile("gongwen1.xml"));//調用API,將DOM文檔轉化為XML文件transformer.transform(source,result);生成XML文件范例<?xmlversion="1.0"encoding="GB2312"?><公文><公文信息><公文標題>數據交換平臺測試通知</公文標題>
<撰文時間>2006-6-1</撰文時間>
<主題詞>通知</主題詞>
<公文字號>0001號</公文字號>
<保密期限>1年</保密期限>
<密級>機密</密級>
<文種>通知</文種>
<緊急程度>緊急</緊急程度>
<發文單位>網管中心</發文單位>
<發送單位>XXX市財政局</發送單位>
<抄送單位>XXX市房產管理局</抄送單位>
<公文正文>正文(略)</公文正文>
</公文信息>
</公文>遍歷XML文件以范例的XML文件為例://獲得根元素的子節點列表NodeListnodelist=document.getElementByTagName(“公文”);//用遞歸方法實現DOM文檔的遍歷GetElement(nodelist);//GetElement方法PublicstaticvoidGetElement(NodeListnodelist){for(inti=0;i<nodelist.getLength();i++){Nodecnode=nodelist.item(i);//如果節點為元素節點,則遞歸調用GetElementif(cnode.getNodeType()==Node.ELEMENT_NODE){GetElement(cnode.getChildNodes());}elseif(cnode.getNodeType()==Node.TEXT_NODE){//如果節點為文字節點,則顯示信息System.out.println(cnode.getNodeValue().trim();}}}增加節點(1)
還是以范例的XML文件為例,要在公文中增加一個新的公文的信息。//獲得根對象,此處“公文”為根元素。Elementroot=document.getDocumentElement();//在DOM文檔中增加一個Element節點“公文信息”。Elementxinxi=document.createElement(“公文信息”);//在DOM文檔中增加一個Element節點“公文標題”。Elementtitle=document.createElement(“公文標題”);//在DOM文檔中增加一個Text節點。TexttextMsg=document.createTextNode(“公務員錄取通知”);title.appendChild(textMsg);//把title節點轉化為“公文信息”的子節點。xinxi.appendChild(title);//把“公文信息”轉化為根節點“公文”的子節點。root.appendChild(xinxi);
增加節點(2)增加節點后的XML文件如下(增加的節點用紅色字表示):<?xmlversion="1.0"encoding="GB2312"?><公文><公文信息><公文標題>數據交換平臺測試通知</公文標題>
<撰文時間>2006-6-1</撰文時間>
<主題詞>通知</主題詞>
……
</公文信息>
<公文信息><公文標題>公務員錄取通知</公文標題>
</公文信息>
</公文>刪除節點
假設我們要刪除范例中“公文標題”這一節點。//獲得根對象。Elementroot=document.getDocumentElement();//獲得根元素的子節點,也就是“公文信息”節點Nodenode=element.getFirstChild();//利用removeChild()方法刪除”公文標題“子節點對象node.removeChild(node.getFirstChild());
修改節點內容(1)
這里將修改范例XML文件中的“公文標題”的值。//獲得根對象,此處“公文”為根元素。Elementroot=document.getDocumentElement();//獲得根元素的子節點對象,也就是“公文”的子節點Nodenode=root.getFirstChild();//獲得“公文信息”的第一個子節點,也就是“公文標題”子節點。Nodenode1=node.getFirstChild();//在DOM文檔中新建一個Text節點TexttextMsg=document.createTextNode(“數據修改通知");//獲得原來“公文標題”的子節點——文字結點對象Nodetext1=node1.getFirstChild();//用新建的文字節點對象替換原有的,達到修改的目的。node1.replaceChild(textMsg,text1);
修改節點內容(2)修改后的XML文件如下所示(紅色字表示修改內容):<?xmlversion="1.0"encoding="GB2312"?><公文><公文信息><公文標題>數據修改通知</公文標題>
<撰文時間>2006-6-1</撰文時間>
<主題詞>通知</主題詞>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 精神康復中的動物輔助治療考核試卷
- 嵌入式開發環境趨勢分析試題及答案
- 行政管理的文化影響試題及答案
- 數據庫的精益管理理念與實踐探討試題及答案
- 計算機網絡安全技術組合題目及答案
- 行政理論中的創新實踐試題及答案
- 網絡協議的分類及應用試題及答案
- 嵌入式系統開發的資深見解試題及答案
- 行政組織合作機制研究試題及答案
- 醫用應急物資管理制度
- 滬教牛津版七年級上冊英語全冊教案
- 太平歌詞唱詞
- 辦公樓裝飾拆除工程施工方案
- 先天性心臟病患兒護理查房
- 2022年山東省威海市中考數學試題及答案解析
- (完整版)農業主要知識點
- 高級財務管理試題及答案
- 醫院寧群腦高灌注綜合癥監測和防治
- T∕CSEA 1-2018 鋅鋁涂層 技術條件
- 射線檢測操作指導書
- 化工過程分析與合成(課件)
評論
0/150
提交評論