Latest web development tutorials

XSLT - XML ​​Editor

Data disimpan dalam file XML dapat diedit melalui browser internet.


Terbuka, mengedit dan menyimpan XML

Sekarang, kami akan menunjukkan cara untuk membuka, mengedit, dan menyimpan file XML yang disimpan di server.

Kami akan menggunakan XML ke dokumen XSL menjadi bentuk HTML. Nilai XML elemen akan ditulis dalam kolom formulir masukan HTML HTML. form HTML ini dapat diedit. Setelah diedit, data akan diserahkan kembali ke server, file XML diperbarui (bagian ini dilakukan oleh ASP).


dokumen XML dan file XSL

Pertama, melihat dokumen XML yang akan digunakan ( "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>

Lihat file XML .

Selanjutnya, pertimbangkan style sheet berikut ( "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>

Lihat berkas XSL .

File XSL atas kehendak loop melalui unsur-unsur dalam file XML, dan menciptakan lapangan masukan untuk setiap XML "lapangan" elemen. Nilai "id" atribut XML "lapangan" elemen ditambahkan ke "id" dan "nama" atribut dari setiap field input HTML. Nilai dari setiap XML "nilai" elemen ditambahkan ke "nilai" atribut dari setiap field input HTML. Akibatnya, Anda bisa mendapatkan nilai dari file XML yang berisi bentuk HTML dapat diedit.

Kemudian, kita memiliki stylesheet kedua: "tool_updated.xsl". File XSL ini akan digunakan untuk menampilkan data XML yang diperbarui. style sheet ini tidak akan bentuk HTML diedit output, tetapi meja HTML statis:

<?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>

Lihat berkas XSL .


File ASP

Dalam contoh di atas "tool.xsl" file, nilai atribut aksi dari bentuk HTML adalah "edittool.asp".

"Edittool.asp" halaman berisi dua fungsi: loadfile () beban fungsi dan mengubah file XML, updateFile () fungsi update file 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
%>

Tip: Jika Anda tidak tahu bagaimana menulis ASP, silakan belajar kami tutorial ASP .

CATATAN: Kami berlokasi di server dan update konversi dokumen XML.Ini adalah solusi cross-platform. Klien hanya dapat diperoleh dari server kembali HTML - HTML dan dapat berjalan di browser apapun.