>  기사  >  백엔드 개발  >  XSL 및 ASP를 사용한 XML 문서의 온라인 편집에 대한 자세한 코드 설명

XSL 및 ASP를 사용한 XML 문서의 온라인 편집에 대한 자세한 코드 설명

黄舟
黄舟원래의
2017-03-28 17:05:591441검색

이 글에서는 XML 문서 데이터를 온라인에서 편집하는 방법을 구체적인 예시를 통해 설명합니다. Netscape의 XML 지원은 상대적으로 약하기 때문에 플랫폼 간 데이터 교환을 달성하려면 데이터 처리가 서버 측에서 수행되어야 합니다. XML 문서를 편집하기 위해 가장 먼저 해야 할 일은 데이터를 추출하여 방문자에게 표시하는 방법입니다. XSL은 XML 파일을 표시하는 데 좋은 솔루션을 제공합니다. 다음 예에서는 XSL 스타일 시트를 사용하여 사용자가 편집할 수 있는 XML 문서를 표시한 다음 편집된 데이터를 서버에 제출합니다. 여기서 데이터는 서버 측 업데이트 . 여기서는 ASP(액티브 서버 페이지)를 사용하여 작업을 완료합니다.

먼저 편집하려는 XML 문서를 로드하고 Microsoft의 Document Object Model(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 파일에 있는 각 "필드" 요소의 "id" 속성 을 사용합니다. HTML 형식의 텍스트 입력란 "과 "이름"이 일치해야 합니다. 이렇게 하면 HTML 형식의 텍스트 입력 상자에 XML 파일의 요소 값이 표시됩니다. 이 파일은

다음은 XML 문서를 열고 업데이트하는 기능을 구현하고, 양식 여부에 따라 업데이트 여부를 결정하는 핵심 프로그램입니다. 여기에는 표시할 XML 파일을 로드하고 변환하는 두 가지 함수가 포함되어 있습니다.

Edituserdata.asp 프로그램은 다음과 같습니다. :

<%
&#39;-----------------------------------------------------------
&#39;定义函数 loadXMLFile(),接收二个参数:
&#39;strXMLFile - XML 文件的路径和文件名字
&#39;strXSLFilee - XSL 文件的路径和文件名字
&#39;-----------------------------------------------------------
Function loadXMLFile(strXMLFile, strXSLFile)
&#39;Declare local variables
Dim objXML
Dim objXSL
&#39;实例化 XMLDOM 对象,以便载入 XML 文件。
set objXML = Server.CreateObject("Microsoft.XMLDOM")
&#39;关掉文件异步载入模式。
objXML.async = false
&#39;载入 XML 文件!
objXML.load(strXMLFile)
&#39;实例化 XMLDOM 对象,以便载入 XSL 文件。
set objXSL = Server.CreateObject("Microsoft.XMLDOM")
&#39;关掉文件异步载入模式。
objXSL.async = false
&#39;载入 XSL 文件!
objXSL.load(strXSLFile)
&#39;利用 XMLDOM 的 transformNode 方法,把 XSL 样式表应用到 XML 文档,然后输出到客户端。
Response.Write(objXML.transformNode(objXSL))
End Function
&#39;------------------------------------------------------------------
&#39;函数 updateXML() 接收一个参数:strXMLFile - XML 文件的路径和文件名。
&#39;------------------------------------------------------------------
Function updateXML(strXMLFile)
&#39;声明局部变量。
Dim objDom
Dim objRoot
Dim objField
Dim x
&#39;实例化 XMLDOM 对象。
set objDOM = Server.CreateObject("Microsoft.XMLDOM")
&#39;关掉文件异步载入模式。
objDOM.async = false
&#39;载入 XML 文件。
objDOM.load strXMLFile
&#39;设定根元素。
Set objRoot = objDom.documentElement
&#39;遍历 FORM 集合,并把提交的数据写入 XML 文件。
For x = 1 to Request.Form.Count
&#39;检查提交的数据是否包含按钮。如果是,忽略此数据。
If instr(1,Request.Form.Key(x),"btn") = 0 Then
&#39;按照 XSL 查询模式,建立 objField 变量,把表单的元素对应到 XML 文档里的相应元素[field_value]。
Set objField = objRoot.selectSingleNode("field[@id=&#39;" & Request.Form.Key(x) & "&#39;]/field_value")
&#39;把表单提交的数据和 XML 文档里的节点值对应起来。
objField.Text = Request.Form(x)
End If
Next
&#39;保存编辑过的 XML 文件。
objDom.save strXMLFile
&#39;释放所有对对象的引用。
Set objDom = Nothing
Set objRoot = Nothing
Set objField = Nothing
&#39;调用 loadXMLFile 函数,把新编辑后的 XML 文件用 updateduserdata.xsl 样式单显示到客户端。
loadXMLFile strXMLFile,server.MapPath("updateduserdata.xsl")
End Function
&#39;检查表单是否成功提交,如提交,更新 XML 文件;否则,转到编辑状态。
If Request.Form("btnSubmit") = "" Then
loadXMLFile server.MapPath("userdata.xml"),server.MapPath("userdata.xsl")
Else
updateXML server.MapPath("userdata.xml")
End If
%>

양식이 성공적으로 제출되면 updateuserdata.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 문서의 온라인 편집에 대한 자세한 코드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.