热点推荐:ASP.Net | ADO.Net | VB.Net | Web服务器 | Access | MSSQL | MySQL | Oracle | .Net控件 | Win 9x | Win 2000 | Win 2003 | DOS | Unix | 注册表 | 应用其它 | 安装调试 | 基本操作 | 使用技巧 | 系统优化 |故障处理 | 个性风格 | 病毒安全 | 专杀工具
您现在的位置: 中华IT技术网 >> 开发语言 >> XML/XSL >> 正文
全文
利用XSL和ASP检索和更新XML文件内容
作者:YuDi    文章来源:web    点击数:    更新时间:2007-8-8


  利用XML文件存储数据,可以实现真正的跨平台,给我们的数据实现不同平台的转换带来很大的便利。本文的例子向您展示了如何对XML文件进行数据添加、删除、修改的操作。为了叙述的方便,有时也把本例中的每个人的“个人资料”叫作记录。
  首先,我们列出XML文件的所有记录,然后,用服务器端的ASP程序和XSL样式单文件来把XML文件转换到HTML文件里,以便显示在任意浏览器里。
  现在假定有一个客户资料文件Userdata.xml如下:

<?xml version="1.0" encoding="gb2312"?>
<客户资料表>
<个人资料>
<field id="姓名" taborder="1">
<field_value>张三</field_value>
</field>
<field id="性别" taborder="2">
<field_value>男性</field_value>
</field>
<field id="地址" taborder="3">
<field_value>北京市第999号信箱</field_value>
</field>
<field id="邮政编码" taborder="4">
<field_value>100000</field_value>
</field>
<field id="电话" taborder="5">
<field_value>86-10-88886666</field_value>
</field>
<field id="电子邮件" taborder="6">
<field_value>zhangsan@examdomain.com</field_value>
</field>
</个人资料>
<个人资料>
<field id="姓名" taborder="1">
<field_value>李四</field_value>
</field>
<field id="性别" taborder="2">
<field_value>女性</field_value>
</field>
<field id="地址" taborder="3">
<field_value>上海市黄浦区1208号黄浦大厦A座11层</field_value>
</field>
<field id="邮政编码" taborder="4">
<field_value>200200</field_value>
</field>
<field id="电话" taborder="5">
<field_value>86-21-66668888</field_value>
</field>
<field id="电子邮件" taborder="6">
<field_value>lisi@examdomain.com</field_value>
</field>
</个人资料>
<个人资料>
<field id="姓名" taborder="1">
<field_value>杨过</field_value>
</field>
<field id="性别" taborder="2">
<field_value>男性</field_value>
</field>
<field id="地址" taborder="3">
<field_value>神雕侠侣桃花岛</field_value>
</field>
<field id="邮政编码" taborder="4">
<field_value>888888</field_value>
</field>
<field id="电话" taborder="5">
<field_value>800-810-8080</field_value>
</field>
<field id="电子邮件" taborder="6">
<field_value>yangguo@examdomain.com</field_value>
</field>
</个人资料>
<个人资料>
<field id="姓名" taborder="1">
<field_value>小龙女</field_value>
</field>
<field id="性别" taborder="2">
<field_value>女</field_value>
</field>
<field id="地址" taborder="3">
<field_value>神雕侠侣之古慕派</field_value>
</field>
<field id="邮政编码" taborder="4">
<field_value>999999</field_value>
</field>
<field id="电话" taborder="5">
<field_value>800-810-9090</field_value>
</field>
<field id="电子邮件" taborder="6">
<field_value>xiaolongnv@examdomain.com</field_value>
</field>
</个人资料>
</客户资料表>

  我们编写Userdata.xsl样式单文件如下:

<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body bgcolor="#0099ff">
<h1>客户资料?lt;/h1>
<table border="1" cellpadding="2">
<tr bgcolor="#ccccff">
<td align="center"><b>姓名</b></td>
<td align="center"><b>电子邮件</b></td>
</tr>
<xsl:for-each select="客户资料表/个人资料">
<tr>
<td>
<a><xsl:attribute name="href">Userdata.asp?mode=viewdetail&amp;email=<xsl:value-of select="field[@id=''电子邮件'']/field_value"/></xsl:attribute><xsl:value-of select="field[@id=''姓名'']/field_value"/></a>
</td>
<td><xsl:value-of select="field[@id=''电子邮件'']/field_value"/></td>
</tr>
</xsl:for-each>
</table>
<br />
<a href="addnewdata.htm">增加新记录</a>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

  XSL样式单文件遍历整个XML文件的内容,并借助HTML的table标记来显示它。这里允许浏览者可以通过点击客户姓名来查看该客户的详细资料,也可以添加新的客户信息。
  下面,我们编写Userdata.asp程序来完成XML文件转换,数据的浏览、修改、删除:

