日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

利用XSL和ASP在线编辑XML文档

發布時間:2023/12/8 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用XSL和ASP在线编辑XML文档 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文通過一個詳細的例子,來闡述了在線編輯XML文檔數據的方法。由于Netscape對XML的支持比較弱,因此,要實現跨平臺的數據交換,數據的處理必須在服務器端進行。要編輯XML文檔,首先要做的事情就是怎樣把這些數據提取并顯示給訪問者,XSL為我們顯示XML文件提供了一個很好的解決方案。下面的例子就是利用XSL樣式單把XML文檔顯示出來,供用戶進行編輯,然后再把編輯后的數據提交到服務器,在服務器端進行數據的更新。這里采用ASP(Active Server Pages)來完成我們的任務。
首先,載入我們要進行編輯的XML文檔,利用微軟的文檔對象模型(Microsoft XMLDOM Object)和XSL,XML文檔就可以在服務器端轉換成可以在客戶端顯示的HTML文件內容。下面先看看我們使用的XML和XSL文件是什么樣子的。

XML文件:UserData.xml

<?xml?version="1.0"?encoding="gb2312"?>
<!--?edited?with?XMLSPY?v2004?rel.?4?U?(http://www.xmlspy.com)?by?Dicky?(Apple'S?Eden)?-->
<UserInfo>
????
<Field?ID="Name"?TabOrder="1">
????????
<FieldValue>Dicky</FieldValue>
????
</Field>
????
<Field?ID="Sex"?TabOrder="2">
????????
<FieldValue>Male</FieldValue>
????
</Field>
????
<Field?ID="UnitName"?TabOrder="3">
????????
<FieldValue>ShangHai?Ateam?Company</FieldValue>
????
</Field>
????
<Field?ID="Address"?TabOrder="4">
????????
<FieldValue>ShangHai,ZhongShan?West?Road?1800#,Room?26A</FieldValue>
????
</Field>
????
<Field?ID="Tel"?TabOrder="5">
????????
<FieldValue>13800138000</FieldValue>
????
</Field>
????
<Field?ID="EMail"?TabOrder="6">
????????
<FieldValue>AppleBBS@GMail.Com</FieldValue>
????
</Field>
</UserInfo>


XSL文件:UserData.xsl

<?xml?version="1.0"?encoding="gb2312"?>
<!--?edited?with?XMLSPY?v2004?rel.?4?U?(http://www.xmlspy.com)?by?Dicky?(Apple'S?Eden)?-->
<xsl:stylesheet?xmlns:xsl="http://www.w3.org/TR/WD-xsl">
????
<xsl:template?match="/">
????????
<html>
????????????
<meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312"/>
????????????
<body>
????????????????
<form?method="post"?action="EditUserData.asp">
????????????????????
<h1>Edit?UserInfo:</h1>
????????????????????
<table?border="1"?cellpadding="2">
????????????????????????
<xsl:for-each?select="UserInfo/Field">
????????????????????????????
<tr>
????????????????????????????????
<td>
????????????????????????????????????
<xsl:value-of?select="@ID"/>
????????????????????????????????
</td>
????????????????????????????????
<td>
????????????????????????????????????
<input?type="text">
????????????????????????????????????????
<xsl:attribute?name="ID"><xsl:value-of?select="@ID"/></xsl:attribute>
????????????????????????????????????????
<xsl:attribute?name="Name"><xsl:value-of?select="@ID"/></xsl:attribute>
????????????????????????????????????????
<xsl:attribute?name="Value"><xsl:value-of?select="FieldValue"/></xsl:attribute>
????????????????????????????????????
</input>
????????????????????????????????
</td>
????????????????????????????
</tr>
????????????????????????
</xsl:for-each>
????????????????????
</table>
????????????????????
<br/>
????????????????????
<input?type="submit"?id="btnSubmit"?name="btnSubmit"?value="Edit"/>
????????????????
</form>
????????????
</body>
????????
</html>
????
</xsl:template>
</xsl:stylesheet>


XSL文件使用了XSL:for-each元素的來遍歷整個XML文件,XML文件里每個“field”元素的“id”屬性和HTML表單的文本輸入框的“id”和“name”相對應。這樣,HTML表單的文本輸入框就顯示出了XML文件的元素值。此文件負責XML文檔在服務器端的轉換,以便能在各種瀏覽器上顯示。
下面是關鍵的程序,它實現打開和更新XML文檔的功能,并根據表單的提交與否,來決定是否進行更新。它包含了兩個函數,loadXMLFile負責載入和轉換要顯示的XML文件;updateXML函數負責更新XML文件。

EditUserData.asp程序如下:

<%?
'-----------------------------------------------------------?
'
定義函數?LoadXMLFile(),接收二個參數:?
'
strXMLFile?-?XML?文件的路徑和文件名字?
'
strXSLFilee?-?XSL?文件的路徑和文件名字?
'
-----------------------------------------------------------??
Function?LoadXMLFile(strXMLFile,?strXSLFile)?
????
'Declare?local?variables?
????Dim?objXML?
????
Dim?objXSL?
????
'實例化?XMLDOM?對象,以便載入?XML?文件。?
????Set?objXML?=?Server.CreateObject("Microsoft.XMLDOM")?
????
'關掉文件異步載入模式。?
????objXML.Async?=?False?
????
'載入?XML?文件!?
????objXML.Load(strXMLFile)?
????
'實例化?XMLDOM?對象,以便載入?XSL?文件。?
????Set?objXSL?=?Server.CreateObject("Microsoft.XMLDOM")?
????
'關掉文件異步載入模式。?
????objXSL.Async?=?False?
????
'載入?XSL?文件!?
????objXSL.Load(strXSLFile)?
????
'利用?XMLDOM?的?transformNode?方法,把?XSL?樣式表應用到?XML?文檔,然后輸出到客戶端。?
????Response.Write(objXML.TransFormNode(objXSL))?
End?Function?
'------------------------------------------------------------------?
'
函數?updateXML()?接收一個參數:strXMLFile?-?XML?文件的路徑和文件名。?
'
------------------------------------------------------------------?
Function?UpdateXML(strXMLFile)?
????
'聲明局部變量。?
????Dim?objDom?
????
Dim?objRoot?
????
Dim?objField?
????
Dim?x?
????
'實例化?XMLDOM?對象。?
????Set?objDOM?=?Server.CreateObject("Microsoft.XMLDOM")?
????
'關掉文件異步載入模式。?
????objDom.Async?=?False?
????
'載入?XML?文件。?
????objDom.Load?strXMLFile?
????
'設定根元素。?
????Set?objRoot?=?objDom.DocumentElement?
????
'遍歷?FORM?集合,并把提交的數據寫入?XML?文件。?
????For?x?=?1?To?Request.Form.Count?
????
'檢查提交的數據是否包含按鈕。如果是,忽略此數據。?
????????If?Instr(1,Request.Form.Key(x),"btn")?=?0?Then?
????????
'按照?XSL?查詢模式,建立?objField?變量,把表單的元素對應到?XML?文檔里的相應元素[field_value]。?
????????????Set?objField?=?objRoot.SelectSingleNode("Field[@ID='"?&?Request.Form.Key(x)?&?"']/FieldValue")?
????????????
'把表單提交的數據和?XML?文檔里的節點值對應起來。?
????????????objField.Text?=?Request.Form(x)?
????????
End?If?
????
Next?
????
'保存編輯過的?XML?文件。?
????objDom.Save?strXMLFile?
????
'釋放所有對對象的引用。?
????Set?objDom?=?Nothing?
????
Set?objRoot?=?Nothing?
????
Set?objField?=?Nothing?
????
'調用?LoadXMLFile?函數,把新編輯后的?XML?文件用?UpdatedUserData.xsl?樣式單顯示到客戶端。?
????LoadXMLFile?strXMLFile,Server.MapPath("UpdatedUserData.xsl")?
End?Function?
'檢查表單是否成功提交,如提交,更新?XML?文件;否則,轉到編輯狀態。?
If?Request.Form("btnSubmit")?=?""?Then?
????LoadXMLFile?Server.MapPath(
"UserData.xml"),Server.MapPath("UserData.xsl")?
Else?
????UpdateXML?Server.MapPath(
"UserData.xml")?
End?If
%
>
當表單提交成功后,我們用UpdatedUserData.xsl來顯示我們剛剛編輯的數據。

UpdatedUserData.xsl如下:

<?xml?version="1.0"?encoding="gb2312"?>
<!--?edited?with?XMLSPY?v2004?rel.?4?U?(http://www.xmlspy.com)?by?Dicky?(Apple'S?Eden)?-->
<xsl:stylesheet?xmlns:xsl="http://www.w3.org/TR/WD-xsl">
????
<xsl:template?match="/">
????????
<html>
????????????
<meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312"/>
????????????
<body>
????????????????
<h1>Updated?UserInfo:</h1>
????????????????
<table?border="1"?cellpadding="2">
????????????????????
<xsl:for-each?select="UserInfo/Field">
????????????????????????
<tr>
????????????????????????????
<td>
????????????????????????????????
<xsl:value-of?select="@ID"/>
????????????????????????????
</td>
????????????????????????????
<td>
????????????????????????????????
<xsl:value-of?select="FieldValue"/>
????????????????????????????
</td>
????????????????????????
</tr>
????????????????????
</xsl:for-each>
????????????????
</table>
????????????????
<form>
????????????????????
<input?type="button"?value="Go?Back"?onclick="history.go(-1)"/>
????????????????
</form>
????????????
</body>
????????
</html>
????
</xsl:template>
</xsl:stylesheet>
以上只是XML跨平臺應用的一個簡單的例子,結合具體的需求,我們可以編寫功能更強大的程序來完成我們更負雜的工作。所有程序在Windows 2003 En+IIS 6.0+IE6.0+MSXML3.Dll環境下調試通過。

轉載于:https://www.cnblogs.com/Dicky/archive/2005/03/24/125173.html

總結

以上是生活随笔為你收集整理的利用XSL和ASP在线编辑XML文档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。