巧用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
  • asp之家 网络编程 m.aspxhome.com