侯春英
摘 要:XML作為存儲(chǔ)數(shù)據(jù)的首選手段,已經(jīng)逐步達(dá)到取代一些數(shù)據(jù)庫(kù)的功能而且使用起來遠(yuǎn)比數(shù)據(jù)庫(kù)方便得多,本文從實(shí)用角度出發(fā)介紹了XML文檔的建立、編輯及檢索方式的實(shí)現(xiàn)。
關(guān)鍵詞:XML;SGML;表單
XML作為存儲(chǔ)數(shù)據(jù)的首選方式,已經(jīng)逐步達(dá)到取代一些數(shù)據(jù)庫(kù)的功能而且使用起來遠(yuǎn)比數(shù)據(jù)庫(kù)方便得多,它不需要任何其它的數(shù)據(jù)庫(kù)環(huán)境配置和數(shù)據(jù)庫(kù)連接設(shè)置,便可以方便地實(shí)現(xiàn)數(shù)據(jù)庫(kù)的功能并實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)的設(shè)計(jì)工作。
XML文檔是一種純文本文檔,可以用你喜歡的任意一種編輯器來創(chuàng)建它。但是在很多情況下,XML文檔不應(yīng)由設(shè)計(jì)者事先設(shè)計(jì)好來固定使用,而應(yīng)在程序運(yùn)行過程中由交互方式產(chǎn)生數(shù)據(jù)并動(dòng)態(tài)建立相應(yīng)的XML文檔。本文將介紹一種動(dòng)態(tài)XML文檔建立和編輯方法及利用XSL樣式表來檢索顯示XML文檔的方法及實(shí)現(xiàn)過程。
1 創(chuàng)建并編輯一個(gè)XML文檔的宏觀描述
⑴通過交互方式(表單)將用戶所要建立的XML元素存儲(chǔ)在計(jì)算機(jī)內(nèi);
⑵用ASP程序進(jìn)行處理,其主要處理過程可包含以下幾個(gè)方面:1)創(chuàng)建DOM實(shí)例,并加載所要使用的XML文檔;2)判斷所要使用的XML文檔是否存在,若不存在,則要先創(chuàng)建XML文檔的聲明部分和根元素;3)按用戶在表單中所輸入的各項(xiàng)在XML文檔中建立相應(yīng)的子元素;4)將所處理的數(shù)據(jù)保存。
2 文檔動(dòng)態(tài)處理過程示例
⑴newdata.htm文件的內(nèi)容(主運(yùn)行文件):
⑵newxml.asp文件的內(nèi)容為:
<%
Function NewtoXML(FileName)
Dim objDom
Dim objRoot
Dim objRecord
Dim objField
Dim objPI1
dim objPI2
Dim blnFileExists
Set objDom=server.CreateObject("Microsoft.XMLDOM")
objDom.preserveWhiteSpace=True
blnFileExists=objDom.Load(FileName)
If blnFileExists=True Then
Set objRoot=objDom.documentElement
Else
Set objRoot=objDom.createElement("學(xué)生資料表")
objDom.appendChild objRoot
End If
Set objRecord=objDom.createElement("個(gè)人資料")
objRoot.appendChild objRecord
For x=1 To Request.Form.Count
If instr(1,Request.Form.Key(x),"btn")=0 Then
Set objField=objDom.createElement(Request.Form.Key(x))
objField.Text=Request.Form(x)
objRecord.appendChild objField
End If
Next
If blnFileExists=False then
Set objPI1=objDom.createProcessingInstruction("xml","version='1.0' encoding='gb2312'")
set objPI2=objDom.createProcessingInstruction("xml:stylesheet", "type='text/xsl' href='userdata.xsl'")
objDom.insertBefore objPI1, objDom.childNodes(0)
objDom.insertBefore objPI2, objDom.childNodes(1)
End If
objDom.save FileName
End Function
On Error Resume Next
NewtoXML server.MapPath("Userdata.xml")
If err.number<>0 then
Response.write("")
End If
%>
說明:本程序已在IE瀏覽器上運(yùn)行通過。代碼中所調(diào)用的userdata.xml文件不用單獨(dú)建立,程序在運(yùn)行過程中會(huì)自動(dòng)建立此文件。
[參考文獻(xiàn)]
[1]范春梅.XML基礎(chǔ)教程.人民郵電出版社,2009.
[2]孫更新,肖冰,彭玉忠.XML編程與應(yīng)用教程.清華大學(xué)出版社,2009.