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 mises à jour côté serveur. ASP (Active Server Pages) est utilisé ici pour accomplir nos tâches.
Tout d'abord, chargez le document XML que vous souhaitez modifier. À l'aide du modèle d'objet de document de Microsoft (objet Microsoft XMLDOM) et de XSL, le document XML peut être converti côté serveur en contenu de fichier HTML pouvant être affiché côté client. Voyons d'abord à quoi ressemblent les fichiers XML et XSL que nous utilisons.
Fichier XML : UserData.xml
<?xml version="1.0" encoding="gb2312"?>
<!-- édité avec XMLSPY v2004 rel. 4 U ( http://www.xmlspy.com ) par Dicky (Apple'S Eden) -->
<Infoutilisateur>
<ID de champ="Nom" TabOrder="1">
<FieldValue>Dicky</FieldValue>
</Champ>
<Field ID="Sexe" TabOrder="2">
<FieldValue>Homme</FieldValue>
</Champ>
<ID de champ="NomUnit" TabOrder="3">
<FieldValue>Société Shanghai Ateam</FieldValue>
</Champ>
<ID de champ="Adresse" TabOrder="4">
<FieldValue>ShangHai, ZhongShan West Road 1800#, salle 26A</FieldValue>
</Champ>
<ID de champ="Tél" TabOrder="5">
<FieldValue>13800138000</FieldValue>
</Champ>
<ID de champ="EMail" TabOrder="6">
<FieldValue>[email protected]</FieldValue>
</Champ>
</UserInfo>
Fichier XSL : UserData.xsl
<?xml version="1.0" encoding="gb2312"?>
<!-- édité avec XMLSPY v2004 rel. 4 U ( http://www.xmlspy.com ) par Dicky (Apple'S Eden) -->
<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"/>
<corps>
<form method="post" action="EditUserData.asp">
<h1>Modifier les informations utilisateur :</h1>
<table border="1" cellpadding="2">
<xsl:for-each select="UserInfo/Field">
<tr>
<td>
<xsl:value-of select="@ID"/>
</td>
<td>
<type d'entrée="texte">
<xsl:attribute name="ID"><xsl:value-of select="@ID"/></xsl:attribute>
<xsl:attribute name="Nom"><xsl:value-of select="@ID"/></xsl:attribute>
<xsl:attribute name="Value"><xsl:value-of select="FieldValue"/></xsl:attribute>
</entrée>
</td>
</tr>
</xsl:pour-chacun>
</table>
<br/>
<input type="submit" id="btnSubmit" name="btnSubmit" value="Edit"/>
</form>
</corps>
</html>
</xsl:modèle>
</xsl:stylesheet>
Le fichier XSL 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 ainsi que "id" et "id" du fichier. zone de saisie de texte du nom du formulaire HTML" correspond à. De cette manière, 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 côté serveur des documents XML afin qu'ils puissent être affichés sur différents navigateurs.
Voici le programme clé, qui implémente la fonction d'ouverture et de mise à jour des documents XML, et décide de mettre à jour selon que le formulaire est soumis ou non. Il contient deux fonctions, loadXMLFile est responsable du chargement et de la conversion du fichier XML à afficher ; la fonction updateXML est responsable de la mise à jour du fichier XML.
Le programme EditUserData.asp est le suivant :
<%
'------------------------------------------------ - ---------
'Définissez la fonction LoadXMLFile(), qui reçoit deux paramètres :
'strXMLFile - Le chemin et le nom du fichier XML 'strXSLFilee - Le chemin et le nom du fichier XSL'------------------------------ ------- ----------------------------------
Fonction LoadXMLFile(strXMLFile, strXSLFile)
'Déclarer les variables locales
Faible objXML
Dim objXSL
'Instanciez l'objet XMLDOM pour charger le fichier XML.
Définir objXML = Server.CreateObject("Microsoft.XMLDOM")
'Désactivez le mode de chargement asynchrone des fichiers.
objXML.Async = Faux
'Charger le fichier XML !
objXML.Load(strXMLFile)
'Instanciez l'objet XMLDOM pour charger le fichier XSL.
Définir objXSL = Server.CreateObject("Microsoft.XMLDOM")
'Désactivez le mode de chargement asynchrone des fichiers.
objXSL.Async = Faux
'Chargez le fichier XSL !
objXSL.Load(strXSLFile)
'Utilisez la méthode transformNode de XMLDOM pour appliquer la feuille de style XSL au document XML, puis l'envoyer au client.
Réponse.Write(objXML.TransFormNode(objXSL))
Fonction de fin
'------------------------------------------------ - -----------------
'La fonction updateXML() reçoit un paramètre : strXMLFile - le chemin et le nom du fichier XML.
'------------------------------------------------ - -----------------
Fonction UpdateXML(strXMLFile)
'Déclarez les variables locales.
Dim objDom
Faible objRoot
Dim objField
Dim x
'Instanciez l'objet XMLDOM.
Définir objDOM = Server.CreateObject("Microsoft.XMLDOM")
'Désactivez le mode de chargement asynchrone des fichiers.
objDom.Async = Faux
'Charger le fichier XML.
objDom.Load strXMLFile
'Définissez l'élément racine.
Définir objRoot = objDom.DocumentElement
'Parcourez la collection FORM et écrivez les données soumises dans le fichier XML.
Pour x = 1 À Request.Form.Count
'Vérifiez si les données soumises contiennent un bouton. Si tel est le cas, ignorez ces données.
Si Instr(1,Request.Form.Key(x),"btn") = 0 Alors
'Selon le mode de requête XSL, établissez la variable objField et mappez les éléments du formulaire aux éléments correspondants [field_value] dans le document XML.
Définir objField = objRoot.SelectSingleNode("Field[@ID='" & Request.Form.Key(x) & "']/FieldValue")
'Corrélez les données soumises par le formulaire avec les valeurs des nœudsdans le document XML.
objField.Text = Requête.Form(x)
Fin si
Suivant
'Enregistrez le fichier XML modifié.
objDom.Save strXMLFile
'Libérez toutes les références à l'objet.
Définir objDom = Rien
Définir objRoot = Rien
Définir objField = Rien
'Appelez la fonction LoadXMLFile pour afficher le fichier XML nouvellement modifié au client à l'aide de la feuille de style UpdatedUserData.xsl.
LoadXMLFile strXMLFile,Server.MapPath("UpdatedUserData.xsl")
End Function
'Vérifiez si le formulaire est soumis avec succès, s'il est soumis, mettez à jour le fichier XML, sinon passez à l'état d'édition.
Si Request.Form("btnSubmit") = "" Alors
LoadXMLFile Server.MapPath("UserData.xml"),Server.MapPath("UserData.xsl")
Autre
UpdateXML Server.MapPath("UserData.xml")
Fin si
%>
Lorsque le formulaire est soumis avec succès, nous utilisons UpdatedUserData.xsl pour afficher les données que nous venons de modifier.
UpdatedUserData.xsl est le suivant :
<?xml version="1.0" encoding="gb2312"?>
<!-- édité avec XMLSPY v2004 rel. 4 U ( http://www.xmlspy.com ) par Dicky (Apple'S Eden) -->
<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"/>
<corps>
<h1>Informations utilisateur mises à jour :</h1>
<table border="1" cellpadding="2">
<xsl:for-each select="UserInfo/Field">
<tr>
<td>
<xsl:value-of select="@ID"/>
</td>
<td>
<xsl:value-of select="FieldValue"/>
</td>
</tr>
</xsl:pour-chacun>
</table>
<formulaire>
<input type="button" value="Retourner" onclick="history.go(-1)"/>
</form>
</corps>
</html>
</xsl:modèle>
</xsl:stylesheet>
Ce qui précède n'est qu'un exemple simple d'application XML multiplateforme. En fonction de besoins spécifiques, nous pouvons écrire des programmes plus puissants pour accomplir notre travail plus complexe. Tous les programmes ont réussi le débogage sous l'environnement Windows 2003 En+IIS 6.0+IE6.0+MSXML3.Dll.