<%
''-------------------------------------------------------------------
''删除记录函数deleteDetail
''strXMLFile - 要载入的XML文件。
''strXSLFile - 显示XML文件的XSL样式单文件。
''strEMail - 要删除客户的电子邮件。
''-------------------------------------------------------------------
Function deleteDetail(strXMLFile, strXSLFile, strEMail)

Dim objDom
Dim objRoot
Dim objNode

set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = false
objXML.load strXMLFile
Set objRoot = objXML.documentElement
Set objNode = objRoot.SelectSingleNode("个人资料[field/field_value=''" & strEMail & "'']")
objRoot.removeChild(objNode)
objXML.save strXMLFile
loadXMLFile strXMLFile,strXSLFile

End Function

''-------------------------------------------------------------------
''更新记录函数updateDetail
''-------------------------------------------------------------------
Function updateDetail(strXMLFile, strXSLFile, strEMail)
''Declare local variables.
Dim objDom
Dim objRoot
Dim objContact
Dim objField
Dim strNewEMail

strNewEMail = Request.Form("电子邮件")
set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = false
objXML.load strXMLFile
Set objRoot = objXML.documentElement
Set objContact = objRoot.SelectSingleNode("个人资料[field/field_value=''" & strEMail & "'']")

For each objItem in Request.Form

Set objField = objContact.selectSingleNode("field[@id=''" & objItem & "'']/field_value")
objField.text = Request.Form(objItem)
Next

objXML.save strXMLFile
viewDetail strXMLFile, strXSLFile, strNewEMail

End Function

''-------------------------------------------------------------------
''显示个人详细资料函数viewDetail
''-------------------------------------------------------------------
Function viewDetail(strXMLFile, strXSLFile, strEMail)

Dim objXML
Dim objNode
Dim objXSL
set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = false
objXML.load(strXMLFile)
Set objNode = objXML.SelectSingleNode("客户资料表/个人资料[field/field_value=''" & strEMail & "'']")
set objXSL = Server.CreateObject("Microsoft.XMLDOM")
objXSL.async = false
objXSL.load(strXSLFile)
Response.Write(objNode.transformNode(objXSL))

End Function

''-------------------------------------------------------------------
''显示所有信息函数loadXMLFile
''-------------------------------------------------------------------
Function loadXMLFile(strXMLFile, strXSLFile)

Dim objXML
Dim objXSL
set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = false
objXML.load(strXMLFile)
set objXSL = Server.CreateObject("Microsoft.XMLDOM")
objXSL.async = false
objXSL.load(strXSLFile)
Response.Write(objXML.transformNode(objXSL))

End Function

Dim strMode
Dim strEMail

strMode = Request.QueryString("mode")
strEMail = Request.QueryString("email")

Select Case strMode
Case "viewdetail"
viewDetail server.MapPath("Userdata.xml"), server.MapPath("viewdetail.xsl"), strEMail
Case "editdetail"
viewDetail server.MapPath("Userdata.xml"), server.MapPath("editdetail.xsl"), strEMail
Case "updatedetail"
updateDetail server.MapPath("Userdata.xml"), server.MapPath("viewdetail.xsl"), strEMail
Case "deletedetail"
deleteDetail server.MapPath("Userdata.xml"), server.MapPath("Userdata.xsl"), strEMail
Case Else
loadXMLFile server.MapPath("Userdata.xml"), server.MapPath("Userdata.xsl")
End Select
%>

  我们可以利用下面的文件来完成新客户信息的输入,文件addnewdata.htm如下:

<html><head><title>客户信息输入</title></head>
<body bgcolor="#0099ff">
<form action="processAdd.asp" method="post">
<h3>请输入您的客户信息</h3>
姓  名: <input type="text" id="姓名" name="姓名"><br>
性  别: <input type="text" id="

[1] [2] 下一页

相关文章
最新更新
编辑推荐
热门图片
频道大全
文章阅读排行
周排行
月排行