Edit XML dengan XSLT
- 上一页 XSLT 在服务器端
- 下一页 Contoh XSLT
Data yang disimpan di berkas XML dapat disunting melalui browser internet.
Buka, sunting, dan simpan XML
Sekarang, kami akan menunjukkan bagaimana cara membuka, menyunting, dan menyimpan berkas XML yang disimpan di server.
Kami akan menggunakan XSL untuk mengkonversi dokumen XML ke form HTML. Nilai elemen XML akan ditulis ke area input HTML form. Form ini dapat diedit. Setelah disunting, data akan disubmit kembali ke server, dan berkas XML akan diupdate (bagian ini diselenggarakan oleh ASP).
Berkas XML dan Berkas XSL
Awalnya, 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 Tool (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 ini akan mengulangi pengelompokan elemen dalam berkas XML dan membuat ruas input untuk setiap elemen "field" XML. Nilai atribut id elemen field ditambahkan ke atribut id dan name untuk setiap ruas HTML input. Nilai elemen "value" ditambahkan ke atribut "value" untuk setiap ruas HTML input. Akibatnya, dapat memperoleh formulir HTML yang dapat diedit yang mengandung nilai dari berkas XML.
Lalu, kami juga memiliki stylesheet kedua: "tool_updated.xsl". Berkas XSL ini akan digunakan untuk menampilkan data XML yang sudah diperbarui. Style sheet ini tidak akan mengeluarkan formulir HTML yang dapat diedit, tetapi 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
Dalam berkas "tool.xsl", nilai atribut action formulir HTML adalah "edittool.asp".
"edittool.asp" halaman mengandung dua fungsi: loadFile() untuk memuat dan merubah berkas XML, updateFile() fungsi untuk memperbarui berkas XML:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc memuat 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) Pemrosesan Berkas Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i memuat berkas XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) atur variabel rootEl menjadi elemen root Set rootEl = xmlDoc.documentElement berulang melalui kumpulan formulir for i = 1 To Request.Form.Count hilangkan elemen tombol di dalam formulir if instr(1,Request.Form.Key(i),"btn_")=0 then metode selectSingleNode dapat mencari node tunggal di berkas XML yang cocok dengan kueri permintaan ini akan meminta elemen value, elemen value ini adalah anak dari elemen field kemudian elemen field ini memiliki atribut id yang dapat dicocokkan dengan nilai key saat ini di dalam kumpulan formulir jika ada yang cocok, atur atribut text menjadi nilai domain saat ini di dalam kumpulan formulir set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next simpan berkas XML yang telah diubah xmlDoc.save xmlfile melepas referensi objek semua set xmlDoc=nothing set rootEl=nothing set f=nothing melalui suatu lembar gaya memuat berkas XML yang telah diubah, sehingga klien dapat melihat informasi yang diedit loadFile xmlfile,server.MapPath("tool_updated.xsl") end function jika formulir telah disubmit, maka perbarui berkas XML dan tampilkan hasilnya, jika belum disubmit, maka 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 %>
提示:假如您不了解如何编写 ASP,请学习我们的《ASP 教程》
注释:我们正在转换并更新位于服务器上的 XML 文件。这是一个跨平台的解决方案。客户端仅能获得从服务器返回的 HTML - 而 HTML 可运行于任何浏览器。
- 上一页 XSLT 在服务器端
- 下一页 Contoh XSLT