XSLT - Edit XML
- Halaman Sebelumnya XSLT di Server-side
- Halaman Berikutnya Editor XSLT
Data yang disimpan di berkas XML dapat diedit melalui browser internet.
Buka, edit, dan simpan XML
Sekarang, kami akan menunjukkan bagaimana membuka, mengedit, dan menyimpan berkas XML yang disimpan di server.
Kami akan menunjukkan bagaimana menggunakan XSL untuk mengkonversi dokumen XML ke formulir HTML. Nilai elemen XML akan ditulis ke domain input HTML formulir. Formulir ini dapat diedit. Setelah diedit, data akan disubmit kembali ke server, dan berkas XML akan diperbarui (bagian ini diselesaikan oleh ASP).
Berkas XML dan Berkas XSL
Pertama, lihat 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>
Lanjutnya, lihat gaya tabel di bawah ini ("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.asp"> <h2>Informasi Alat (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>
Berkas XSL di atas akan mengulangi berbagai elemen di berkas XML dan membuat area input untuk setiap elemen "field" XML. Nilai atribut id elemen field ditambahkan ke atribut id dan name setiap area input HTML. Nilai elemen "value" ditambahkan ke atribut "value" setiap area input HTML. Akibatnya, dapat diobtain formulir HTML yang dapat diedit yang mengandung nilai dari berkas XML.
Lalu, kami punya style sheet kedua: "tool_updated.xsl". Berkas XSL ini akan digunakan untuk menampilkan data XML yang sudah diperbarui. Style sheet ini tidak mengeluarkan formulir HTML yang dapat diedit, tetapi sebuah tabel 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>Informasi Alat Diperbarui:</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>
Berkas ASP
Pada berkas "tool.xsl", nilai atribut action formulir HTML adalah "edittool.asp".
Halaman "edittool.asp" mengandung dua fungsi: loadFile() untuk memuat dan mengkonversi berkas XML, serta fungsi updateFile() untuk memperbarui berkas XML:
<%}} function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc Muat berkas XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) Muat berkas XSL set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) Konversi berkas Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i Muat berkas XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) Atur variabel rootEl menjadi elemen root Set rootEl = xmlDoc.documentElement Lakukan perulangan melalui kumpulan form for i = 1 To Request.Form.Count Buang elemen tombol di form if instr(1,Request.Form.Key(i),"btn_")=0 then Metode selectSingleNode dapat mencari node tunggal yang cocok dalam berkas XML yang mencocok Pencarian ini akan meminta elemen value, elemen value ini adalah anak elemen field Yang field element ini memiliki atribut id yang dapat cocok dengan nilai key saat ini di form Jika ada yang cocok, atur atribut text menjadi nilai域 yang saat ini di form set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next Simpan berkas XML yang diubah xmlDoc.save xmlfile Lepaskan semua referensi objek set xmlDoc=nothing set rootEl=nothing set f=nothing Melakukan pemuatan berkas XML yang diubah melalui stylesheet, sehingga klien dapat melihat informasi yang diedit loadFile xmlfile,server.MapPath("tool_updated.xsl") end function 'Jika formulir sudah disubmit, update berkas XML dan tampilkan hasilnya, jika belum disubmit, konversi berkas XML ini untuk diedit if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>
Petunjuk:Jika Anda tidak mengerti bagaimana menulis ASP, belajar dari <Panduan ASP》。
Keterangan:Kami sedang merubah dan memperbarui berkas XML yang berada di server. Ini adalah solusi yang berbasis platform. Klien hanya dapat memperoleh HTML yang dikembalikan dari server - dan HTML dapat dijalankan di setiap browser.
- Halaman Sebelumnya XSLT di Server-side
- Halaman Berikutnya Editor XSLT