Contoh website terstruktur JSP+XML
Penulis:Eve Cole
Waktu Pembaruan:2009-07-02 17:11:58
XML (Extensible Markup Language) mungkin terlihat seperti standar W3C - dampak praktisnya saat ini kecil, dan jika nanti berguna, itu akan memakan waktu lama. Namun nyatanya sudah digunakan. Jadi, jangan menunggu hingga XML ditambahkan ke editor HTML favorit Anda untuk mulai menggunakannya. Dapat menyelesaikan berbagai masalah internal dan masalah sistem B2B saat ini.
Di Sparks.com, kami menggunakan XML untuk membakukan representasi data di berbagai sistem, mulai dari objek Java hingga tampilan data HTML.
Secara khusus, kami menemukan bahwa data dapat dibagikan dan dimanipulasi dengan lebih mudah bila distandarisasi pada struktur XML yang sangat dasar. Sepanjang perjalanan, kami menemukan banyak cara efektif untuk menggunakan XML. Berikut ini menjelaskan aplikasi kami saat ini secara rinci.
Standarisasi Sebelum menggunakan XML, buatlah format data XML yang berbeda dengan informasi yang ingin Anda gunakan.
Hasilkan XML dinamis
Menghasilkan HTML dari database bukanlah hal baru, tetapi menghasilkan XML adalah hal baru. Di sini kami memperkenalkan langkah-langkah pembuatan spesifik.
Menggunakan XSL sebagai bahasa templat
XSL (Extensible Stylesheet Language) adalah cara yang baik untuk menentukan format tampilan data XML, dan akan lebih efisien jika ditulis sebagai beberapa templat statis.
Hasilkan HTML
XML ditambah XSL sama dengan HTML. Ini mungkin kedengarannya tidak benar, tetapi halaman HTML kami yang dilihat pengguna sebenarnya adalah hasil kombinasi XML dan XSL.
1. Standardisasi
Kekuatan XML berasal dari fleksibilitasnya. Namun sayangnya, terkadang hal ini sangat fleksibel sehingga Anda hanya memiliki halaman kosong yang bertanya-tanya bagaimana cara mengatasi masalah tersebut.
Dalam proyek XML apa pun, langkah pertama adalah membuat format data standar. Untuk melakukan ini, Anda perlu membuat keputusan berikut:
&&&
Konfirmasikan datanya:
Karena tidak ada format XML standar, pengembang bebas mengembangkan formatnya sendiri. Namun jika format Anda hanya dikenali oleh satu aplikasi, maka Anda hanya dapat menjalankan aplikasi tersebut untuk menggunakan format tersebut. Jelas akan lebih membantu jika ada program lain yang juga bisa membaca format XML Anda. Jika format XML diubah, sistem yang menggunakannya mungkin juga perlu dimodifikasi, jadi sebaiknya buat formatnya selengkap mungkin. Karena sebagian besar sistem mengabaikan tag yang tidak mereka kenali, cara teraman untuk mengubah format XML adalah dengan menambahkan tag, bukan memodifikasinya.
Klik di sini untuk melihat contoh format data XML
Di Sparks.com, kami melihat semua data produk yang diperlukan untuk presentasi produk yang berbeda. Meskipun tidak semua halaman menggunakan semua data, kami telah mengembangkan format data XML yang sangat lengkap dan cocok untuk semua data. Misalnya, halaman detail produk kami menampilkan lebih banyak data daripada halaman penelusuran produk kami. Namun, kami masih menggunakan format data yang sama dalam kedua kasus karena templat XSL setiap halaman hanya menggunakan bidang yang diperlukan.
Apakah akan menggunakan DTD
Di Sparks.com kami menggunakan XML yang terorganisir dengan baik, bukan hanya XML yang benar, karena XML yang benar tidak memerlukan DTD. DTD menambahkan lapisan pemrosesan antara pengguna mengklik dan melihat halaman. Kami menemukan lapisan ini memerlukan terlalu banyak pemrosesan. Tentu saja, tetap menyenangkan menggunakan DTD saat berkomunikasi dengan perusahaan lain dalam format XML. Karena DTD dapat memastikan struktur data sudah benar saat mengirim dan menerima.
Memilih Mesin Parsing Saat ini ada beberapa mesin parsing yang bisa digunakan. Yang mana yang Anda pilih hampir seluruhnya bergantung pada kebutuhan aplikasi Anda. Jika Anda memutuskan untuk menggunakan DTD, mesin parsing harus mengaktifkan XML Anda untuk divalidasi oleh DTD. Anda dapat memasukkan validasi ke dalam proses terpisah, namun hal itu akan memengaruhi kinerja.
SAX dan DOM adalah dua model parsing dasar. SAX berbasis peristiwa, jadi ketika XML diurai, peristiwa dikirim ke mesin. Selanjutnya, acara disinkronkan dengan file keluaran. Mesin pengurai DOM membuat struktur pohon hierarki untuk data XML dinamis dan lembar gaya XSL. Dengan mengakses pohon DOM secara acak, data XML dapat disediakan seolah-olah ditentukan oleh stylesheet XSL. Perdebatan mengenai model SAX terutama berfokus pada pengurangan memori yang berlebihan pada struktur DOM dan percepatan waktu penguraian style sheet XSL.
Namun, kami menemukan bahwa banyak sistem yang menggunakan SAX tidak menggunakannya secara maksimal. Sistem ini menggunakannya untuk membangun struktur DOM dan mengirimkan peristiwa melalui struktur DOM. Dengan pendekatan ini, DOM harus dibuat dari stylesheet sebelum pemrosesan XML apa pun, sehingga kinerja akan menurun.
2. Hasilkan XML dinamis
Setelah format XML dibuat, kita memerlukan cara untuk memindahkannya secara dinamis dari database.
Pembuatan dokumen XML relatif sederhana karena hanya memerlukan sistem yang mampu menangani string. Kami membangun sistem menggunakan Java Servlets, server Enterprise JavaBean, JDBC dan RDBMS (sistem manajemen basis data relasional).
&&&&
(Untuk informasi tambahan tentang penerapan XSL, lihat XSL sebagai Bahasa Templat.)
Contoh Pembuatan XML Kode sebenarnya untuk membuat docstring XML di Java dapat dibagi menjadi beberapa metode dan kelas.
Kode yang memulai proses pembuatan XML ditempatkan dalam metode EJB. Contoh ini segera membuat StringBuffer untuk menyimpan string XML yang dihasilkan.
StringBuffer xml = StringBuffer baru();
xml.append(XmlUtils.beginDocument("/browse_find/browse.xsl", "browse", permintaan));
xml.tambahkan(produk.toXml());
xml.append(XmlUtils.endDocument("jelajahi");
keluar.cetak(xml.toString());
Tiga variabel xml.append() berikut sendiri merupakan panggilan ke metode lain.
Menghasilkan File Header Metode tambahan pertama memanggil kelas XmlUtils untuk menghasilkan header file XML. Kode di Java Servlet kita adalah sebagai berikut:
String statis publik mulaiDocument (String stylesheet, halaman String)
{
StringBuffer xml = StringBuffer baru();
xml.tambahkan("<?xml versi="1.0"?> ")
.append("<?xml-stylesheet href="")
.append(stylesheet).append(""")
.append(" ketik ="teks/xsl"?> ");
xml.append("<").append(halaman).append("> ");
kembali xml.toString();
}
Kode ini menghasilkan header file XML. Tag <?xml> mendefinisikan file ini sebagai file XML yang mendukung versi 1.0. Baris kode kedua menunjuk ke lokasi style sheet yang benar untuk menampilkan data. Hal terakhir yang disertakan adalah tag tingkat item (<browse> dalam contoh ini). Di akhir file, hanya tag <browse> yang perlu ditutup.
<?xml version="1.0"?> <?xml-stylesheet href="/browse_find/browse.xsl" type="text/xsl"?> <browse>
Setelah mengisi informasi produk dan melengkapi header file, metode kontrol akan memanggil objek Java untuk menghasilkan XML-nya. Dalam contoh ini, objek produk dipanggil. Objek produk menggunakan dua metode untuk menghasilkan representasi XML-nya. Metode pertama toXML() membuat node produk dengan membuat tag <product> dan </product>. Ia kemudian memanggil internalXML(), yang menyediakan konten yang diperlukan untuk XML produk. internalXML() adalah serangkaian panggilan StringBuffer.append(). StringBuffer juga dikonversi menjadi string dan dikembalikan ke metode kontrol.
String publik keXml()
{
StringBuffer xml = new StringBuffer("<produk> ");
xml.tambahkan(internalXml());
xml.append("</produk> ");
kembali xml.toString();
}
String publik internalXml()
{
StringBuffer xml = baru
StringBuffer(" ")
.append(productType).append(" ");
xml.tambahkan(" ").tambahkan(idValue.trim())
.tambahkan(" ");
xml.append(" ").append(idName.trim())
.tambahkan(" ");
xml.append(" ").append(halaman.trim())
.tambahkan(" ");
Pang?
xml.append(" ").append(jumlah).append(" ");
xml.append(" ").append(vendor).append(" ");
xml.tambahkan(" ");
xml.append(" ").append(pubDesc).append(" ");
xml.append(" ").append(venDesc).append(" ";
Pang?
kembali xml.toString();
}
Terakhir, metode XMLUtils.endDocument() dipanggil setelah menutup file. Panggilan ini menutup tag XML (dalam hal ini) dan akhirnya melengkapi file XML terstruktur. Seluruh StringBuffer dari metode kontrol juga diubah menjadi string dan dikembalikan ke servlet yang menangani permintaan HTTP asli.
3. Gunakan XSL sebagai bahasa templat
Untuk mendapatkan output HTML, kami menggabungkan file XML yang dihasilkan dengan template XSL yang mengontrol bagaimana data XML direpresentasikan. Templat XSL kami terdiri dari tag XSL dan HTML yang diatur dengan cermat.
Mulai membuat template Awal template XSL kita terlihat mirip dengan kode berikut. Baris kode pertama diperlukan dan mendefinisikan file ini sebagai lembar gaya XSL. Atribut xmlns:xsl= mengacu pada namespace XML yang digunakan oleh file ini, dan atribut version= mendefinisikan nomor versi namespace. Di akhir file kita menutup tag.
Baris kode kedua yang dimulai dengan <xsl:template> menentukan pola template XSL. Atribut Match diperlukan dan di sini menunjuk ke tag XML <basketPage>. Di sistem kami, tag <basketPage> berisi tag <product>, yang memungkinkan templat XSL mengakses informasi produk yang tertanam dalam tag <product>. Sekali lagi kita harus menutup tag <xsl:template> di akhir file.
Selanjutnya, mari kita lihat HTML yang terorganisir dengan baik. Karena akan diproses oleh mesin pengurai XML, maka harus mematuhi semua aturan XML yang terorganisir dengan baik. Intinya, ini berarti bahwa semua tag pembuka harus memiliki tag penutup yang sesuai. Misalnya, tag <P> yang biasanya tidak tertutup harus ditutup dengan </P>.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
versi="1.0">
<xsl:templat pertandingan="Halaman Keranjang">
<html>
<kepala>
<title>Tas Belanja / Sesuaikan Jumlah</title>
</kepala>
<tubuh bgcolor="
</xsl:templat>
</xsl:lembar gaya>
Di dalam badan template, terdapat banyak tag XSL yang digunakan untuk memberikan logika untuk presentasi data. Dua tag yang umum digunakan dijelaskan di bawah.
Memilih
Tag <xsl:choose> mirip dengan awal struktur if-then-else dalam bahasa pemrograman tradisional. Di XSL, tag pilih menunjukkan bahwa di bagian tempat kode dimasukkan, penetapan akan memicu tindakan. Tag <xsl:when> dengan atribut yang ditetapkan mengikuti tag pilih. Jika penugasannya benar, konten antara tag pembuka dan penutup <xsl:when> akan digunakan. Jika penugasan salah, konten antara tag pembuka dan penutup <xsl:otherwise> digunakan. Seluruh bagian diakhiri dengan </xsl:choose>.
Dalam contoh ini, tag kapan memeriksa XML untuk tag kuantitas. Jika tag kuantitas berisi atribut error dengan nilai true, tag kuantitas akan menampilkan sel tabel yang tercantum di bawah. Jika nilai atribut tidak benar, XSL akan menampilkan konten di antara tag sebaliknya. Pada contoh di bawah ini, jika atribut error tidak benar, maka tidak akan ada yang ditampilkan.
<xsl:pilih>
<xsl:when test="kuantitas[@error='true']">
<td bgcolor="src=""/></td>
<td valign="top" bgcolor="<font face="Verdana, Arial" size="1" color="<b>*Stok tidak mencukupi. Jumlah Anda telah disesuaikan.</b></font>
</td>
</xsl:kapan>
<xsl:sebaliknya>
</xsl:sebaliknya>
</xsl:pilih>
Untuk masing-masing
Tag <xsl:for-each> dapat digunakan untuk menerapkan style sheet yang sama ke beberapa situasi data XML yang serupa. Bagi kami, serangkaian informasi produk dapat diambil dari database dan diformat secara seragam di halaman Web. Berikut ini contohnya:
<xsl:untuk setiap pilih="paket">
<xsl: apply-template pilih = "produk"/>
</xsl:untuk masing-masing>
Perulangan for-each dimulai ketika program menemukan label. Perulangan ini akan berakhir ketika program menemukan label. Setelah loop ini berjalan, templat ini akan diterapkan setiap kali label muncul.
4. Hasilkan HTML
Di masa depan, browser akan mengintegrasikan mesin parsing XML. Pada titik itu, Anda dapat mengirim file XML dan XSL langsung ke browser, dan browser menampilkan data XML sesuai dengan aturan yang tercantum dalam style sheet. Namun, hingga saat itu tiba, pengembang harus menciptakan kemampuan parsing di sistem sisi server mereka.
Di Sparks.com, kami telah mengintegrasikan parser XML ke dalam servlet Java. Parser ini menggunakan mekanisme yang disebut XSLT (XSL Transformation) untuk menambahkan data XML ke template XSL seperti yang ditentukan oleh tag XSL.
Ketika servlet Java kami menangani permintaan HTTP, servlet mengambil XML yang dihasilkan secara dinamis, yang kemudian diteruskan ke mesin parsing. Berdasarkan instruksi dalam file XML, mesin parsing mencari stylesheet XSL yang sesuai. Parser membuat file HTML dari struktur DOM, dan kemudian file ini dikirim ke pengguna yang membuat permintaan HTTP.
Jika Anda memilih untuk menggunakan model SAX, parser membaca sumber XML dan membuat peristiwa untuk setiap tag XML. Peristiwa sesuai dengan data XML, dan data tersebut pada akhirnya dimasukkan ke dalam style sheet sesuai dengan tag XSL.