起首,载入我们要举行编辑的XML文档,应用微软的文档对象模子(Microsoft XMLDOM Object)和XSL,XML文档就能够在服务器端转换成能够在客户端显现的HTML文件内容。下面先看看我们运用的XML和XSL文件是什么模样的。
XML文件: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>中国网络技术生长公司北京分公司</field_value> </field> <field id="细致地点" taborder="4"> <field_value>北京市嘉里中间102层</field_value> </field> <field id="电话" taborder="5"> <field_value>1391139136*</field_value> </field> <field id="电子邮件" taborder="6"> <field_value>amxh@21cn.com</field_value> </field> </用户材料> XSL文件:userdata.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> <form method="post" action="Edituserdata.asp"> <h1>用户材料编辑:</h1> <table border="1" cellpadding="2"> <xsl:for-each select="用户材料/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="field_value" /> </xsl:attribute></input> </td> </tr> </xsl:for-each> </table> <br /> <input type="submit" id="btnSubmit" name="btnSubmit" value="完成编辑" /> </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) & "']/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>
以上就是运用XSL和ASP在线编辑XML文档的代码详解的细致内容,更多请关注ki4网别的相干文章!