Pengeditan dokumen XML secara online menggunakan XSL dan ASP
Penulis:Eve Cole
Waktu Pembaruan:2009-06-23 16:38:26
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.
File XML: data pengguna.xml
<?xml versi="1.0" pengkodean="gb2312"?>
<Profil pengguna>
<bidang id="Nama" taborder="1">
<field_value>Mencius</field_value>
</bidang>
<bidang id="gender" taborder="2">
<field_value>Laki-laki</field_value>
</bidang>
<field id="Nama organisasi" taborder="3">
<field_value>Perusahaan Pengembangan Teknologi Jaringan China Cabang Beijing</field_value>
</bidang>
<field id="Alamat detail" taborder="4">
<field_value>Lantai 102, Kerry Center, Beijing</field_value>
</bidang>
<field id="Telepon" taborder="5">
<field_value>1391139136*</field_value>
</bidang>
<bidang id="email" taborder="6">
<field_value>[email protected]</field_value>
</bidang>
</profil pengguna>
'www.knowsky.com
File XSL: data pengguna.xsl
<?xml versi="1.0" pengkodean="gb2312" ?>
<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>Pengeditan profil pengguna:</h1>
<tabel border="1" cellpadding="2">
<xsl:untuk-setiap pilih="Profil/bidang pengguna">
<tr>
<td>
<xsl:nilai-dari pilih="@id"/>
</td>
<td>
<input type="text"> <xsl:attribute name="id"> <xsl:value-of select="@id" /> </xsl:attribute> <xsl:attribute name="name"><xsl :nilai-of select="@id" /></xsl:attribute> <xsl:attribute name="value"> <xsl:value-of select="field_value" /> </xsl:attribute></input >
</td>
</tr>
</xsl:untuk masing-masing>
</tabel>
<br />
<input type="submit" id="btnSubmit" name="btnSubmit" value="Selesai mengedit" />
</bentuk>
</tubuh>
</html>
</xsl:templat>
</xsl:lembar gaya>
File XSL menggunakan elemen XSL:for-each untuk melintasi seluruh file XML. Atribut "id" dari setiap elemen "bidang" dalam file XML sesuai dengan "id" dan "nama" dari kotak input teks dari file XML. bentuk HTML. 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
''www.knowsky.com
''------------------------------------------------ ----------
Fungsi memuatXMLFile(strXMLFile, strXSLFile)
''Deklarasikan variabel lokal
Redupkan objekXML
Redupkan objekXSL
'' Buat instance objek XMLDOM untuk memuat file XML.
atur objXML = Server.CreateObject("Microsoft.XMLDOM")
''Matikan mode pemuatan file asinkron.
objXML.async = salah
''Muat file XML!
objXML.beban(strXMLFile)
'' Buat instance objek XMLDOM untuk memuat file XSL.
atur objXSL = Server.CreateObject("Microsoft.XMLDOM")
''Matikan mode pemuatan file asinkron.
objXSL.async = salah
''Muat file XSL!
objXSL.beban(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.
''------------------------------------------------ ------------------------------
Pembaruan fungsiXML(strXMLFile)
''Deklarasikan variabel lokal.
ObjDom redup
Redupkan objRoot
Redupkan objekField
Redupkan x
'' Buat instance objek XMLDOM.
atur objDOM = Server.CreateObject("Microsoft.XMLDOM")
''Matikan mode pemuatan file asinkron.
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) & "'']/field_value")
'' Menyesuaikan 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 yang diperbaruiuserdata.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
perbarui server XML.MapPath("userdata.xml")
Akhiri Jika
%>
Ketika formulir berhasil dikirimkan, kami menggunakan updateuserdata.xsl untuk menampilkan data yang baru saja kami edit.
updateuserdata.xsl adalah sebagai berikut:
<?xml versi="1.0" pengkodean="gb2312" ?>
<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>Informasi pengguna yang diperbarui adalah sebagai berikut:</h1>
<tabel border="1" cellpadding="2">
<xsl:untuk-setiap pilih="Profil/bidang pengguna">
<tr>
<td>
<xsl:nilai-dari 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:lembar gaya>
Di atas hanyalah contoh sederhana aplikasi XML lintas platform Berdasarkan kebutuhan spesifik, kita dapat menulis program yang lebih kuat untuk menyelesaikan pekerjaan kita yang lebih kompleks. Semua program di-debug dan diteruskan di lingkungan WIN98SE+PWS+IE5.5+Netscape 4.75+Netscape 6+MSXML3.DLL.