巧用XSL和ASP在线编辑XML文档(2)
来源:爱问cpu 时间:2008-10-25 14:54:00
下面是关键的程序,它实现打开和更新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) & "']/field_value")
'把表单提交的数据和 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" ?>
<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>更新后的用户资料如下:</h1>
<table border="1" cellpadding="2">
<xsl:for-each select="用户资料/field">
<tr>
<td>
<xsl:value-of select="@id" />
</td>
<td>
<xsl:value-of select="field_value" />
</td>
</tr>
</xsl:for-each>
</table>
<form>
<input type="button" value="返回" onclick="history.go(-1)" />
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
以上只是XML跨平台应用的一个简单的例子,结合具体的需求,我们可以编写功能更强大的程序来完成我们更负杂的工作。所有程序在WIN98SE+PWS+IE5.5+Netscape 4.75+Netscape 6+MSXML3.DLL环境下调试通过。
标签:xsl,xml,文档,asp
0
投稿
猜你喜欢
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2024-06-05 09:39:16
使用IDEA回滚某次提交的代码步骤
2023-06-21 03:15:28
详解如何让Go语言中的反射加快
2024-05-28 15:36:52
配置Git并从GitHub上克隆项目
2023-03-13 12:38:16
Nodejs封装类似express框架的路由实例详解
2024-05-11 10:17:43
一文教会你如何运行vue项目
2024-05-28 15:54:33
基于keras输出中间层结果的2种实现方式
2023-10-11 16:05:49
一文详解go mod依赖管理详情
2023-07-13 04:35:06
从零开始做一个pagination分页组件
2024-04-29 13:25:13
微信小程序应用号开发教程详解
2022-07-05 00:34:50
使用Python对Dicom文件进行读取与写入的实现
2022-05-30 12:18:27
2行Python代码实现给pdf文件添加水印
2022-04-03 00:29:26
关于Python中 循环器 itertools的介绍
2023-11-23 02:48:21
通俗解释JavaScript正则表达式快速记忆
2024-04-22 22:24:04
如何使用Python Matplotlib绘制条形图
2023-09-21 04:41:46
学习 YUI3 中的沙箱机制
2010-04-12 12:52:00
php实现汉字验证码和算式验证码的方法
2024-06-07 15:50:15
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2022-12-28 05:44:11
Python实现字符串格式化的方法小结
2022-08-14 11:04:02
asp Driver和Provider两种连接字符串连接Access时的区别
2011-03-09 11:19:00