Edit XML XSLT
- 上一页 XSLT 在服务器端
- 下一页 Contoh XSLT
Data yang disimpan di berkas XML dapat disunting melalui penyemprot internet.
Buka, sunting, dan simpan XML
Sekarang, kami akan menunjukkan bagaimana membuka, menyunting, dan menyimpan berkas XML yang disimpan di server.
Kami akan menggunakan XSL untuk mengkonversi dokumen XML ke formulir HTML. Nilai elemen XML akan ditulis ke domain input HTML formulir. Formulir ini dapat diedit. Setelah disunting, data akan disubmit kembali ke server, dan berkas XML akan diperbarui (bagian ini diselenggarakan oleh ASP).
Fail XML dan fail 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>
Berikutnya, lihat skema di bawah ("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>Information 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>
Failsya XSL ini akan keliling keluar elemen dalam fail XML dan akan cipta ruang input bagi setiap elemen "field" XML. Nama ciri id bagi elemen field akan ditambah ke setiap ciri id dan name bagi ruang input HTML. Nama nilai bagi elemen "value" akan ditambah ke setiap ciri "value" bagi ruang input HTML. Hasilnya, boleh dapat form HTML yang boleh diedit yang mengandungi nilai dalam fail XML.
kemudian, kami juga ada laporan gaya kedua: "tool_updated.xsl". Fail XSL ini akan digunakan untuk menunjukkan data XML yang telah diubah. Laporan gaya ini tidak akan mengeluarkan form HTML boleh diubah, tetapi adalah sebuah jadwal HTML statik:
<?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>
Fail ASP
Dalam fail "tool.xsl" tindakan HTML form atribut nilai adalah "edittool.asp".
"edittool.asp" laman halaman mengandungi dua fungsi: loadFile() memuat dan pindah fail XML, updateFile() fungsi mengemaskini fail XML:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc memuat fail XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) muat fail XSL set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) pindah suai fail Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i memuat fail XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) tetapkan rootEl kepada elemen utama Set rootEl = xmlDoc.documentElement mengulangi setiap borang for i = 1 To Request.Form.Count buang elemen butang dalam borang if instr(1,Request.Form.Key(i),"btn_")=0 then metoden selectSingleNode boleh mencari satu titik dalam fail XML yang padan kepada kawalan carian pencarian ini akan meminta elemen value, elemen value ini adalah anak elemen field dan elemen field ini mempunyai atribut id yang boleh dipadankan dengan nilai kawasan dalam borang jika ada yang padan, maka tetapkan atribut text untuk nilai kawasan yang sekarang dalam borang set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next simpan fail XML yang telah diubah xmlDoc.save xmlfile melepaskan semua rujukan objek set xmlDoc=nothing set rootEl=nothing set f=nothing melalui sejenis imej gaya memuat fail XML yang telah diubah, supaya klien dapat lihat maklumat yang diedit loadFile xmlfile,server.MapPath("tool_updated.xsl") end function jika borang telah disumbang, maka kemas kini fail XML dan tunjukkan hasil, jika belum disumbang, maka tarik balik fail 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