Artikel ini menjelaskan metode pengeditan online data dokumen XML melalui contoh mendetail. Karena dukungan Netscape terhadap XML relatif lemah, untuk mencapai pertukaran data lintas platform, pemrosesan data harus dilakukan di sisi server. Untuk mengedit dokumen XML, hal pertama yang harus dilakukan adalah cara mengekstrak dan menampilkan data kepada pengunjung. XSL memberikan solusi yang baik bagi kita untuk menampilkan file XML. Contoh berikut menggunakan lembar gaya XSL untuk menampilkan dokumen XML untuk diedit pengguna, lalu mengirimkan data yang diedit ke server, tempat data diperbarui di sisi server. ASP (Halaman Server Aktif) digunakan di sini untuk menyelesaikan tugas kita.
Pertama, muat dokumen XML yang ingin kita edit. Menggunakan Model Objek Dokumen Microsoft (Microsoft XMLDOM Object) dan XSL, dokumen XML dapat diubah di sisi server menjadi konten file HTML yang dapat ditampilkan di sisi klien. Pertama mari kita lihat seperti apa file XML dan XSL yang kita gunakan.
Berkas XML: UserData.xml
<?xml version="1.0" coding="gb2312"?>
<!-- diedit dengan XMLSPY v2004 rel.4 U ( http://www.xmlspy.com ) oleh Dicky (Apple'S Eden) -->
<Info Pengguna>
<ID Bidang = "Nama" TabOrder = "1">
<FieldValue>Dicky</FieldValue>
</Bidang>
<ID Bidang="Jenis Kelamin" TabOrder="2">
<FieldValue>Laki-laki</FieldValue>
</Bidang>
<ID Bidang = "Nama Unit" TabOrder = "3">
<FieldValue>Perusahaan Tim Shanghai</FieldValue>
</Bidang>
<ID Bidang = "Alamat" TabOrder = "4">
<FieldValue>ShangHai, ZhongShan West Road 1800#, Kamar 26A</FieldValue>
</Bidang>
<ID Bidang="Tel" TabOrder="5">
<FieldValue>13800138000</FieldValue>
</Bidang>
<ID Bidang = "EMail" TabOrder = "6">
<FieldValue>[email protected]</FieldValue>
</Bidang>
</UserInfo>
File XSL: UserData.xsl
<?xml version="1.0" coding="gb2312"?>
<!-- diedit dengan XMLSPY v2004 rel.4 U ( http://www.xmlspy.com ) oleh Dicky (Apple'S Eden) -->
<xsl:stylesheet xmlns:xsl=" http://www.w3.org/TR/WD-xsl ">
<xsl:templat pertandingan="/">
<html>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312"/>
<tubuh>
<formulir metode="post" action="EditUserData.asp">
<h1>Edit Info Pengguna:</h1>
<tabel border="1" cellpadding="2">
<xsl:untuk setiap pilih="UserInfo/Field">
<tr>
<td>
<xsl:nilai-pilih="@ID"/>
</td>
<td>
<tipe masukan="teks">
<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="FieldValue"/></xsl:attribute>
</masukan>
</td>
</tr>
</xsl:untuk masing-masing>
</tabel>
<br/>
<input type="kirim" id="btnSubmit" name="btnSubmit" value="Edit"/>
</bentuk>
</tubuh>
</html>
</xsl:templat>
</xsl:stylesheet>
File XSL menggunakan XSL: untuk setiap elemen untuk melintasi seluruh file XML. Atribut "id" dari setiap elemen "bidang" dalam file XML dan "id" dan "id" dari kotak input teks dari nama formulir HTML" sesuai dengan. Dengan cara ini, kotak input teks dari formulir HTML menampilkan nilai elemen file XML. File ini bertanggung jawab untuk konversi dokumen XML di sisi server sehingga dapat ditampilkan di berbagai browser.
Berikut ini adalah program kuncinya, yang mengimplementasikan fungsi membuka dan memperbarui dokumen XML, dan memutuskan apakah akan memperbarui berdasarkan apakah formulir telah diserahkan atau tidak. Ini berisi dua fungsi, loadXMLFile bertanggung jawab untuk memuat dan mengonversi file XML yang akan ditampilkan; fungsi updateXML bertanggung jawab untuk memperbarui file XML.
Program EditUserData.asp adalah sebagai berikut:
<%
'------------------------------------------------ - ---------
'Tentukan fungsi LoadXMLFile(), yang menerima dua parameter:
'strXMLFile - Jalur dan nama file dari file XML 'strXSLFilee - Jalur dan nama file dari file XSL'------------------------- ----------------------------------------------------------------------
Fungsi LoadXMLFile(strXMLFile, strXSLFile)
'Deklarasikan variabel lokal
Redupkan objekXML
Redupkan objekXSL
'Instansiasi objek XMLDOM untuk memuat file XML.
Setel objXML = Server.CreateObject("Microsoft.XMLDOM")
'Matikan mode pemuatan asinkron file.
objXML.Async = Salah
'Muat berkas XML!
objXML.Muat(strXMLFile)
'Buat instance objek XMLDOM untuk memuat file XSL.
Setel objXSL = Server.CreateObject("Microsoft.XMLDOM")
'Matikan mode pemuatan asinkron file.
objXSL.Async = Salah
'Muat file XSL!
objXSL.Muat(strXSLFile)
'Gunakan metode transformNode XMLDOM untuk menerapkan lembar gaya XSL ke dokumen XML dan kemudian menampilkannya ke klien.
Respon.Tulis(objXML.TransFormNode(objXSL))
Fungsi Akhir
'------------------------------------------------ - -----------------
'Fungsi updateXML() menerima satu parameter: strXMLFile - jalur dan nama file dari file XML.
'------------------------------------------------ - -----------------
Fungsi PembaruanXML(strXMLFile)
'Deklarasikan variabel lokal.
ObjDom redup
Redupkan objRoot
Redupkan objekField
Redupkan x
'Instansiasi objek XMLDOM.
Setel objDOM = Server.CreateObject("Microsoft.XMLDOM")
'Matikan mode pemuatan asinkron file.
objDom.Async = Salah
'Muat file XML.
objDom.Muat strXMLFile
'Atur elemen root.
Setel objRoot = objDom.DocumentElement
'Jelajahi koleksi FORM dan tulis data yang dikirimkan ke file XML.
Untuk x = 1 Ke Request.Form.Count
'Periksa apakah data yang dikirimkan berisi tombol. Jika ya, abaikan data ini.
Jika Instr(1,Request.Form.Key(x),"btn") = 0 Maka
'Menurut mode kueri XSL, buat variabel objField dan petakan elemen formulir ke elemen terkait [field_value] dalam dokumen XML.
Setel objField = objRoot.SelectSingleNode("Field[@ID='" & Request.Form.Key(x) & "']/FieldValue")
'Hubungkan data yang dikirimkan oleh formulir dengan nilai simpul dalam dokumen XML.
objField.Teks = Permintaan.Formulir(x)
Akhiri Jika
Berikutnya
'Simpan file XML yang telah diedit.
objDom.Simpan strXMLFile
'Lepaskan semua referensi ke objek tersebut.
Setel objDom = Tidak Ada
Setel objRoot = Tidak Ada
Setel objField = Tidak Ada
'Panggil fungsi LoadXMLFile untuk menampilkan file XML yang baru diedit ke klien menggunakan style sheet UpdateUserData.xsl.
LoadXMLFile strXMLFile,Server.MapPath("UpdatedUserData.xsl")
Fungsi Akhir
'Periksa apakah formulir berhasil dikirimkan, jika dikirimkan, perbarui file XML; jika tidak, lanjutkan ke status pengeditan.
Jika Permintaan.Form("btnSubmit") = "" Lalu
LoadXMLFile Server.MapPath("UserData.xml"),Server.MapPath("UserData.xsl")
Kalau tidak
PerbaruiXML Server.MapPath("UserData.xml")
Akhiri Jika
%>
Ketika formulir berhasil dikirimkan, kami menggunakan UpdateUserData.xsl untuk menampilkan data yang baru saja kami edit.
DiperbaruiUserData.xsl adalah sebagai berikut:
<?xml version="1.0" coding="gb2312"?>
<!-- diedit dengan XMLSPY v2004 rel.4 U ( http://www.xmlspy.com ) oleh Dicky (Apple'S Eden) -->
<xsl:stylesheet xmlns:xsl=" http://www.w3.org/TR/WD-xsl ">
<xsl:templat pertandingan="/">
<html>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312"/>
<tubuh>
<h1>Info Pengguna yang Diperbarui:</h1>
<tabel border="1" cellpadding="2">
<xsl:untuk setiap pilih="UserInfo/Field">
<tr>
<td>
<xsl:nilai-pilih="@ID"/>
</td>
<td>
<xsl:nilai-dari pilih="Nilai Bidang"/>
</td>
</tr>
</xsl:untuk masing-masing>
</tabel>
<bentuk>
<input type="button" value="Kembali" onclick="history.go(-1)"/>
</bentuk>
</tubuh>
</html>
</xsl:templat>
</xsl:stylesheet>
Di atas hanyalah contoh sederhana penerapan XML lintas platform. Berdasarkan kebutuhan spesifik, kita dapat menulis program yang lebih canggih untuk menyelesaikan pekerjaan kita yang lebih kompleks. Semua program lolos debugging di lingkungan Windows 2003 En+IIS 6.0+IE6.0+MSXML3.Dll.