Latest web development tutorials

XSLT - XML ​​Editor

Les données stockées dans le fichier XML peuvent être édités via le navigateur Internet.


Ouvrir, modifier et enregistrer XML

Maintenant, nous allons vous montrer comment ouvrir, modifier et enregistrer des fichiers XML stockés sur le serveur.

Nous allons utiliser XML document XSL dans un formulaire HTML. la valeur de XML élément sera écrit dans les champs de saisie de formulaire HTML HTML. Ce formulaire HTML est modifiable. Après avoir été modifié, les données seront soumises au serveur, les fichiers XML sont mis à jour (cette partie est faite par ASP).


documents XML et les fichiers XSL

D'abord, regardez le document XML qui sera utilisé ( "tool.xml"):

<?xml version="1.0" encoding="ISO-8859-1"?>
<tool>
<field id="prodName">
<value>HAMMER HG2606</value>
</field>
<field id="prodNo">
<value>32456240</value>
</field>
<field id="price">
<value>$30.00</value>
</field>
</tool>

Voir le fichier XML .

Ensuite, envisager la feuille suivante de style ( "de tool.xsl"):

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<form method="post" action="edittool.html">
<h2>Tool Information (edit):</h2>
<table border="0">
<xsl:for-each select="tool/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="value" />
</xsl:attribute>
</input>
</td>
</tr>
</xsl:for-each>
</table>
<br />
<input type="submit" id="btn_sub" name="btn_sub" value="Submit" />
<input type="reset" id="btn_res" name="btn_res" value="Reset" />
</form>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

Voir le fichier XSL .

Le fichier XSL ci-dessus en boucle à travers les éléments dans le fichier XML, et crée un champ de saisie pour chaque XML "terrain" éléments. Valeur élément attribut "id" de XML "champ" est ajouté à la "id" et "name" de chaque champ d'entrée de HTML. La valeur de chaque élément XML "valeur" est ajouté à la "valeur" attribut de chaque champ de saisie HTML. Par conséquent, vous pouvez obtenir la valeur d'un fichier XML qui contient le formulaire HTML peut être modifié.

Ensuite, nous avons la deuxième stylesheet: "tool_updated.xsl". Ce fichier XSL sera utilisé pour afficher les données XML mises à jour. Cette feuille de style ne sera pas sous forme de HTML modifiable sortie, mais une table HTML statique:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<h2>Updated Tool Information:</h2>
<table border="1">
<xsl:for-each select="tool/field">
<tr>
<td><xsl:value-of select="@id" /></td>
<td><xsl:value-of select="value" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

Voir le fichier XSL .


fichier ASP

Dans le fichier "tool.xsl" ci-dessus, la valeur de l'attribut action du formulaire HTML est "edittool.asp".

page "Edittool.asp" contient deux fonctions: loadFile () des charges de fonction et transforme le fichier XML, updateFile () fonction met à jour le fichier XML:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
'Load XML file
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
'Load XSL file
set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
xslDoc.async = false
xslDoc.load(xslfile)
'Transform file
Response.Write(xmlDoc.transformNode(xslDoc))
end function

function updateFile(xmlfile)
Dim xmlDoc,rootEl,f
Dim i
'Load XML file
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)

'Set the rootEl variable equal to the root element
Set rootEl = xmlDoc.documentElement

'Loop through the form collection
for i = 1 To Request.Form.Count
'Eliminate button elements in the form
if instr(1,Request.Form.Key(i),"btn_")=0 then
'The selectSingleNode method queries the XML file for a single node
'that matches a query. This query requests the value element that is
'the child of a field element that has an id attribute which matches
'the current key value in the Form Collection. When there is a match -
'set the text property equal to the value of the current field in the
'Form Collection.
set f = rootEl.selectSingleNode("field[@id='" & _
Request.Form.Key(i) & "']/value")
f.Text = Request.Form(i)
end if
next

'Save the modified XML file
xmlDoc.save xmlfile

'Release all object references
set xmlDoc=nothing
set rootEl=nothing
set f=nothing

'Load the modified XML file with a style sheet that
'allows the client to see the edited information
loadFile xmlfile,server.MapPath("tool_updated.xsl")
end function

'If the form has been submitted update the
'XML file and display result - if not,
'transform the XML file for editing
if Request.Form("btn_sub")="" then
loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl")
else
updateFile server.MapPath("tool.xml")
end if
%>

Astuce: Si vous ne savez pas comment écrire ASP, s'il vous plaît étudier notre tutoriel ASP .

NOTE: Nous sommes situés sur le serveur et met à jour la conversion de documents XML.Ceci est une solution multi-plateforme. Le client ne peut être obtenu à partir du serveur HTML retourné - HTML et peut fonctionner sur tous les navigateurs.