Maison  >  Article  >  développement back-end  >  Explication détaillée du code pour l'édition en ligne de documents XML à l'aide de XSL et ASP

Explication détaillée du code pour l'édition en ligne de documents XML à l'aide de XSL et ASP

黄舟
黄舟original
2017-03-28 17:05:591387parcourir

Cet article explique la méthode d'édition en ligne des données d'un document XML à travers un exemple détaillé. Étant donné que la prise en charge de XML par Netscape est relativement faible, pour réaliser un échange de données multiplateforme, le traitement des données doit être effectué côté serveur. Pour éditer un document XML, la première chose à faire est de savoir comment extraire et afficher les données aux visiteurs. XSL nous fournit une bonne solution pour afficher les fichiers XML. L'exemple suivant utilise une feuille de style XSL pour afficher un document XML que les utilisateurs peuvent modifier, puis soumet les données modifiées au serveur, où les données sont traitées côté serveur Mise à jour . Ici, nous utilisons ASP (Active Server Pages) pour effectuer nos tâches.

Tout d'abord, chargez le document XML que nous voulons éditer, et en utilisant le document Object Modèle de Microsoft (Microsoft XMLDOM Object) et XSL, le document XML peut être traité côté serveur Convertir en contenu de fichier HTML pouvant être affiché sur le client Voyons d'abord à quoi ressemblent les fichiers XML et XSL que nous utilisons

Fichier 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. Le fichier utilise l'élément XSL: for-each pour parcourir l'intégralité du fichier XML. L'attribut "id"

de chaque élément "field" dans le fichier XML et la zone de saisie de texte de. le Formulaire HTML "id" et "name" veulent correspondre. De cette façon, la zone de saisie de texte du formulaire HTML affiche la valeur de l'élément du fichier XML. Ce fichier est responsable de la conversion du document XML. côté serveur afin qu'il puisse être affiché sur différents navigateurs. >Ce qui suit est le programme clé, qui implémente la fonction d'ouverture et de mise à jour des documents XML, et décide s'il faut mettre à jour en fonction du fait que le formulaire est soumis. contient deux fonctions, loadXMLFile, qui est responsable du chargement et de la conversion des données à afficher ; la fonction updateXML est responsable de la mise à jour du fichier XML. Le programme

Edituserdata.asp est le suivant :

Lorsque le formulaire est soumis avec succès, nous utilisons updateuserdata.xsl pour afficher les données que nous venons de modifier

<%
&#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
%>
updateduserdata.xsl est le suivant :

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn