Professional Documents
Culture Documents
SKRIPSI
98 / 120966 / TK / 22729
TUGAS AKHIR
Pembimbing I Pembimbing II
Teguh Bharata Adji, S.T., M.T., M.Eng. Ir. Marcus Nurtiantara Aji, M.T.
CINTA,
YANG MENCIPTAKAN KETULUSAN, KEJUJURAN,
KEBERANIAN, KEPERCAYAAN, DAN KESETIAAN
KEMULIAAN DAN KETINGGIAN DERAJAT KEMANUSIAAN,
YANG MUNCUL DARI FITRAH MANUSIA YANG DIGENGGAM
CINTA
Mempelajari sesuatu yang baru bagi saya tidaklah mudah. Namun justru
inilah yang membuat saya merasa tertantang dan tertarik. Skripsi ini merupakan
usaha saya untuk mempelajari, meneliti, serta menganalisa sesuatu yang belum
pernah saya pelajari sebelumnya di bangku kuliah, yaitu aplikasi web berbasis XML.
Banyak kendala yang saya hadapi dalam proses penyelesaian skripsi ini. Di antaranya
yang paling utama adalah belum populernya XML di komunitas akademik saya.
Sehingga, sulit bagi saya untuk mendapatkan referensi yang komprehensif tentang
XML, terutama dari orang-orang yang biasanya memberi petunjuk kepada saya
tentang bagaimana cara kerja sebuah sistem, software, atau bahasa pemrograman. Hal
ini karena saya selama ini lebih senang bertanya kepada orang, daripada membaca
buku. Namun beruntung ada internet. Di sana saya mendapatkan banyak referensi
tentang XML. Tentu saja saya harus bekerja lebih keras untuk menambah satu
Oleh karena itu, meski saya merasa masih banyak kekurangan dalam skripsi
ini, sudah sepantasnya saya mengucap syukur pada Allah swt yang telah mengijinkan
diskusi tentang konsep-konsep database dan sistem distance learning yang baik.
Kemudian setelah saya mendapatkan topik yang membuat saya tertarik, pengerjaan
skripsi mulai terfokus pada bulan September 2002. Tahap perancangan sistem dimulai
pada pertengahan bulan ini, sembari saya mencari dan mempelajari teknologi-
teknologi apa saja yang tepat untuk implementasinya. Akhirnya pada awal Desember
Tak lupa saya menyampaikan terima kasih kepada pihak-pihak yang telah
1. Bapak Teguh Bharata Adji, selaku dosen pembimbing pertama saya, atas
Sapto, Neki, Bustomi, Rozak, 3Feri, Owie, Broto, Yayuk, Firdhaus, Danang,
dan lain-lain yang tidak dapat saya sebutkan satu per satu. Terima kasih
semuanya.
6. Teman-teman AFS : Kiki, Oki, Fahim, Dilah, Kumala, Ully, Hesti, Yuni,
diberikan pada saya yang tak akan saya lupakan selama hidup, Insya Allah.
11. Bapak Yatman, Mbak Yani, dan seluruh pegawai TU Jurusan Teknik Elektro,
12. Pak Sis, Nuri, Simbah, Kang Sus, Slank, dan seluruh karyawan Jurusan
Kemudian, penulis memohon adanya saran dan kritik dari semua pihak untuk
tentang skripsi ini, agar di lain kesempatan penulis dapat berbuat yang lebih baik lagi.
Penulis juga mengharapkan bahwa skripsi ini dapat dikembangkan lebih lanjut oleh
mahasiswa atau pihak lain, karena penulis melihat bahwa teknologi XML yang
disampaikan dalam skripsi ini memilki potensi yang sangat besar. Penulis juga tak
segan untuk memberikan bantuan bila diperlukan dan semampu penulis, bila ada
Penulis
Motto …………………………………………iii
LAMPIRAN ………………………………...
BAB I
PENDAHULUAN
hampir seluruh dunia terjangkau internet. Padahal, pada mulanya internet hanya
jenis bahasa pemrograman berbasis web seperti PHP, ASP, Java Applet, JSP, dan lain-
lain. Meskipun banyak ragam bahasa pemrograman berbasis web, pada umumnya
sebuah revolusi penemuan karena dengannya kita dapat membuat data tampil dengan
dalam suatu website, masalah pengembangan dan reusability menjadi suatu hal yang
perlu diperhatikan. Kelemahan dari HTML adalah ia tidak bisa memisahkan antara
isi, yaitu data yang ingin ditampilkan, dengan style, yaitu dengan cara apa kita hendak
menampilkan data. Sehingga, suatu halaman web yang memuat banyak data dengan
disain yang kompleks akan terlihat sangat ruwet, sehingga menyulitkan bila kita ingin
mengembangkan dan memodifikasi halaman tersebut. Selain itu, HTML hanya bisa
ditampilkan melalui browser komputer. Ia tidak bisa ditampilkan di Personal Digital
eXtensible Markup Language (XML). XML mampu memisahkan antara data dengan
style dari suatu halaman dengan memanfaatkan teknologi XSL (eXtensible Stylesheet
Language). XML juga mampu bertindak sebagai suatu basis data sederhana yang
sanggup menerima query dan menampilkan sesuai dengan query. Di samping itu,
XML bukan merupakan bahasa yang vendor specific, artinya tidak terikat oleh suatu
Microsoft, dan Oracle. XML juga tidak memiliki tag-tag khusus yang hanya berlaku
pada satu browser namun tidak berlaku untuk browser yang lainnya seperti yang
terjadi pada HTML. Sifat ini membuat data yang ditulis dalam bentuk XML dapat
dipertukarkan dengan mudah dengan tetap menjaga integritas data, dari satu platform
software berbasis web beralih ke XML untuk menggantikan HTML, meskipun dalam
masa transisi kehadiran HTML masih sangat diperlukan, sehingga para developer
mengembangkan suatu bahasa markup kombinasi antara XML dan HTML yang
bernama XHTML.
Berdasar penemuan baru ini, yaitu XML, maka penulis berusaha menyelidiki
pada salah satu bagian dari sistem distance learning yang dirancang oleh tim
mahasiswa di bawah bimbingan Bapak Teguh Barata Adji, yaitu bagian pencarian
data.
1.2 Rumusan Masalah
struktur data dengan baik untuk fasilitas pencarian data pada sistem di
atas.
Dalam tugas akhir ini, pembahasan akan dibatasi dalam ruang lingkup sebagai
berikut :
1. Struktur data yang ada dirancang hanya untuk keperluan pencarian data
2. Fokus dari penelitian ini adalah pada satu bagian tertentu dari sistem
1. Membuat struktur data XML yang dapat digunakan sebagai sistem basis
BAB I PENDAHULUAN
Dalam bab ini dijelaskan tentang alasan pemilihan tema untuk penulisan
pencarian data dengan XML, XSL, dan Java pada sistem distance learning.
Pada bab ini juga dibahas batasan masalah dan tujuan yang ingin dicapai
Berbagai hal umum dan mendasar tentang sistem distance learning dan
PENDUKUNGNYA
Java, dan Jakarta Tomcat Servlet Container, dalam kaitannya dengan sistem
Dalam bab ini akan diuraikan cara kerja dari program aplikasi yang telah
Selain itu akan ditunjukkan juga contoh hasil eksekusi program beserta
LANDASAN TEORI
institusi pendidikan yang ternama di Indonesia sudah memiliki suatu jaringan global
yang terkoneksi dengan internet. Layanan yang diberikan adalah www, e-mail, dan
transfer file (FTP). Hal ini memberikan kontribusi yang besar bagi perkembangan
aplikasi berbasis web. Konsep pembelajaran jarak jauh yang lebih dikenal dengan
pengeteahuan baik dalam satu komunitas maupun komunitas yang lain sehingga akan
Sebagai bentuk dari perkembangan teknologi yang masih baru , maka dalam
internet maka pada tugas akhir ini dibuat sebuah sistem pembelajaran jarak jauh yang
terkomputerisasi dengan berbasis web, yang suatu saat nanti dapat menjadi kajian
Internet menjadi sebuah media informasi global yang sangat dinamis dan
adalah content pendidikan yang biasanya dibuat oleh institusi pendidikan seperti
Impilkasi dari hal tersebut adalah bagaimana mengelola isi dari situs yang
dibuat itu mampu memberikan informasi yang diharapkan baik dari segi kualitas
maupun kuantitas. Hal ini menjadi tantangan bagi para pembuat situs khususnya
tingkat kebenaran, dan kemutakhiran data. Penilaian ragam pelayanan ditinjau dari
penggunaan database adalah salah satu bentuk penyelesaian masalah. Database yang
memiliki kelengkapan tipe data dan tersedia di berbagai macam platform sistem
operasi akan menjadikan data-data yang beraneka ragam dapat disimpan dengan
tingkat kehandalan yang tinggi serta memiliki tingkat skalabilitas yang memadai.
efisien dan tersedia di berbagai lingkungan sistem operasi. Bila hal-hal di atas
tersebut telah dipenuhi maka akan tercipta sistem yang mempunyai kinerja yang
Sistem pembelajaran jarak jauh ini sudah diterapkan oleh dunia pendidikan di
luar negeri seperti universitas sebagai pendukung perkuliahan konvensional dan telah
dilaksanakan secara reguler. Kendala geografis dan waktu pun sudah tidak menjadi
masalah setelah terciptanya sistem pembelajaran jarak jauh ini. Materi perkulihan
seperti diktat, presentasi, soal-soal ujian, dan ringkasan dapat diberikan dalam format
yang sudah ditetapkan, seperti .doc(ms word), .ppt(ms powerpoint) sebagai media
presentasi, .pdf untuk diktat dan ringkasan. Dan, perlu pemodifikasian agar mampu
menampung materi dan informasi yang akan diberikan. Dalam disainnya diusahakan
yang ada dalam sistem tersebut , yaitu administrator, dosen, mahasiswa, dan guest
(tamu biasa). Kewenangan ini digunakan sebagai perlindungan data. Sehingga pada
nantinya akan dilakukan analisis kebutuhan untuk mendefinisikan use case sistem
dipasaran. MySQL sebagai salah satu produk database yang populer dikarenakan
pemrograman yang terintegrasi kuat dengan HTML. PHP adalah program yang
berbasis server side, sehingga akan memberikan jaminan keamanan data. Kita
mampu mengembangkan PHP dalam berbagai macam platform sistem operasi seperti
Windows, UNIX, Mac, dan Linux. Di samping menggunakan PHP dan MySQL,
dalam proyek ini juga akan diteliti kegunaan XML yang merupakan bahasa markup
jauh ini agar mampu mendukung komukiasi antara dosen dan mahasiswa. Discussion
board, web chat, calender, serta e-mail dapat diintergrasikan dalam sistem ini. Selain
yang berhubungan dengan akademis web site ini diberikan fasilitas game atau
permainan, sehingga mahasiswa akan merasa tidak bosan dan tertarik untuk
mengakses web ini. Untuk mendukung referensi perkuliahan jarak jauh ini maka
perpustakaan on-line mahasiswa dapat melihat referensi mata kuliah, tesis, tugas
berbasiskan web ini di Jurusan Teknik Elektro FT UGM diperlukan syarat mutlak
Sebenarnya Sistem pembelajaran jarak jauh ini tidak mengubah cara manusia belajar
(learn) tetapi ini lebih ke arah perubahan cara mengajar (educate). Untuk menjadikan
sistem pembelajaran jarak jauh ini menyerupai bentuk perkuliahan tradisional maka
perlu diperhatikan aspek-aspek non teknis terhadap aktivitas perkuliahan yang akan
terjadi.
Analisa dari sistem Web Based Training ini akan menjadi landasan bagi
perancangan sistem perkuliahan jarak jauh MTI Fakultas Teknik UGM. Karena
sistem ini menjadi sebuah team project, maka dalam tugas akhir ini akan lebih di
Banyak sekali sistem pembelajaran jarak jauh yang telah diterapkan, yang
pada dasarnya dapat dibagi dalam dua kategori : sistem berbasis video dan sistem
berbasis data. Sistem berbasis video mulai muncul tahun 1960-an dimana ketika itu
dalam kaset video dan diputer pada stasiun-stasiun televisi, sistem ini memiliki
jangkauan geografis yang cukup besar. Salah satu kelemahan sistem ini adalah
kurangnya interaksi dan komunikasi dua arah antara pengajar dan peserta.
Untuk sistem berbasis data dapat kita klasifikasikan dalam dua kategori :
melalui perangkat lunak ini, sudah tersedia layanan seperti electronic messaging, data
layanan-layanan standar seperti World Wide Web (WWW), File Transfer Protocol
(FTP), dan lain sebagainya yang berbasis pada protokol TCP/IP ( Transfer Control
Protocol/Internet Protocol).
Dengan kemajuan teknologi yang sudah ada sekarang ini, teknologi yang pada
awalnya masih terpisah dapat dijadikan satu kesatuan, kita dapat menemukan solusi
jaringan internet dengan terlebih dulu melakukan perubahan format video itu sendiri,
maka kita dapat memiliki sebuah sistem yang berbasis video, groupware, dalam
lunak yang ditempuh, terdiri atas analisis, perancangan, pengkodean dan pengujian.
• Analisis
Pada tahap ini dilakukan analisis terhadap masalah, diamana proses analisis
ini dapat dibagi dalam lima tahapan, yaitu (1) identifikasi masalah; (2)
evaluasi dan sintesa; (3) pemodelan; (4) spesifikasi; dan (5) review
dasar permasalahan. Pada tahapan evaluasi dan sintesa, analis harus dapat
yang diharapkan, analis mulai mensintesa satu atau lebih solusi. Data, fungsi
Selama tahap evaluasi dan sintesis, fokus utama analis adalah menjawab
pertanyaan “apa”. Data apa yang dihasilkan dan dibutuhkan oleh sistem,
fungsi apa yang harus dilakukan oleh sistem, interface apa yang akan dipakai,
Selama melakukan evaluasi dan sintesa, analis juga membuat model sistem
sebagai usaha untuk lebih memahami data dan control flow, fungsi proses,
perilaku sistem, dan isi informasi. Model yang dibuat analis ini menjadi
penjelasan fungsi dan perilaku detail sistem, kriteria validasi yang cocok, dan
• Perancangan
tujuan mendefinisikan proses atau sistem secara detail. Tujuan utama desainer
adalah menghasilkan model atau representasi sebuah entitas yang akan
dibangun.
baik hasil analisis dan disain yang dilakukan, maka proses pengkodean ini
• Pengujian
sistem bekerja dengan baik, dan mencari apakah masih ada kesalahan pada
sistem.
Pengujian atau testing software sangat penting untuk dilakukan. Pengujian ini
Metoda ini dilakukan oleh orang yang memahami cara kerja operasi
2.3.1 Database
kesulitan bagi pengelola web, juga kinerja server akan lambat. Untuk mengatasi
kesulitan di atas, akan lebih baik kalau server menggunakan database engine untuk
record-record table. Sebuah database dapat berisi tabel-tabel. Record adalah bagian
terkecil dari sebuah tabel. Saat ini banyak database engine yang tersedia dengan
kemampuan yang berbeda-beda seperti Oracle, MySQL, Sybase ASE, Microsoft SQL
Database
Table Table
…
… …
Record
Record
Record
Record
System (DBMS) konvensional seperti di atas (untuk selanjutnya disebut DBMS dalam
skripsi ini) merupakan metode terhandal dan teraman untuk saat ini, masih terdapat
beberapa kelemahan dari aspek pertukaran data yang disimpan. Pertukaran data di
hanya di dalam DBMS itu sendiri. Setelah data tersebut di-retrieve atau dipanggil,
data akan kehilangan sifat dan strukturnya. Contohnya dapat dilihat dari diagram
berikut :
Database Kuliah
Data mata kuliah : MTI 611 TI
Kode (character) : MTI 611 retrieve
Nama (character) : TI Wajib
Jenis (character) : Wajib
Semester (integer) : 1
Jumlah SKS (integer) : 3 3 1
Tujuan (character) : tujuanMK
tujuanMK
Data XML
Data mata kuliah :
Kode (character) : MTI 611 Kode (character) : MTI 611
Nama (character) : TI Nama (character) : TI
Jenis (character) : Wajib retrieve Jenis (character) : Wajib
Semester (integer) : 1 Semester (integer) : 1
Jumlah SKS (integer) : 3 Jumlah SKS (integer) : 3
Tujuan (character) : tujuanMK Tujuan (character) : tujuanMK
Gambar 2.4 Perbandingan proses pemanggilan data antara DBMS dan XML
Dari gambar di atas dapat dilihat bahwa dalam DBMS, data-data mata kuliah
tidak terintegrasi sebagai suatu data yang berkaitan satu sama lain begitu data-data
tersebut diambil dari DBMS. Hal ini tetntunya dapat dipecahkan dengan cara
pemrograman, misalkan memakai PHP, ASP, atau yang lain. Namun, cara ini tidaklah
membuat program deskripsi data setiap kali data ditransferkan. Selain itu, pada
umumnya tiap vendor DBMS menggunakan tipe data yang berbeda-beda untuk
SMALLINT. Sehingga terdapat kesulitan bila suatu data yang disimpan dalam Oracle
menjadi masalah yang besar. Padahal, di era information sharing sekarang ini, benar-
benar diperlukan suatu wahana penyimpanan dan pertukaran data yang bersifat
exchange.
dari tempat penyimpanan data. Sehingga, suatu data selalu dapat diketahui sifatnya
dan kaitannya dengan data yang lain. Misalkan dalam contoh di atas, kita dapat selalu
mengetahui bahwa data Kode berkaitan dengan data Tujuan karena keduanya berada
dalam satu struktur yang jelas. Hal ini dilakukan tanpa pengembang harus membuat
dalam aspek penyimpanan data. Dengan XML kita dapat melakukan perubahan
struktur data dengan mudah, antara lain dengan menggunakan XSLT. Hal ini
XSLT
Data XML
Data mata kuliah yang baru :
Kode (character) : MTI 611
Nama (character) : TI
Jenis (character) : Wajib
Semester (integer) : 1
Jumlah SKS (integer) : 3
Tujuan (character) : tujuanMK
Nama dosen : Fulan
XML. Dalam DBMS, untuk mengubah suatu struktur data kita harus merubah
deskripsi tabel, dan ini tentu membutuhkan usaha yang besar karena mengubah
deskripsi tabel berarti mengubah pula diagram Entity Relationship (E-R) dari
database yang bersangkutan. Apalagi bila yang diubah adalah tabel yang berperan
penting, tentunya dapat mengubah hampir seluruh deskripsi relasi dalam database
yang telah ditentukan sebelumnya. Untuk menjaga referential integrity dari database
terkemuka seperti Oracle, IBM, dan Microsoft mulai menyediakan fasilitas konversi
Seperti telah disebutkan di atas, penyimpanan data dalam bentuk file systems
memang tidak praktis dan banyak kekurangannya. Kekurangan yang paling menonjol
adalah redundancy data, yaitu terjadi pengulangan data yang sama pada tiap-tiap file
yang menyimpan data. Kekurangan ini membuat tingkat skalabilitas sistem menjadi
rendah, karena tiap kali kita ingin memodifikasi suatu data, maka file yang
mengandung data yang sama harus turut pula dimodifikasi. XML pada awal
berkembang dan banyak pihak melihat potensinya yang besar, maka banyak
a. Sistem Konversi
berkecimpung dalam dunia DBMS, seperti Oracle dan IBM. Cara kerja
konversi dari DBMS ke XML dan sebaliknya. Data yang disimpan dalam
Kelemahan dari sistem ini adalah beratnya kerja server ketika harus
dikonversi dari Oracle tentunya berbeda dengan data yang dikonversi dari
sistem ini adalah data masih tersimpan dalam sistem DBMS, sehingga
dimanfaatkan.
b. Database XML
Cara yang kedua adalah dengan menggunakan database XML. Istilah dalam hal ini
adalah native XML database. Sistem ini menyimpan file-file XML dalam bentuk
aslinya, jadi tidak dalam tabel dan record seperti pada cara yang pertama. Pada native
XML database file-file XML saling direlasikan seperti pada sistem basis data
relasional. Sistem ini memberikan tingkat kompatibilitas dan fleksibilitas yang lebih
tingi dari cara yang pertama. Namun, sampai sekarang belum ada vendor native XML
database yang mampu membuktikan kesetaraan database XML dengan DBMS dalam
Banyak situs internet mempunyai content dengan sifat statis, seperti profil
mengembangkan situs yang bersifat statis, kita cukup menggunakan teknologi client-
side. HTML dan Cascading Style Sheet (CSS) dapat digunakan untuk mengatur
maka dapat ditambahkan script yang sifatnya client-side seperti JavaScript, Jscript
ataupun VBScript. Tetapi dengan berkembangnya internet, situs yang ada di internet
apilkasi yang kebanyakan terhubung ke suatu basis data. Pada tahap ini situs akan
tergantung pada data yang diminta dan action dari suatu user. Untuk mengembangkan
situs yang dinamis diperlukan teknologi server-side, seperti Java, PHP, ASP, CGI, dan
aplikasi berbasis internet yang dapat menghasilkan dan menampilkan content secara
dinamis.
diterjemahkan oleh script client browser, tidak dieksekusi di server. Dengan membuat
kode yang dapat dieksekusi pada server, kita dapat menciptakan banyak sekali
aplikasi yang sifatnya dinamis dan dapat dikendalikan oleh user melalui browser.
waktu saja bagi kita untuk memakai sebuah database, baik itu DBMS, maupun
Browser
Web Server
Aplication + ODBC
Client-Side CGI Database spesific API
Database
Programs/
Server-side
Platform scripts
dependent
client
diperhatikan. Apalagi bila sistem yang dibuat merupakan sistem yang bersifat
dinamis, dimana pengembangan dan modifikasi sistem sering dilakukan seperti pada
dapat membuat suatu situs yang dinamik, seperti yang telah disebutkan di atas.
Pertama, HTML tidak dapat mendeskripsikan sifat dan struktur data yang ada di
dalamnya. Data yang ada dalam file HTML hanya diperlakukan seperti teks biasa.
Sedangkan XML mampu mendeskripsikan baik sifat maupun struktur data. Kedua,
HTML tidak mampu memisahkan antara content dan style dari suatu halaman. Jadi
bila kita melihat suatu halaman web yang ditulis dengan HTML, akan sulit bagi kita
untuk menemukan bagian yang berupa data di antara tag-tag yang berfungsi sebagai
layout atau disain halaman. Apalagi bila halaman web tersebut dirancang dengan
rumit.
dengan bagian yang bertugas untuk menampilkan data. Teknologi yang dimanfaatkan
oleh XML dalam hal ini adalah XSL (eXtensible Stylesheet Language). XSL dalam
beberapa aspek dapat dianalogikan dengan CSS pada HTML. Bedanya, XSL sendiri
merupakan suatu dokumen XML, meskipun ekstensi filenya adalah .xsl. Lagipula,
XSL mampu memodifikasi struktur dan tampilan data, serta mampu memanggil data
dari berbagai dokumen XML. Lebih lanjut tentang XSL dan XML ini akan
PENDUKUNGNYA
Dalam bab ini akan dibahas mengenai XML dan XSLT, serta sekilas tentang
standarisasi berbagai jenis bahasa dan perangkat lunak yang mendukung teknologi
internet. XML direkomendasikan oleh W3C pada tahun 1998. XML sendiri
merupakan derivat dari SGML (Standard Generalized Markup Language), yang juga
sebagai bahasa yang banyak digunakan dalam pertukaran informasi dan data.
Pembahasan tentang XML dimulai pada tahun 1996. Saat itu komunitas
internet meginginkan sebuah bahasa yang extensible seperti SGML, namun sederhana
seperti HTML. Maka W3C menyeponsori sebuah kelompok ahli SGML untuk
proses penciptaan Java, yang merupakan penyederhanaan dari C++. Mereka bekerja
dengan cara membuang bagian-bagian yang tidak esensial dari SGML. Akhirnya,
pada tahun 1998, W3C merekomendasikan versi 1.0 dari XML, dan lahirlah bahasa
baru ini.
Seperti disebutkan di atas, XML adalah respon atas tantangan yang tidak
Meskipun HTML dapat dikatakan universal untuk semua platform sistem operasi
maupun browser, ia tidak dapat dipakai dalam platform non-PC, seperti PDA,
diterapkan pada platform non-PC. Oleh karena sifat inilah, aplikasi yang paling
sistem yang banyak melakukan pertukaran data, misalnya aplikasi B2B (Business to
Business).
Sebuah dokumen XML terdiri atas teks dan elemen. Elemen-elemen dalam
dokumen XML dapat mengandung teks atau elemen lain. Elemen juga dapat
mengandung atribut-atribut.
yang diletakkan di posisi paling atas dokumen. Setiap dokumen juga harus memiliki
sebuah elemen root yang mencakup semua teks dan elemen-elemen lain dalam
dokumen. Semua elemen dalam dokumen XML harus dalam bentuk yang well-
formed, artinya pendeklarasian elemen harus memiliki start tag dan end tag.
Keterangan :
(1) Deklarasi dokumen XML. Version menunjukkan versi dari standar yang
lain dari skripsi ini. Tipe karakter lain yang sering digunakan adalah ISO-
(3) Merupakan top element dari dokumen. Seperti dijelaskan pada bagian
(4) Merupakan elemen ‘mk’ yang terdiri atas beberapa elemen anakan, serta
elemen harus memiliki start-tag dan end-tag. Selain itu, posisi dari tag deklarator
harus urut sesuai dengan posisi elemen tersebut dalam struktur datanya. Barikut
Contoh 1:
<kuliah>
<mk>
<nama>Teknologi Informasi</nama>
</kuliah>
Contoh 2:
<kuliah>
<mk>
<nama>Teknologi Informasi<nama>
</mk>
</kuliah>
Kesalahan : Teknologi informasi diapit oleh dua start-tag
Contoh 3:
<kuliah>
<mk>
<nama>Teknologi Informasi</nama>
</kuliah>
</mk>
<kuliah>
<mk>
<nama>Teknologi Informasi</nama>
</mk>
</kuliah>
Dalam aplikasi XML, kesalahan yang sering terjadi adalah tidak well-formed
perangkat lunak editor XML seperti XML Spy atau eXcHaNgER, daripada menulis
atas terjadi, akibatnya fatal karena browser tidak akan dapat menampilkan dokumen
XML. Hal ini karena XML merupakan bahasa yang ketat (strict), tidak seperti HTML
Di bagian atas telah disebutkan bahwa sebuah dokumen XML harus well-
formed. Ada sebuah kondisi lagi yang bersifat opsional yang dapat dimiliki oleh
XML, yaitu sifat valid. Sebuah dokumen XML dikatakan valid bila dokumen tersebut
sesuai dengan validatornya. Karena bersifat opsional, dan terutama karena dalam
skripsi ini penulis tidak menggunakan validator, maka bagian ini hanya akan dibahas
sekilas saja.
DTD merupakan file teks biasa yang mengandung deklarasi tentang dokumen
XML serta tipe data elemen-elemen yang terdapat di dalamnya. Contoh dari
berikut.
Atau dapat pula DTD tersebut disertakan langsung dalam dokumen XMLnya
sebagai berikut :
<!DOCTYPE perkuliahan
[
<!ELEMENT kuliah (mk)>
<!ELEMENT mk (nama, sks, jenis, semester, tujuan, ktkunci)>
<!ATTLIST mk kodemk ID #REQUIRED>
]>
<?xml version=”1.0” encoding=”UTF-8”?>
…………..
Dalam DTD di atas dinyatakan bahwa tipe dokumen diberi nama perkuliahan.
Pemberian nama ini terserah oleh kita. Jenis dan persyaratan dokumen yang
diatur dalam DTD ini perlu diberi nama tertentu supaya dapat dibedakan
elemen anakan ‘mk’. Tiap elemen ‘mk’ harus memiliki 6 elemen anakan :
‘nama’, ‘sks’, ‘jenis’, ‘semester’, ‘tujuan’, dan ‘ktkunci’. Di samping itu tiap
elemen ‘mk’ harus memilki satu atribut, yaitu ‘kodemk’. Atribut ‘kodemk’ ini
bersifat ID, artinye merupakan ciri khusus yang unique dari elemen ‘mk’.
Sifat ID dalam DTD ini dapat dianalogikan seperti UNIQUE KEY pada
kemudian mengirimkan pesan apakah dokumen XML sudah valid atau masih
DTD merupakan cara yang baik untuk mengecek validitas sebuah dokumen
XML. Sayangnya, DTD masih belum mampu mendefinisikan tipe data seperti
XML berikut :
berupa integer dengan dua angka di belakang nol, atau nilai elemen
Selain itu, DTD ditulis dengan bahasa yang berbeda, yang menimbulkan
–string
–boolean
–decimal
–float
–double
–duration
–dateTime
–time
–date
–gYearMonth
–gYear
–gMonthDay
Contoh dari XML Schema ini adalah sebagai berikut (referensi dari
http://www.w3.org/TR/xmlschema-0/
)
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://localhost/skripsi"
xmlns=http://localhost/skripsi (1)
elementFormDefault="qualified">
<xsd:element name="kuliah">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="mk"/> (2)
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="mk">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="nama" />
<xsd:element ref="sks" />
<xsd:element ref="jenis" />
<xsd:element ref="semester" /> (3)
<xsd:element ref="tujuan" />
<xsd:element ref="ktkunci" />
</xsd:sequence>
<xsd:attribute ref=”kodemk” />
</xsd:complexType>
</xsd:element>
<xsd:element name="nama" type="xsd:string"/>
<xsd:element name="sks" type="xsd:integer"/>
<xsd:element name="jenis" type="xsd:string"/>
<xsd:element name="semester" type="xsd:integer"/> (4)
<xsd:element name="tujuan" type="xsd:string"/>
<xsd:element name="ktkunci" type="xsd:string"/>
<xsd:attribute name=”kodemk” type=”xsd:string”/>
</xsd:schema>
Keterangan :
(1) Menyatakan xmlns (xml name space) dari dokumen XML Schema yang
bersangkutan. Lebih lanjut tentang xmlns ini akan dijelaskan dalam bagian
(2) Mendefinisikan elemen ‘root’ kuliah yang harus memiliki elemen ‘mk’
(3) Mendefinisikan elemen ‘mk’ yang harus terdiri dari elemen dan atribut
yang tertera
(4) Mendefinisikan tipe data dari elemen-elemen dan atribut yang tertera.
Dari contoh XML Schema di atas dapat dilihat bahwa XML Schema
XML Schema pada dokumen XML yang kita buat, seperti contoh berikut :
<?xml version="1.0"?>
<kuliah xmlns ="http://localhost/skripsi"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://localhost/skripsi/xsd
kuliah.xsd">
<mk kodemk=”MTI 001”>
…………….
XML Schema merupakan suatu dukungan yang lengkap dan solid terhadap
proses validasi dokumen XML. Lebih jauh tentang XML Schema dapat dilihat
- http://www.w3.org/TR/xmlschema-0/
- http://www.w3.org/TR/xmlschema-1/
- http://www.w3.org/TR/xmlschema-2/
Jadi tidak perlu tag deklarasi yang diletakkan di awal. Sebuah teks yang berupa :
Namun, teks yang well-formed tersebut tidak ada artinya bila tidak ada suatu
sebagai teks yang terdiri atas karakter ‘<’, ’j’, ’u’, ’r’, ’u’, ’s’, ’a’, ’n’, dan ‘>’.
Untuk memberikan informasi bahwa teks <jurusan> merupakan sebuah start tag dari
elemen ‘jurusan’, kita membutuhkan sebuah program yang disebut parser. Jadi,
parser merupakan sebuah interface antara dokumen XML dengan berbagai program
yang cukup kompleks, yang bisa ditulis dengan berbagai macam bahasa, seperti Java,
PHP, Perl, dan C. Karenanya, dalam skripsi ini hanya akan dibahas garis besarnya
saja.
P
A
DOKUMEN R APLIKASI
XML S XML
E
R
Ada dua macam parser yang akan dibahas dalam skripsi ini, yaitu DOM
DOM merupakan singkatan dari dari Document Object Model. DOM Parser
SAX adalah singkatan dari Simple API for XML. API sendiri adalah singkatan
dari Application Program Interface. Seperti namanya, dibanding DOM Parser, isi
program SAX Parser lebih sederhana. SAX parser bekerja berdasarkan apa yang
disebut event-based. SAX Parser berjalan menjelajahi dokumen. Begitu SAX Parser
XML. Cara kerja SAX Parser diilustrasikan dalam gambar 3.3 berikut.
Dokumen XML
<kuliah> 1
SAX Parser
<mk> 2
3
<nama>
Dari dua jenis parser yang dibahas di atas, tidak ada parser yang dapat dikatakan
lebih unggul dari yang lain (XML By Example). SAX Parser dan DOM Parser dapat
dimanfaatkan secara optimal tergantung pada sifat dari dokumen yang hendak di-
parse. Bila dokumen XMLnya besar, menggunakan DOM Parser akan banyak
penggunaan SAX Parser akan lebih menguntungkan dari segi penghematan resource.
Sebaliknya, untuk dokumen XML berskala kecil, penggunaan DOM Parser akan
lebih menguntungkan karena DOM Parser menyediakan struktur yang “siap pakai”,
sehingga memudahkan program aplikasi dalam mengakses dokumen. Sedang bila kita
menggunakan SAX Parser, seorang pemrogram harus bekerja lebih keras dalam
SAX Parser lebih tepat digunakan untuk menangani dokumen XML yang dinamis,
sedang DOM Parser lebih tepat untuk menangani dokumen yang sifatnya statis.
Proses parsing, baik DOM Parsing maupun SAX Parsing dapat terjadi di dua tempat :
di server dan di client. Proses parsing di server diperlukan bila browser yang kita
miliki tidak memiliki built in parser. Hal ini tentu saja amat memberatkan server, oleh
karena itu, pada skripsi ini penulis mengharuskan user untuk memilih browser yang
mendukung XML, artinya memiliki built in parser untuk XML. Dalam proses
MSXML 4.0. Jadi, proses parsing terjadi di client. Berikut daftar browser lain yang
• AIX Netscape
Platform : AIX
Platform : Java
Platform : Windows95/NT
Platform : Java
• X M L Vi e w e r v e r s i o n 2001-10-09
Platform : Java
Platform : Java
dokumennya, kita dapat melihat bahwa dokumen XML tidak memiliki perintah
tentang bagaimana dokumen tersebut harus ditampilkan. Dengan kata lain, dokumen
XML hanya berisi data-data saja. Untuk menampilkan dokumen XML tersebut maka
XML ke dalam format yang lain, seperti format HTML atau Microsoft Word. XSLT
sendiri merupakan bahasa untuk menentukan tampilan dan format dari data XML.
Ada dua cabang dari XSL ini, yaitu XSLT dan XSL Formatting Object (XSL-FO).
XML, XSLT juga dapat digunakan untuk meng-query data dalam dokumen XML
Perlu dijelaskan sebelumnya, proses transformasi yang dilakukan dalam skipsi ini
tidak mengubah file XML, melainkan hanya memberikan perintah tentang bagaimana
sekaligus meng-query data yang ada, maka penulis berusaha menjelaskan bagian ini
menjadi result tree yang baru yang pada umumnya berbeda dengan source tree. Atau,
dengan kata lain, mengubah struktur dokumen XML ke dalam struktur baru yang
biasanya berbeda. Proses transformasi ini dicapai dengan cara menerapkan XSLT
dengan source tree dan kemudian menjelaskan struktur dari result tree yang
diinginkan. Contoh dari suatu template dapat dilihat dari gambar berikut
yang baru. Jadi, misalkan kita memiliki dokumen XML sebagai berikut :
<kuliah>
<mk>
<nama> Sistem Basis Data </nama>
</mk>
</kuliah>
Elemen ‘root’ yang terdapat dalam dokumen XML di atas adalah elemen ‘kuliah’.
dokumennya menjadi :
<html>
<body>
<b>Sistem Basis Data</b>
</body>
<html>
template biasanya mengacu pada satu atau beberapa elemen yang spesifik dalam
struktur sumbernya (resource tree). Sebuah template dapat diterapkan pada sebuah
elemen tanpa diterapkan pada elemen-elemen anakannya, atau dapat juga diterapkan
simpul) dokumen XML mana yang akan ditransformasikan. XSLT memiliki tag-tag
‘bagian’
atribut bernilai 2
3.2.1.2 Namespace
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
…………(template XSLT)
</xsl:stylesheet>
Dalam contoh dipakai elemen-elemen dan atribut-atribut yang telah didefinisikan
oleh World Wide Web Consortium (W3C). Namespace dari W3C adalah :
http://www.w3.org/1999/XSL/Transform.
namespace dari pembuatnya. Definisi ini tidak boleh merubah definisi yang telah
Contohnya :
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”
xmlns:xslother=”http://localhost/skripsi/XSL”>
</xsl:stylesheet>
Bila namespace ini tidak disebutkan, maka prosesor transformasi tidak dapat
tambahan
- metadata XSL
dalam stylesheet XSLT yang mengandung kata <xsl:…..> akan diperlakukan sebagai
elemen spesifik XSLT. Misalkan elemen <xsl:template match=”/”>…</xsl:template>
akan diperlakukan sebagai instruksi untuk menyeleksi elemen dalam dokumen XML
mana yang akan diproses. Sedangkan elemen yang mengandung namespace dari
pihak lain sebagai definisi tambahan akan diperlakukan berbeda. Jadi, misalkan kita
membuat program untuk mendefinisikan suatu instruksi pemrosesan yang tidak ada
dalam vocabulary XSLT dari W3C, maka kita perlu menambahkan namespace kita
dalam elemen XSLT. Misalkan, dalam contoh di atas kita mendefinisikan namespace
Di dalamnya kita mendefinisikan sendiri perintah untuk mencetak isi suatu elemen.
Maka elemen XSLT yang merupakan instruksi tambahan kita tersebut adalah :
maka elemen tersebut akan dicetak apa adanya. Misalnya elemen <html>…</html> ,
3.2.1.3 Version
Setiap elemen teratas dari file XSL harus menyebutkan versi dari XSL. Versi
XSLT yang terakhir direkomendasikan oleh W3C adalah versi 1.0, yang
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
3.2.1.4 Beberapa perintah XSLT yang penting
pada stylesheet yang mengimport juga terdapat template dengan pola yang
sama, namun dengan struktur yang berbeda. Maka aturan template yang akan
level element.
harus diletakkan pda posisi top level element, serta tidak boleh mendahului
variabel. Nilai yang disimpan dapat berasal dari isi suatu elemen ataupun kita
tentukan sendiri.
Perbedaan dua cara di atas adalah pada cara yang pertama, isi variabel bersifat
angka. Sedang pada cara yang kedua, variabel tidak bersifat angka, namun
Sedang contoh nilai yang kita ambil dari isi elemen lain :
<xsl:variable name=”nama”>
Kedua cara di atas sama, yaitu menyimpan isi dari elemen ‘nama’ yang berada
Perintah xsl:variable dapat diletakkan pada top level, dapat pula tidak.
4. <xsl:param name=”…” select=”…”/>
Perbedaannya adalah, nilai pada xsl:param hanya bersifat default saja. Ketika
Contohnya :
<xsl:template name=”panggil”>
<xsl:value-of select=”$x”/>
</xsl:template>
………
………
<xsl:call-template name=”panggil”>
</xsl:call-template>
Pada contoh di atas, nilai default dari x adalah 1. Ketika template “panggil”
dipanggil tanpa mengeset nilai parameter yang beru, outputnya adalah nilai
5. <xsl:value-of select=”…”/>
sering digunakan setelah perintah pola. Perintah ini sangat berguna. Bagi yang
pernah mendalami PHP, perintah ini analog dengan perintah “echo” atau
Pendeknya, ketika kita ingin menampilkan isi dari suatu elemen, atribut, atau
<kuliah>
<mk>
<nama> Sistem Basis Data </nama>
<jenis> Wajib </jenis>
</mk>
</kuliah>
Bila kita ingin menampilkan isi elemen dari ‘nama’, maka perintah yang kita
tuliskan adalah :
<xsl:value-of select=”mk/nama”/>
6. <xsl:if test=”…”/>
yang ada di dalam elemen xsl:if akan dieksekusi. Bila salah, maka perintah
warna merah pada suhu mesin yang melebihi 100°C. Dokumen XML kita
<suhu>
<mesin kode=”A”>
<nama> Mesin bubut </nama>
<temp> 89 </temp>
</mesin>
<mesin kode=”B”>
<nama> Mesin listrik </nama>
<temp> 120 </temp>
</mesin>
<mesin kode=”C”>
<nama> Mesin diesel </nama>
<temp> 72 </temp>
</mesin>
</suhu>
………………….
Template untuk transformasi XSLTnya adalah:
…………………..
<xsl:template match=”mesin”>
Nama mesin : <xsl:value-of select=”nama”/>
<xsl:if test=”temp > 100”>
Temperatur : <font face=”verdana” color=”#FF0000”>
<xsl:value-of select=”temp”/>
</font>
</xsl:if>
</xsl:template>
warna merah.
Perintah ini mirip dengan xsl:if, namun digunakan untuk beberapa kondisi
yang harus dipenuhi. Misalkan dalam contoh dokumen suhu di atas, untuk
temperatur di bawah 100 derajat kita ingin menampilkan dengan warna biru.
<xsl:template match=”mesin”>
Nama mesin : <xsl:value-of select=”nama”/>
<xsl:choose>
<xsl:when test=”temp > 100”>
Temperatur : <font face=”verdana” color=”#FF0000”>
<xsl:value-of select=”temp”/>
</font>
</xsl:when>
<xsl:when test=”temp < 100”>
Temperatur : <font face=”verdana” color=”#0000FF”>
<xsl:value-of select=”temp”/>
</font>
</xsl:when>
</xsl:choose>
</xsl:template>
8. <xsl:for-each select=”…”/>
Perintah ini adalah perintah kalang (loop) yang memproses secara rekursif. Di
sini XSLT akan memproses perintah yang berada di dalam elemen xsl:for-
each selama elemen yang ditunjuknya ditemukan. XSLT akan berhenti
Contohnya, bila kita ingin menampilkan temperatur tiap mesin pada contoh
<xsl:template match=”suhu”>
<xsl:for-each select=”mesin”>
Suhu :<xsl:value-of select=”temp”/><br/> *
</xsl:for-each>
</xsl:template>
Suhu: 89
Suhu: 120
Suhu: 72
* Catatan : tag <br> merupakan perintah HTML untuk mengatur jarak satu
baris. Karena bentuk ini bukan bentuk elemen yang well-formed, maka XSLT
memberikan solusi dengan menambah karakter ‘/’. Solusi ini sama dengan
9. <xsl:sort select=”…”/>
Perintah ini adalah untuk mensortir tampilan menurut suatu kata kunci
dokumen suhu di atas, kita ingin menampilkan nama mesin urut mulai dari
yang temperaturnya paling tinggi. Di sini berarti kata kuncinya adalah elemen
<xsl:template match=”mesin”>
<xsl:sort select=”temp” order=”descending”/>
<p>Nama mesin : <xsl:value-of select=”nama”/>
Suhu : <xsl:value-of select=”temp”/></p>
</xsl:template>
membuat elemen berupa link HTML, dimana isi dari atribut ‘href’ nya
diambil dari elemen lain. Perintah untuk membuat link pada bahasa HTML
adalah : <a href=”link.htm”> link </a>. Perintah ini oleh XSLT dipandang
cukup untuk membuat sebuah link dalam struktur output. Namun, masalah
timbul ketika kita ingin memasukkan nilai dalam suatu elemen dokumen
XML ke dalam atribut ‘href’ dari elemen ‘a’. Contohnya kita memiliki
<referensi>
<modul>
<nama> Sistem Basis Data </nama>
<url> http://localhost/skripsi/kuliah/basisdata.xml </url>
</modul>
</referensi>
Template XSLT yang salah untuk menampilkan link yang menuju lokasi yang disebutkan
pada elemen ‘url’ di atas adalah :
<xsl:template match=”modul”>
Nama modul : <xsl:value-of select=”nama”/>
URL : <a href=”<xsl:value-of select=’url’/>”> http://localhost skripsi/kuliah/basisdata.xml
</a>
</xsl:template>
Template di atas salah, karena XSLT tidak mengijinkan tag ‘<’ ataupun ‘>’
dari ASCII, sedang untuk karakter ‘>’ kita dapat menggunakan ‘>’.
Namun, ini tidak menyelesaikan masalah, karena bila ini diterapkan, XSLT
instruksi XSLT untuk menampilkan isi elemen tertentu. Jadi kita harus
memikirkan solusi lainnya. Salah satu solusi untuk masalah ini diperlihatkan
<xsl:template match=”modul>
Nama modul : <xsl:value-of select=”nama”/>
URL : <xsl:element name=”a” >
<xsl:attribute name=”href”>
<xsl:value-of select=”url”/>
</xsl:attribute>
http://localhost skripsi/kuliah/basisdata.xml
</xsl:element>
</xsl:template>
atau
<xsl:template match=”modul>
Nama modul : <xsl:value-of select=”nama”/>
URL : <a>
<xsl:attribute name=”href”>
<xsl:value-of select=”url”/>
</xsl:attribute>
http://localhost skripsi/kuliah/basisdata.xml
</a>
</xsl:template>
Kedua template di atas akan membentuk elemen dengan nama ‘a’ pada
struktur output. Elemen ‘a’ ini mempunyai atribut bernama ‘href’ yang isinya
sama dengan isi dari elemen ‘url’ pada dokumen XMLnya. Sedangkan isi dari
elemen ‘a’ sendiri adalah string “http://localhost skripsi/kuliah/basisdata.xml”.
Sama seperti dokumen XML, dokumen XSLT juga harus di-parse. Proses
parsing ini dapat terjadi di client, dapat pula di server. Untuk parsing di server,
http://xml.apache.org. Parser Xalan Java ini harus diinstall di server agar proses
transformasi dapat berjalan. Namun, penulis tidak merekomendasikan cara seperti ini,
memakai browser yang mendukung XSLT, artinya memiliki built in parser untuk
XSLT *, seperti :
• AIX Netscape
Platform : AIX
Platform : Java
Pl a t f o r m : Win d ow s 9 8 / N T / 2 0 0 0
* Catatan : referensi dari http://www.xmlsoftware.com
format yang lainnya dengan menggunakan XSLT. Pertama adalah metode yang
menghasilkan file baru, yang kedua adalah tidak menghasilkan file baru, yaitu hanya
merubah tampilan saja. Untuk metode yang pertama, misalnya dapat dilakukan oleh
Xalan Java yang dikeluarkan oleh Apache (http://www.apache.org). Parser ini ditulis
dalam bahasa Java. Paser Xalan Java merupakan parser XSLT yang powerful. Ia
Perubahan format yang pernah diuji oleh penulis menggunakan Xalan Java adalah
perubahan dari format XML ke format MS-Word, HTML, dan MS-Power Point.
Namun, dalam skripsi ini penulis tidak menggunakan parser Xalan Java karena ia
dalam proses transformasi, Xalan Java tidak merubah dokumen XML yang ada,
namun hanya membuat sebuah file baru sebagai hasil dari transformasinya.
Metode yang kedua adalah metode dimana tidak dihasilkan file baru. XSLT
hanya berfungsi untuk menampilkan dokumen XMLnya saja. Metode ini dapat
<xsl:template match="/">
<html><body>
<xsl:apply-templates/>
</body></html>
</xsl:template>
<xsl:template match="mk">
<p>Nama mata kuliah : <xsl:value-of select="nama"/><br/>
Jenis : <xsl:value-of select="jenis"/><br/>
Jumlah SKS : <xsl:value-of select="sks"/></p>
</xsl:template>
</xsl:stylesheet>
Dari contoh di atas dapat dilihat bahwa XSLT tidak merubah file dokumen
XML yang ditransformasikan, terbukti dari source codenya yang tidak berubah.
Sedangkan untuk tampilan tanpa menggunakan XSLT terlihat dalam gambar 3.7
berikut.
Dapat dilihat dari contoh tampilan di atas, bahwa bila dokumen XML tidak
Demikian penjelasan mengenai XSLT. Untuk aplikasi yang lebih teknis dari
XSLT dapat dilihat pada Bab IV yang membahas dan menganalisa skripsi secara
teknis.
3.3 J a v a
sebelumnya bernama Oak – Oak diciptakan oleh James Gosling – merupakan bahasa
yang dapat diterapkan pada berbagai macam platform. Keistimewan dari Oak – dan
oleh karenanya diwarisi oleh Java – adalah kedekatannya dengan Internet. Salah satu
keistimewaan Java yang paling banyak dikenal orang adalah ia dapat menciptakan
program yang dieksekusi melalui browser internet. Program ini disebut applet.
dan syntax dari bahasa C dan C++. Oleh karenanya Java memiliki banyak kemiripan
dengan C++. Perbedaannya adalah Java lebih sederhana, dan beberapa bagian yang
kompleks dari C++ dihilangkan, seperti pointer dan manajemen memori. Dalam Java,
memori diatur secara otomatis, dan pemrogram tidak perlu menulis kode untuk
Kode Java ditulis sebagai teks biasa, kemudian disimpan dalam bentuk file
.java. Kemudian setelah file .java ini di-compile, akan menghasilkan file lain yang
disebut class (berbentuk .class). File class inilah yang dipanggil ketika kita ingin
bahasa mesin. Untuk dapat meng-kompile file .java menjadi bentuk bytecode
(JDK). Dalam skripsi kali ini, versi JDK yang digunakan adalah JDK 1.3.
3.3.1 Classpath dalam Java
Java. Seperti disebutkan pada bagian sebelumnya, Xalan Java merupakan parser
Salah satu hal yang paling penting dalam menjalankan program Java adalah
mengatur classpath. Class dianggap sebagai sebuah obyek yang saling berkaitan
menghemat banyak waktu karena kita tidak perlu menuliskan kode yang sama untuk
beberapa aplikasi. Kita dapat menggunakan class-class yang telah tersedia tersebut
harus mencari class-class yang diperlukan. Kita harus mendefinisikan lokasi yang
spesifik dari class-class tersebut sampai pada direktori yang tepat ada di atasnya. Jadi
Program akan menampilkan pesan kesalahan (error) bila kita hanya menuliskan :
org/apache/xalan/xslt/Process.
diintegrasikan dalam file Java Archive (berbentuk .jar). File .jar ini mirip dengan file
.zip, dan file .jar ini dapat diekstrak dengan aplikasi pengekstrak seperti WinZip.
Jadi kita dapat mendefinisikan classpath kita ke alamat loaksi file .jar ini,
karena pada dasarnya file .jar bersifat seperti direktori yang berada tepat satu tingkat
di atas file .class. Contoh kasus, dalam transformasi XML ke format file lain, kita
memerlukan class Process. Class process ini ada dalam file xalan.jar. Maka kita harus
Suatu aplikasi biasanya membutuhkan beberapa file class yang terdapat dalam
beberapa file .jar. Jadi classpath harus menyebutkan alamat-alamat file-file .jar
tersebut. Dalam Java Archive (jar) ini biasanya file-file .class sudah dikelompokkan
letak dari kelas tersebut. Berbeda dengan pengaturan classpath, pemanggilan class
adalah seperti menuliskan perintah command.com dalam dos prompt, yaitu berfungsi
HTML. Class yang menangani ini adalah class Process. Class Process berada di
bawah direktori xslt. Direktori xslt berada di bawah direktori xalan, xalan berada di
bawah xml, direktori xml berada di bawah direktori apache, dan apache berada di
bwah direktori org. Jadi, untuk memanggilnya secara lengkap adalah sebagai berikut :
JDK adalah suatu perangkat lunak yang dikeluarkan oleh Sun Microsystem
untuk membuat aplikasi, applet, dan komponen yang dapat dijalankan dalam platform
Java. JDK mempunyai fasilitas untuk mengembangkan dan menguji program yang
ditulis dalam bahasa Java dan dijalankan dalam platform Java. Fasilitas-fasilitas ini
hanya dapat dieksekusi melalui perintah yang dituliskan di command line, kecuali
untuk appletviewer. Jadi, fasilitas-fasilitas pada JDK 1.3 tidak memiliki Graphical
Fasilitas ini berfungsi untuk meng-compile program yang ditulis dalam Java
.java harus dijadikan file bytecode terlebih dahulu, biasanya dalam bentuk file
.class.
Menggabungkan file-file class dan acuan-acuan lainnya dalam satu file jar.
dijalankan melalui command line (misal MS-DOS Prompt untuk Windows 32).
Contoh penulisan perintahnya, untuk Java Interpreter telah dituliskan dalam bagian
Dalam JDK 1.3, terdapat sebuah virtual machine, library class, dan file-file
lain yang dibutuhkan dalam proses eksekusi aplikasi Java. Ketiga hal tersebut berada
sebuah servlet container yang juga dapat berfungsi sebagai web server. Jakarta
Tomcat, seperti halnya Xalan Java merupakan software yang open source. Dalam
skripsi ini, Jakarta Tomcat yang digunakan adalah versi 3.3 yang dikeluarkan tanggal
18 April 2002. Sampai sekarang Jakarta Tomcat telah mencapai versi 5.0 yang
dikeluarkan pada bulan Oktober 2002. Jakarta Tomcat merupakan implementasi
resmi (official implementation) dari teknologi Java Servlet dan Java Server Page
(JSP). Dengan Jakarta Tomcat kita dapat menjalankan aplikasi server side yang
dibuat dengan Java. Penjelasan mengenai server side application ini telah dibahas
Java Servlet merupakan aplikasi Java berbasis Web yang dijalankan di server.
Tidak seperti yang telah dijelaskan pada bagian sebelumnya tentang aplikasi Java
yang menjalankannya dari dos prompt, Java Servlet dipanggil oleh browser melalui
URL (Uniform Resourced Location). Jadi misalnya kita memiliki sebuah servlet
dalam file Cipta.class. Maka bila kita ingin menjalankan program tersebut, kita
memanggil dengan mengetikkan perintah berikut pada Address Field browser kita :
menuju pada lokasi servlet yang dimaksud. Ketika link tersebut diklik, maka servlet
akan dieksekusi. Pemanggilan servlet tidak perlu menyertakan ekstensi dari file
Pada Jakarta Tomcat, letak servlet containernya adalah pada direktori : base
Meskipun letak servlet container adalah pada direktori yang tersebut di atas,
namun pada URL yang disebutkan adalah berbeda, tergantung pada setting path dan
base directory dari servlet. Path dan base directory dalam skripsi ini akan dijelaskan
di Bab IV.
Untuk membuat servlet, pertama kita harus mengeset classpath (seperti yang
telah disebutkan pada bagian sebelumnya tentang classpath dalam Java) menuju suatu
file Java Archive yang bernama servlet.jar. Kemudian dari file ini kita dapat
mengimport class-class yang berfungsi untuk membentuk servlet dalam kode java
kita. Setelah kita membuat file java tersebut, maka kita compile dengan Java
Compiler. Kemudian, file bytecode Java (ekstensi .class) yang dihasilkan dimasukkan
dalam direktori servlet container. Selengkapnya mengenai proses ini akan dijelaskan
di Bab IV.
Pada dasarnya ada tiga komponen penting dalam Jakarta Tomcat. Pertama
Tomcat untuk mencari class-class Java yang dipanggil oleh servlet. Library ini
Dalam direktori tomcat\lib terdapat tiga jenis library, yaitu ‘apps’, ‘common’,
dan ‘container’. Library yang berada dalam direktori ‘apps’ adalah library spesifik
untuk suatu aplikasi. Library ‘common’ adalah library yang dipakai bersama oleh
Jakarta Tomcat dan beberapa aplikasi tertentu. Sedang library ‘container’ dipakai
khusus oleh Jakarta Tomcat. Struktur komponen-komponen utama Jakarta Tomcat ini
tomcat
apps ROOT
common container
skripsi
WEB-INF
classes
Dalam bab ini akan dibahas implementasi sistem sesuai dengan dasar teori
yang telah dibahas pada BAB II. Sedang teknologi yang akan dipakai pada
implementasi sistem adalah teknologi-teknologi seperti yang telah dibahas pada Bab
III.
kemudian dibagi lagi menjadi bagian-bagian yang lebih kecil, disebut dengan topik.
Modul-modul dan topik-topik ini merupakan salah atu komponen penting dari sistem
distance learning, karena dari sinilah para mahasiswa MTI, baik peserta distance
learning maupun yang mengikuti kuliah secara langsung, serta khalayak umum dapat
MTI yang mengikuti perkuliahan MTI secara langsung, serta khalayak umum –
disebut user.
Dari sini penulis menjadikan topik-topik yang disebut di atas sebagai basis pencarian
data. Penulis mencantumkan kata-kata kunci yang mungkin dicari oleh user pada
masing-masing topik. Jadi, ketika user melakukan permintaan data (query) maka
pada dasarnya user meminta data tentang suatu topik tertentu yang ada pada database
meteri kuliah tersebut. Halaman untuk pencarian data ini dapat dilihat pada halaman
dari skripsi ini, penulis juga memberikan fasilitas tambahan lainnya, yaitu pencarian
mata kuliah. Di sini user dapat melakukan query terhadap mata kuliah yang
dikehendakinya.
Semua data yang ada di atas, baik kuliah, modul, maupun topik di atas ditulis
dalam XML. Untuk menampilkan datanya ke browser digunakan XSLT. User juga
dapat melihat secara langsung (tanpa melakukan proses query) data-data yang ada
melihat data seluruh mata kuliah (tampilan ada di halaman lampiran bagian 1 nomor
3). Sedang untuk melihat topik user cukup mengikuti link-link yang ada pada
halaman penampilan data modul tersebut (tampilan ada di halaman lampiran bagian 1
nomor 4).
Sistem pencarian data yang akan dibangun dalam tugas akhir ini dapat dibagi
menjadi dua bagian. Pertama adalah pencarian data berdasarkan input dari user.
Kedua adalah pencarian data berdasarkan kata kunci yang dimiliki masing-masing
topik.
jenis-jenis query yang ditentukan oleh penulis. Jenis query yang disediakan adalah :
Untuk query jenis ini ada beberapa jenis query lagi yang dapat dipilih,
yaitu berdasar kode/nama mata kuliah, sks mata kuliah, jenis mata kuliah,
kata kunci pada mata kuliah. Khusus untuk query tujuan dan kata kunci
mata kuliah, user dapat mencari mata kuliah dengan mengisikan kata yang
b. Query topik
Untuk query topik, user dapat mencari topik yang diinginkan dengan
memasukkan kata atau frase yang terdapat dalam topik itu. Mesin pencari
yang berupa dokumen XML. Proses pencocokan ini terjadi pada setiap
atribut dan elemen dari data topik, yaitu judul topik, modul dimana topik
tersebut berada, serta kata kunci yang ada pada setiap topik. Bila terdapat
topik yang salah satu atau beberapa atribut atau elemennya mengandung
Pencarian dengan sistem input dari user mengandung kelemahan, yaitu user
tidak mengetahui kata kunci-kata kunci apa saja yang terdapat dalam topik. Kata
kunci dalam setiap topik berjumlah ratusan, sedang seluruh kata yang mungkin
diquery user ribuan banyaknya. Jadi, peluang user untuk tidak menemukan topik
yang dikehendaki adalah besar. Untuk menghindari situasi ini maka penulis membuat
sebuah dokumen XML yang berfungsi untuk menampilkan seluruh kata kunci dalam
setiap topik. Dengan solusi ini maka diharapkan pencarian topik menjadi lebih terarah
karena user tahu kata kunci apa saja yang terdapat dalam topik.
Kata kunci-kata kunci setiap topik seperti yang disebutkan di atas berada
pada frame sebelah kiri dan tampilannya tidak berubah selama proses pencarian
berlangsung. Hal ini berguna untuk mempermudah user selama proses pencarian.
Setelah user memilih suatu kata kunci maka sistem akan menampilkan topik-topik
yang bersesuaian. Selanjutnya user dapat memilih link-link pada topik tersebut untuk
Demikian sistem pencarian ini dijelaskan secara garis besar. Bagian lain dari
yang relatif baru pada Bab II, maka penulis mula-mula merancang suatu sistem arsip
data, penampilan, dan pencarian data dengan memanfaatkan empat teknologi : XML,
XSLT, Java Servlet, dan Jakarta Tomcat. Penulis pada awalnya menyimpan data-data
XML, stylesheet XSLT, serta Java Servlet pada web server Jakarta Tomcat. Namun,
setelah penulis melakukan evaluasi terhadap aplikasi berbasis web yang tengah
dilaksanak, penulis mendapatkan suatu referensi dari pembuat Jakarta Tomcat sendiri
bahwa Jakarta Tomcat bukanlah suatu sistem yang dirancang sebagai web server.
Memang Jakarta Tomcat menyediakan fasilitas untuk web server, namun web server
ini tidaklah sehandal Apache Web Server, yang memang dirancang khusus untuk itu.
Berdasar referensi tersebut di atas, maka penulis mengganti web server dari
semula Jakarta Tomcat menjadi Apache Web Server. Jadi, file-file yang bersifat statis
disimpan dalam Apache, sedang yang bersifat dinamis disimpan dalam Tomcat (untuk
seperti terlihat pada Gambar 4.1. Yang disebut ‘dinamis’ di sini adalah bagian sistem
membedakan lokasi dari Tomcat dan Apache, maka untuk Tomcat dipanggil melalui
port 8080. Sedang untuk Apache port 3148. Jadi pemanggilan URL untuk Tomcat
menampilkan halaman query (form pencarian), indeks pencarian, file-file XML statis,
serta stylesheet-stylesheet XSLT yang berfungsi menampilkan file-file XML statis
tersebut.
Apache Tomcat
JAVA SERVLET
XML
HTML
XML
XSLT
XSLT
BROWSER
Pada bagian ini akan dijelaskan alur aplikasi menurut fasilitas-fasilitas yang
ada. Alur aplikasi adalah skenario penggunaan fasilitas-fasilitas yang ada dalam
dokumen XML ke dalam format HTML sehingga mampu ditampilkan dengan baik
oleh browser. XSLT di sini diterapkan baik pada lingkungan statis maupun dinamis.
Jadi, semua dokumen XML, baik yang statis (dibuat oleh penulis) maupun yang
dinamis (dibuat oleh servlet) diproses oleh XSLT terlebih dahulu sebelum
ditampilkan.
pembuatan form dari HTML. Proses query data ini dapat digambarkan dengan
Setelah user mengisi dan mengirim querynya (1), maka data tersebut akan
diterima oleh servlet. Kemudian servlet membuat sebuah dokumen XML berdasarkan
input-input yang dikirimkan user tadi (2). Data-data input dalam dokumen XML ini
kemudian diproses oleh XSLT (3). Data-data tersebut menjadi pedoman stylesheet
XSLT untuk memanggil dokumen XML lainnya yang berada di lingkungan statis
(sebagai sumber data) (4). Pada tahap ini, XSLT berfungsi untuk meng-query data.
XSLT akan mencari pada sumber data, data-data mana saja yang cocok dengan data
pada dokumen XML yang dibuat servlet. Setelah data pada sumber data ditemukan,
maka data tersebut akan dikirimkan ke XSLT (5) untuk kemudian ditampilkan (6).
Apache
Tomcat
Form HTML
Servlet
Data BROWSER
XML XML
XSLT
(1) submit
(2) create
(3) process
(6) tampil
(4) request
Gambar 4.2 Alur aplikasi untuk query data berdasar input dari user
Ilustrasi untuk bagian ini digambarkan oleh Gambar 4.3, disertai penjelasan
sebagai berikut.
dari setiap modul. Dokumen ini ditransformasikan dengan XSLT untuk membentuk
frame sebelah kiri dari menu pencarian (1). Ketika user memilih salah satu kata
kunci, maka informasi kata kunci dikirimkan ke servlet (2). Berdasarkan input ini
maka servlet membuat dokumen XML (3) yang kemudian ditransformasikan oleh
XSLT (4). XSLT kemudian mencari data yang sesuai dari sumber data XML yang
berada dalam lingkungan statis (5). Sumber data ini tidak lain adalah dokumen kata
kunci XML yang disamping memuat kata kunci juga memuat referensi ke topik.
Setelah data ditemukan (6), maka XSLT menampilkan data-data tersebut ke browser
(7).
Gambar 4.3 Alur aplikasi untuk query data berdasar kata kunci
elemen ‘kuliah’ yang mencakup seluruh elemen dan teks dalam dokumen
XML. Elemen ini memiliki elemen anak ‘mk’. Elemen ‘mk’ memiliki satu
atribut, yaitu ‘kodemk’, yang berisi kode mata kuliah yang bersangkutan,
dan 6 elemen anak, yaitu ‘nama’, ‘sks’, ‘jenis’, ‘semester’, ‘tujuan’, dan
dari perkuliahan yang bersangkutan. Contoh data XML untuk satu mata
<kuliah>
<mk kodemk="MTI 611">
<nama>Teknologi Informasi</nama>
<sks>3</sks>
<jenis>Wajib</jenis>
<semester>1</semester>
<tujuan>Teknologi informasi ditinjau dari segi perangkat keras dan perangkat
lunak komputer. Arsitektur teknologi informasi. Teknologi middleware.
Faktor kehandalan, skalabilitas, dan keamanan.
Implementasi proses-proses bisnis.</tujuan>
<ktkunci>hardware software bisnis arsitektur middleware
kehandalan</ktkunci>
</mk>
</kuliah>
Elemen induknya adalah elemen ‘top’ yang mencakup seluruh elemen dan
teks dalam dokumennya. Elemen ‘top’ ini memiliki elemen anak yaitu
modul yang ada pada suatu mata kuliah tertentu. Elemen ini memiliki satu
atribut, yaitu ‘mk’ yang berisi nama mata kuliah. Di samping itu elemen
Elemen ‘sumber’ memiliki satu atribut, yaitu ‘tipe’. Atribut ini berfungsi
untuk membedakan asal referensi, apakah dari buku, web, atau yang lain.
<top>
<bahan mk="Teknologi Informasi">
<modul kodemdl="M 611-1" minggu="1">
<nama>Asas Teknologi Informasi</nama>
<tujuan>Memberikan pemahaman dasar mengenai konsep TI, implementasinya,
tool-tool yang digunakan, serta keuntungan-keuntungannya</tujuan>
<sumber tipe="Buku">
<judul>Information Technology, Tomorrows advantage today</judul>
<pengarang>Stephen Haag</pengarang>
<penerbit>McGraw-Hill</penerbit>
<tahun>1996</tahun>
</sumber>
</modul>
</bahan>
</top>
elemen ‘top’. Elemen ini memiliki elemen anak ‘topik’ yang memiliki 3
atribut, yaitu ‘kodetpk’ yang berisi kode dari topik yang bersangkutan,
mata kuliah dari topik yang bersangkutan. Di samping itu, elemen ‘topik’
ini memiliki 5 elemen anak, yaitu ‘judul’, ‘modul’, ‘urllat’, ‘isi’, dan
‘ktkunci’. Elemen ‘judul’ berisi judul topik. Elemen ‘modul’ modul tempat
memuat kata kunci dari topik yang mennggambarkan isi dari topik.
Sedang elemen ‘isi’ berisi informasi tentang cara mengakses materi dari
topik. Elemen ‘isi’ memiliki 3 atribut, yaitu ‘tipe’, ‘doctype’, dan ‘size’.
Atribut ‘tipe’ menunjukkan jenis akses yang diperlukan untuk melihat isi
topik. Untuk semua topik dalam skripsi ini, atribut ‘tipe’ bernilai ‘url’.
Nilai atribut ini menunjukkan bahwa untuk melihat isi topik, user harus
dengan cara yang lainnya. Untuk nilai ‘tipe’ berupa ‘url’, penulis
jenis file topik, apakah disimpan dalam bentuk XML, MS-Word, Power
Point, PDF, dan lain-lain. Sedangkan atribut ‘size’ menunjukkan besar dari
diperlukan.
<top>
<topik kodetpk="T 6111-03" minggu="1" mk="Teknologi Informasi">
<judul>Asas Teknologi Informasi</judul>
<modul>Asas Teknologi Informasi</modul>
<ktkunci>definisi informasi</ktkunci>
<ktkunci>teknologi informasi</ktkunci>
<ktkunci>piranti</ktkunci>
<ktkunci>piranti input output</ktkunci>
<urllat>http://localhost/skripsi/latihan/lat12.php</urllat>
<isi tipe="url" doctype="xml" size="6KB">
http://localhost/skripsi/modul/611/asas.xml
</isi>
</topik>
</top>
Pada bagian ini akan dijelaskan implementasi sistem serta contoh tampilan-
Pada bagian ini akan dijelaskan hierarki file serta fungsi masing-masing file
dalam sistem pencarian data. Gambar 4.4a dan 4.4b menunjukkan keseluruhan
hierarki file. Untuk tiap bagian diberikan nomor yang masing-masing akan dibahas
ROOT
ROOT
WEB-INF/classes SKRIPSI
Global.xsl
Cipta.class Query.xsl
Ciptatpk.class Querytpk.xsl
Panggiltopik.class Topikq.xsl
(6)
(5)
Gambar 4.4b Hierarki file pada lingkungan dinamis (Tomcat)
Direktori ini menampung file-file HTML serta sumber-sumber data XML. Berikut
a. Kuliah.xml
digunakan adalah struktur data kuliah seperti yang telah dijelaskan pada
bagian sebelumnya.
b. Modul.xml
Dokumen ini menampung seluruh data modul yang ada di perkuliahan MTI.
Struktur data yang digunakan adalah struktur data modul seperti yang telah
c. topik.xml
Dokumen ini menampung seluruh data kata kunci yang ada di perkuliahan
MTI. Struktur data yang digunakan adalah struktur data topik seperti yang
a. Cipta.class
Menerima input query dari user pada halaman ‘query.htm’ bagian pencarian
<query>
<nilai> (input dari user) </nilai>
<tipe> (jenis query) </tipe>
</query>
Elemen induknya adalah elemen ‘query’. Elemen ini memiliki 2 elemen anak,
yaitu elemen ‘nilai’ dan ‘tipe’. Elemen ‘nilai’ menampung input query dari
user, sedang elemen ‘tipe’ menunjukkan jenis query yang dipilih. Isi dari
b. Ciptatpk.class
Servlet ini bertugas untuk menerima input query dari halaman ‘query.htm’
bagian pencarian topik. Selain itu ia juga bertugas untuk menerima input yang
berupa kata kunci pada halaman ‘utama.htm’. Jadi, input yang diterima ada
dua macam: dari form HTML dan dari URL. Berdasarkan input tersebut
kemudian servlet ini membuat sebuah dokumen XML. Dokumen XML yang
<query>
<nilai> (input dari user) </nilai>
</query>
c. Panggiltopik.class
Servlet ini berfungsi untuk menerima variabel yang dikirimkan oleh link pada
variabel ‘modul’ dan ‘mk’. Kemudian servlet membuat dokumen XML yang
<topik>
<modul> (isi variabel ‘modul’ pada link) </modul>
<mk> (isi variabel ‘mk’ pada link) </mk>
</topik>
WEB-INF\classes.
BROWSER
1
Query.htm Ciptatpk.class
2 tampil 6
send create
3
XML Querytpk.xsl
process
5 4
Send data
topik.xml
Request data
Gambar 4.5b File-file yang berperan dalam query topik berdasar input dari
user
BROWSER
2
Topikktk.xsl Ciptatpk.class tampil 7
send 3 create
XML 4 Query.xsl
1 process process
Topik.xml
5
Send data 6
Request data
Gambar 4.5c File-file yang berperan dalam query topik berdasar kata kunci
yang tersedia
BROWSER
2
modul.xsl Panggiltopik.class tampil 7
send 3 create
XML 4 topikq.xsl
1 process process
modul.xml
5
Send data 6
Request data
Gambar 4.5d File-file yang berperan dalam query topik yang dilakukan dari
halaman modul.xml
4.4.2 Penyimpanan Materi Topik dan Fasilitas Tambahan untuk Materi Topik
dengan keinginan dosen yang menulis materinya. Ada berbagai macam format materi
yang dapat dituliskan, seperti HTML, MS Word, MS Power Point, Adobe PDF, serta
dosen menulis materi dalam format XML, karena dengan demikian maka materi ini
akan mudah dipertukarkan dan dimodifikasi. Khusus untuk materi yang ditulis dalam
format XML, penulis telah mempersiapkan fasilitas tambahan, yaitu stylesheet XSLT
untuk dokumen XML yang bersangkutan. Stylesheet XSLT ini dapat dipergunakan
dengan syarat dosen mengikuti struktur dokumen XML yang telah dipersiapkan
<topik>
<judul> (Judul topik) </judul>
<penulis> (Nama Penulis) </penulis>
<body> (isi dari topik)
<sub> (judul sub bagian materi) </sub>
</body>
</topik>
menampilkan tabel, gambar, serta kata-kata yang penting dari materi. Untuk
menampilkan gambar, maka dosen harus menyusun struktur dokumen XML sebagai
berikut.
<gambar>
<url> (nama file gambar yang bersangkutan) </url>
<keterangan> (keterangan gambar) <keterangan>
</topik>
Sedangkan untuk menampilkan tabel, maka struktur dokumen XML yang harus
<tabel>
<baris>
<kolom> (teks) </kolom><kolom> (teks) </kolom> …dst
</baris>
<baris>
<kolom> (teks) </kolom><kolom> (teks) </kolom> …dst
</baris>
… dst
</tabel>
Sedangkan kata-kata yang dipandang penting oleh dosen dapat dicetak tebal dengan
memasukkan kata-kata yang penting tersebut dalam elemen ‘penting’ seperti contoh
berikut ini.
<body>
<penting> Satu-satunya vendor database di Indonesia </penting>
</body>
peranan penting dalam aplikasi, yaitu membuat servlet, menerima dan mengirimkan
input ke XSLT dari servlet tersebut, serta melaksanak query data dengan XSLT. Pada
bagian ini contoh diambil dari query data mata kuliah, dengan sumber data file
‘kuliah.xml’.
Java merupakan bahasa yang dekat dengan internet. Maka banyak fitur Java
yang digunakan untuk mendukung aplikasi berbasis internet. Salah satunya adalah
servlet.
Untuk membuat sebuah servlet, Java menyediakan file Java Archive yaitu
‘servlet.jar’ dalam paket Java Development Kit nya. File ‘servlet.jar’ ini sebelumnya
harus disertakan dalam classpath. Pengesetan classpath telah dijelaskan dalam Bab
III di atas. Setelah itu, maka kita dapat meng-import class-class dalam paket
‘servlet.jar’ tersebut dalam program Java kita. Class-class yang diimport untuk
membuat sebuah servlet yang standar adalah class-class yang berada dalam direktori
membuat sebuah aplikasi Java yang standar adalah class-class yang berada di dalam
Perintah di atas kita letakkan di bagian paling atas dari listing program kita.
obyek untuk menerima data dari user. Di sini Java menyediakan sebuah metode yang
a. Deklarasi Obyek
diset ke variabel ‘res’. Sehingga ketika kita ingin menangkap atau melakukan
b. Menangkap input
String input, pilih, kode, nama, sks,t ujuan, jenis, semester, ktkunci;
input = req.getParameter("query");
pilih = req.getParameter("pilih");
Pada kode di atas, sebelumnya dideklarasikan string input, pilih, dan lain-lain.
Kemudian variabel string ‘input’ ini kita isi nilainya dengan variabel ‘query’
yang dikirimkan user. Begitu pula variabel string ‘pilih’ kita isi dengan
diset ke dalam variabel ‘res’. Bila respon kita adalah untuk mengirimkan
suatu teks, maka kita perlu memanggil metode Java yang lain yang berfungsi
untuk menuliskan teks. Di samping itu kita juga perlu menentukan jenis dari
respon tersebut, atau jenis dari teks yang kita outputkan. Kode dari bagian ini
res.setContentType("text/xml");
PrintWriter out = res.getWriter();
Menurut kode di atas, maka kita mengeset jenis output kita berbentuk
dokumen XML. Pada baris kedua kita melihat bahwa Java memanggil metode
untuk menuliskan teks, yaitu metode ‘getWriter’. Metode ini diset dalam
variabel out, jadi kita cukup menuliskan ‘out’ untuk membuat suatu teks.
Dalam hal ini penulis memilih membuat dokumen XML sebagai responnya
karena XSLT tidak mampu membaca variabel yang datang dari luar selain
dari dokumen XML. Kode untuk membuat dokumen XMLnya adalah sebagai
berikut.
tujuan = input;
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.println("<?xml-stylesheet href=\"http:// localhost: 8080/ skripsi/ xsl/ query.xsl \" type =
\"text/xsl\"?>");
out.println("<query><nilai>"+tujuan+"</nilai>");
out.println("<tipe>"+pilih+"</tipe></query>");
Isi dari elemen-elemen yang dibuat oleh servlet di ataslah yang dapat
Dalam bagian di atas telah dijelaskan bahwa respon servlet terhadap input
adalah membuat dokumen XML. Dokumen XML ini ditransformasikan oleh XSLT
Misalkan kita anggap respon di atas sebagai sebuah file dokumen XML
sebagai berikut.
<xsl:variable name="n_lokal">
<xsl:value-of select="query/nilai"/>
</xsl:variable>
<xsl:variable name="tipe">
<xsl:value-of select="query/tipe"/>
</xsl:variable>
Setelah itu XSLT memanggil sumber data, yaitu dokumen ‘kuliah.xml’, yang
menampung query dari user, XSLT mengubah query tersebut menjadi uppercase, atau
huruf besar semua. Hal ini perlu dilakukan karena lingkungan XSLT merupakan
lingkungan yang case sensitive. Jadi string ‘kuliah’ tidak sama dengan string ‘Kuliah’
atau ‘KULIAH’. Demikian pula isi elemen ‘tujuan’ dari dokumen sumber data harus
diubah manjadi uppercase semua. Proses perubahan case ini dilakukan dengan
a. Mengubah isi elemen ‘tujuan’ dokumen sumber. Sebelumnya isi elemen ini
<xsl:variable name="uppertujuan"
select="translate($n_lokal,
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXY')"/>
maka proses perbandingan siap dilakukan. Prosesnya dilakukan dengan kode sebagai
berikut.
<xsl:when test="contains($upperisi,$uppertujuan)">
………menampilkan data-data yang sesuai
</xsl:when>
Fungsi ‘contains’ di atas membandingkan apakah isi variabel ‘upperisi’
mengandung isi variabel ‘uppertujuan’. Bila ya, maka data-data yang sesuai akan
dipandang cukup oleh penulis dalam menjelaskan secara garis besar algoritma yang
digunakan penulis untuk membuat aplikasi ini. Keterangan mengenai bagian lain dari
Hasil tampilan dari aplikasi ini dapat dilihat pada bagian Lampiran.
oleh komputer. Bahasa XML juga sederhana, mudah dibaca dan dipelajari 14. Tool-
tool yang berkaitan dengan XMLpun mudah didapat, banyak yang gratis, dengan
dukungan yang luas dari berbagai vendor di seluruh dunia, termasuk didukung oleh
W3C.
Karena aplikasi ini bersifat penelitian, maka tentu masih banyak kekurangan
yang ada di dalamnya. Salah satunya yang paling menonjol adalah banyaknya
redundansi data pada sumber-sumber data XML yang ada, sehingga menyulitkan
proses pengembangan lebih lanjut, bila hanya mengandalkan struktur data pada
skripsi ini. Sehingga, untuk data-data dengan relasi kompleks dan dengan ukuran
yang besar, maka penerapan filesystems XML tidak tepat dan tidak efektif.
Namun, ini tidak mengurangi aspek scalability yang ingin ditunjukkan penulis
pada implementasi pembuatan situs berbasis XML. Dapat dilihat pada bagian-bagian
memisahkan content dan style dari suatu halaman web, sehingga memudahkan
pengembangan situs lebih lanjut. Kekurangan dari aspek redundansi data dapat
diatasi dengan menerapkan XML Database atau Sistem Konversi seperti yang telah
dijelaskan pada Bab II. Kekurangan lainnya adalah belum adanya fasilitas untuk
memodifikasi data secara otomatis. Modifikasi data harus dilakukan secara manual
Sedangkan kelebihan utama dari aplikasi ini adalah query data dilakukan
secara client side, di komputer client, sehingga tidak memberatkan kerja server,
dan XSLT. Proses ini sangat bermanfaat dalam suatu sistem data publishing berskala
besar. Bayangkan bila sistem menggunakan sebuah RDBMS yang dalam waktu yang
bersamaan diakses oleh ribuan user. Untuk dengan baik dapat melayani request-
request dari user tersebut sistem harus memiliki hardware yang sangat tangguh, yang
sering memakan biaya yang amat mahal. XML dan XSLT dapat membantu kinerja
server dengan cara melakukan query di client, dengan terlebih dahulu mendownload
file-file yang ingin diquerykan. Perbedaan proses query ini dapat dijelaskan pada
CLIENT SERVER
request
BROWSER SERVLET
display
respond
PARSER
Data
QUERY
XML XSLT
Data download
XML XSLT
skripsi ini, maka penulis membuat beberapa kesimpulan dan saran sebagai berikut.
5.1 Kesimpulan
digunakan untuk data-data yang tidak terlalu kompleks relasinya, dan tidak
2. Aplikasi dalam skripsi ini memiliki keunggulan utama yaitu query data
3. XML mampu mendukung terciptanya suatu gudang data yang lengkap untuk
suatu sistem, karena XML mampu melakukan pertukaran data dari berbagai
4. Sistem Pencarian Data dengan menampilkan kata kunci-kata kunci dari data
web yang baik. Semua yang dapat dilakukan oleh HTML dapat dilakukan
5.2. Saran
1. Agar aplikasi ini dapat diterapkan pada Sistem Distance Learning yang
sesungguhnya maka perlu dibuat salah satu dari dua cara untuk mengatasi
berbasis XML maka kita telah bergabung dalam jutaan pengembang lainnya
di seluruh dunia dalam misi mewujudkan suatu sistem yang universal, non
1. http://www.xml.com/pub/a/2000/07/26/xslt/xsltstyle.html
2. Quin, Liam, Open Source Database Toolkit: Resource and Techniques for
3. http://www.malt.com/index.cfm?fuseaction=articles.article1
papers/xml2001/papers/html/03-03-05.html
5. http://www.extropia.com/tutorials/xml/history.html
schema.html, 2000
7. http://www.textuality.com/px/talk/show/s-22.html
8. XML By Example
9. http://msdn.microsoft.com/webservices/building/xmldevelopment/msxml/def
ault.aspx?pull=/library/en-us/dnmsxml/html/xmlparser.asp
10. http://www.xmlsoftware.com/browsers.html
11. http://www.w3.org/TR/xslt
12. http:www.w3.org/TR/xslt20
13. Deitel, H.M dan Deitel, P.J, Java How To Program, Prentice Hall, 1998
Programming with Servlets and JSP, Wrox Press, 1999, halaman 1-319
LAMPIRAN
1. Halaman index_cari
Halaman ini dapat diakses dengan mengklik link Index Mata Kuliah pada
index_cari.htm atau pada link Mata Kuliah pada halaman-halaman yang lain.
Halaman kuliah.xml
3. Halaman modul.xml
Halaman ini dapat diakses dengan mengklik link Index Modul pada
Halaman modul.xml
4. Halaman topik dari modul Asas Teknologi Informasi untuk mata kuliah
Teknologi Informasi
Halaman ini dapat diakses dengan mengklik link pada modul yang bersangkutan.
Untuk halaman-halaman XML lainnya dari topik tidak ditampilkan karena dapat
Halaman ini dapat diakses dengan mengklik link Search Centre pada
Halaman query.htm
6. Halaman utama.htm
Halaman ini dapat diakses dengan mengklik link Index Kata Kunci pada
Halaman utama..htm
Halaman utama..htm pada query kata kunci ‘Computer-Aided
Software Engineering
Halaman utama.htm pada menu penampilan isi materi menurut
topiknya. Tampilan ini terjadi setelah user mengklik topik berdasar
kata kunci yang bersangkutan
Halaman utama.htm pada menu penampilan isi materi yang berformat
XML.
Lampiran 1 : Kode Program
File ‘index_cari.htm’
<html>
<head>
<title>Index Pencarian Data</title>
<script language="JavaScript">
<!--
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
// -->
File ‘mainktk.htm’
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
File ‘query.htm’
<html>
<head>
<title>Form Query</title>
<script language="JavaScript">
<!--
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
// -->
//-->
</script>
</head>
File ‘utama.htm’
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<frameset cols="179,*" frameborder="YES" border="0" framespacing="0" rows="*"
bordercolor="#0000CC">
<frame name="leftFrame" scrolling="YES" noresize src="topik.xml">
<frame name="mainFrame" src="mainktk.htm">
</frameset>
<noframes>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</noframes>
</html>
File ‘kuliah.xml’
</kuliah>
File ‘modul.xml’
File ‘topik.xml’
File ‘global.xsl’
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="global_header" match="/">
<table width="1000">
<tr><td width="150"></td>
<td bgcolor="#FFFF80" width="140" align="center">
<font face="Verdana" size="2" color="#FFFFFF"><a><xsl:attribute
name="href">http://localhost/skripsi/index_cari.htm
</xsl:attribute><xsl:attribute name="target">_top</xsl:attribute>
| HOME |</a></font></td>
<td width="150"></td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
File ‘kuliah.xsl’
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="global.xsl"/>
<xsl:template match="/">
<html>
<body><xsl:attribute name="bgcolor">#CCCC99</xsl:attribute>
<xsl:attribute name="text">#000000</xsl:attribute>
<xsl:attribute name="leftmargin">2</xsl:attribute>
<xsl:attribute name="topmargin">0</xsl:attribute>
<xsl:attribute name="marginwidth">0</xsl:attribute>
<xsl:attribute name="marginheight">0</xsl:attribute>
<xsl:call-template name="global_pic"/>
<xsl:call-template name="global_header"/>
<a><xsl:attribute name="name">top</xsl:attribute></a>
<table width="1000">
<tr><td width="150"></td>
<td width="700"><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>
<xsl:apply-templates/></font></td><td width="150"></td></tr>
<tr><td width="150"></td>
<td width="700"><a><xsl:attribute name="href">#top</xsl:attribute>ke atas</a></td>
<td width="150"></td></tr>
</table>
</body></html>
</xsl:template>
<xsl:template match="kuliah">
<u><b>Database mata kuliah yang diajarkan di MTI :</b></u>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="mk">
<p>
<xsl:choose>
<xsl:when test="jenis='Wajib'">
<table cellspacing="1" bgcolor="#669999">
<tr>
<td>
<b><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>
Kode:</font></b>
</td>
<td><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="@kodemk"/>
</font></td>
</tr>
<tr>
<td>
<b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>
Nama:</font></b>
</td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="nama"/>
</font></td>
</tr>
<tr>
<td><b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Jumlah SKS:
</font></b></td>
<td>
<font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="sks"/>
</font></td>
</tr>
<tr>
<td><b>
<font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Jenis:</font>
</b></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="jenis"/>
</font></td>
</tr>
<tr>
<td><b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Semester:
</font></b></td>
<td><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="semester"/>
</font></td>
</tr>
<tr>
<td><b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Tujuan:
</font></b></td>
<td></td>
</tr>
<tr>
<td></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="tujuan"/>
</font></td>
</tr>
</table>
</xsl:when>
<xsl:when test="jenis='Pilihan'">
<table cellspacing="1" bgcolor="#669000">
<tr>
<td><b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Kode:
</font></b></td>
<td><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="@kodemk"/>
</font></td>
</tr>
<tr>
<td><b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Nama:
</font></b></td>
<td><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="nama"/>
</font></td>
</tr>
<tr>
<td><b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Jumlah SKS:
</font></b></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="sks"/>
</font></td>
</tr>
<tr>
<td><b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Jenis:
</font></b></td>
<td><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="jenis"/>
</font></td>
</tr>
<tr>
<td><b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Tujuan:
</font></b></td>
<td></td>
</tr>
<tr><td></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="tujuan"/>
</font></td>
</tr>
</table>
</xsl:when>
</xsl:choose>
</p>
</xsl:template>
</xsl:stylesheet>
File ‘modul.xsl’
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="global.xsl"/>
<xsl:template match="/">
<html>
<body><xsl:attribute name="bgcolor">#CCCC99</xsl:attribute>
<xsl:attribute name="text">#000000</xsl:attribute>
<xsl:attribute name="leftmargin">2</xsl:attribute>
<xsl:attribute name="topmargin">0</xsl:attribute>
<xsl:attribute name="marginwidth">0</xsl:attribute>
<xsl:attribute name="marginheight">0</xsl:attribute>
<xsl:call-template name="global_pic"/>
<xsl:call-template name="global_header"/>
<a><xsl:attribute name="name">top</xsl:attribute></a>
<table width="1000">
<tr><td width="150"></td>
<td width="700"><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>
<xsl:apply-templates/></font></td>
<td width="150"></td></tr>
<tr><td width="150"></td>
td width="700"><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>
<a><xsl:attribute name="href">#top</xsl:attribute>ke atas</a></font></td>
<td width="150"></td></tr>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="top">
<font face="Verdana" size="2"><b>Index modul</b>
<xsl:apply-templates/></font>
</xsl:template>
<xsl:template match="modul">
<p>
<table cellspacing="1" bgcolor="#669999" width="700">
<tr><td><b><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Kode:</font></b></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="@kodemdl"/></font></td></tr>
<tr><td><b><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Nama:</font></b></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="nama"/></font></td></tr>
<tr><td><b><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Mata Kuliah:</font></b></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="@mk"/></font></td></tr>
<tr><td><b><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Tujuan:</font></b></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="tujuan"/></font></td></tr>
<tr><td><b><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Sumber:</font></b></td>
<td></td></tr>
<xsl:call-template name="pilih_tipe"/>
<tr><td><b><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Diselenggarakan:</font></b></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Minggu ke <xsl:value-of
select="@minggu"/></font></td></tr>
<tr><td bgcolor="#000000"></td><td bgcolor="#000000"></td></tr>
<tr><td><font face="verdana" size="2">Klik di <xsl:element name="A"><xsl:attribute
name="HREF">
http://localhost:8080/skripsi/servlet/Panggiltopik?modul=<xsl:value-of
select="nama"/>&mk=<xsl:value-of select="@mk"/>
</xsl:attribute>sini </xsl:element> untuk melihat daftar topik dari modul ini</font></td></tr>
</table>
</p>
</xsl:template>
<xsl:template name="pilih_tipe">
<xsl:for-each select="sumber">
<xsl:choose>
<xsl:when test='@tipe="Web"'>
<tr><td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Tipe :</font></td>
<td><u><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="@tipe"/></font></u></td></tr>
<tr><td></td><td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Alamat :</font></td></tr>
<xsl:for-each select="alamat">
<tr><td></td><td><a>
<xsl:attribute name="href">
<font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="."/></font>
</xsl:attribute>
<font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="."/></font></a><br/>---
</td></tr>
</xsl:for-each>
</xsl:when>
<xsl:when test='@tipe="Buku"'>
<tr><td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Tipe :</font></td>
<td><u><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="@tipe"/></font></u></td></tr>
<tr><td></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Judul :<xsl:value-of select="judul"/></font></td></tr>
<tr><td></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Pengarang :<xsl:value-of
select="pengarang"/></font></td></tr>
<tr><td></td>
<td><font><xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Penerbit :<xsl:value-of select="penerbit"/>,
<xsl:value-of select="tahun"/></font><br/>---</td></tr>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
File ‘topikktk.xsl’
<xsl:apply-templates/>
</body></html>
</xsl:template>
<xsl:template match="top">
<xsl:for-each select="topik/ktkunci">
<xsl:sort select="."/>
<font face="Verdana" size="2"><a><xsl:attribute name="href">
http://localhost:8080/skripsi/servlet/Ciptatpk?query=<xsl:value-of select="."/>
</xsl:attribute><xsl:attribute name="target">mainFrame</xsl:attribute><xsl:value-of select="."/></a>
</font><br/>
</xsl:for-each>
<p><a><xsl:attribute name="href">#top</xsl:attribute>ke atas</a></p>
</xsl:template>
</xsl:stylesheet>
File ‘topik.xsl’
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html><body><font face="Verdana" size="2">
<xsl:apply-templates/>
</font></body></html>
</xsl:template>
<xsl:template match="judul">
<b><xsl:apply-templates/></b><br/>
</xsl:template>
<xsl:template match="penulis">
<b><xsl:apply-templates/></b><br/>
</xsl:template>
<xsl:template match="body">
<p><xsl:apply-templates/></p>
</xsl:template>
<xsl:template match="body/sub">
<p><b><xsl:apply-templates/></b></p>
</xsl:template>
<xsl:template match="//penting">
<b><i><xsl:apply-templates/></i></b>
</xsl:template>
<xsl:template match="//gambar">
<p><img><xsl:attribute name="src">http://localhost/skripsi/images/<xsl:value-of select="url"/>
</xsl:attribute></img><br/>
<i><xsl:value-of select="keterangan"/></i></p>
</xsl:template>
<xsl:template match="//tabel">
<p><table border="1"><xsl:apply-templates/></table></p>
</xsl:template>
<xsl:template match="//tabel/nama">
<p><i><xsl:apply-templates/></i></p>
</xsl:template>
<xsl:template match="//tabel/baris">
<tr><xsl:apply-templates/></tr>
</xsl:template>
<xsl:template match="//tabel/baris/kolom">
<td><xsl:apply-templates/></td>
</xsl:template>
</xsl:stylesheet>
File ‘query.xsl’
<xsl:import href="global.xsl"/>
<xsl:variable name="n_lokal"><xsl:value-of select="query/nilai"/></xsl:variable>
</xsl:stylesheet>
File ‘querytpk.xsl’
<xsl:import href="global.xsl"/>
<xsl:template match="/">
<html><body><xsl:attribute name="bgcolor">#CCCC99</xsl:attribute>
<xsl:attribute name="text">#000000</xsl:attribute>
<xsl:attribute name="leftmargin">2</xsl:attribute>
<xsl:attribute name="topmargin">0</xsl:attribute>
<xsl:attribute name="marginwidth">0</xsl:attribute>
<xsl:attribute name="marginheight">0</xsl:attribute>
<xsl:call-template name="global_pic"/>
<xsl:call-template name="global_header"/>
<font face="Verdana" size="2">
</font></body></html>
</xsl:template>
</xsl:stylesheet>
File ‘topikq.xsl’
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="global.xsl"/>
<xsl:param name="modul" select="topik/modul"/>
<xsl:param name="mk" select="topik/mk"/>
<xsl:variable name="remote" select="document('http://localhost/skripsi/topik.xml')/top"/>
<xsl:template match="/">
<html><body><xsl:attribute name="bgcolor">#CCCC99</xsl:attribute>
<xsl:attribute name="text">#000000</xsl:attribute>
<xsl:attribute name="leftmargin">2</xsl:attribute>
<xsl:attribute name="topmargin">0</xsl:attribute>
<xsl:attribute name="marginwidth">0</xsl:attribute>
<xsl:attribute name="marginheight">0</xsl:attribute>
<xsl:call-template name="global_pic"/>
<xsl:call-template name="global_header"/>
<font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>
<p><table width="1000">
<tr><td width="150"></td>
<td>Topik-topik dalam modul <b><xsl:value-of select="$modul"/></b>
Mata Kuliah <b><xsl:value-of select="$mk"/></b>
</td>
<td width="150"></td></tr>
</table>
</p>
<xsl:for-each select="$remote/topik">
<xsl:if test="modul=$modul and @mk=$mk">
<table width="1000">
<tr><td width="150"></td>
<td bgcolor="#669999" width="700">
<table cellspacing="1" bgcolor="#669999">
<tr>
<td><b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Kode:
</font></b></td>
<td><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="@kodetpk"/>
</font></td>
</tr>
<tr><td><b><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute>Judul:</font></b></td>
<td><font>
<xsl:attribute name="face">Verdana</xsl:attribute>
<xsl:attribute name="size">2</xsl:attribute><xsl:value-of select="judul"/></font></td></tr>
</table>
</td>
<td width="150"></td></tr>
</table>
<xsl:choose>
<xsl:when test="isi[@tipe='url']">
<p>
<table width="1000">
<tr><td width="150"></td>
<td bgcolor="#CCCC99" width="700">
<table><font face="verdana" size="2">
File disimpan dalam bentuk <xsl:value-of select="isi/@doctype"/>
berukuran <xsl:value-of select="isi/@size"/>
<br/>Klik di
<xsl:element name="A"><xsl:attribute name="HREF">
<xsl:value-of select="isi"/>
</xsl:attribute><xsl:attribute name="target">
_blank</xsl:attribute>sini</xsl:element>
untuk melihat isi topik</font>
</table>
</td>
<td width="150"></td></tr>
</table>
</p>
</xsl:when>
<xsl:when test="isi[@tipe='lokal']">
<xsl:value-of select="isi"/>
</xsl:when>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</font></body></html>
</xsl:template>
</xsl:stylesheet>
File ‘Cipta.java’
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.lang.*;
if (pilih.equals(A))
{
kode = input;
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.println("<?xml-stylesheet href=\"http://localhost:8080/skripsi/xsl/query.xsl\" type=\"text/xsl\"?>");
out.println("<query><nilai>"+kode+"</nilai>");
out.println("<tipe>"+pilih+"</tipe></query>");
}
else if (pilih.equals(B))
{
nama = input;
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.println("<?xml-stylesheet href=\"http://localhost:8080/skripsi/xsl/query.xsl\" type=\"text/xsl\"?>");
out.println("<query><nilai>"+nama+"</nilai>");
out.println("<tipe>"+pilih+"</tipe></query>");
}
else if (pilih.equals(C))
{
sks = input;
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.println("<?xml-stylesheet href=\"http://localhost:8080/skripsi/xsl/query.xsl\" type=\"text/xsl\"?>");
out.println("<query><nilai>"+sks+"</nilai>");
out.println("<tipe>"+pilih+"</tipe></query>");
}
else if (pilih.equals(D))
{
jenis = input;
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.println("<?xml-stylesheet href=\"http://localhost:8080/skripsi/xsl/query.xsl\" type=\"text/xsl\"?>");
out.println("<query><nilai>"+jenis+"</nilai>");
out.println("<tipe>"+pilih+"</tipe></query>");
}
else if (pilih.equals(E))
{
semester = input;
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.println("<?xml-stylesheet href=\"http://localhost:8080/skripsi/xsl/query.xsl\" type=\"text/xsl\"?>");
out.println("<query><nilai>"+semester+"</nilai>");
out.println("<tipe>"+pilih+"</tipe></query>");
}
else if (pilih.equals(F))
{
tujuan = input;
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.println("<?xml-stylesheet href=\"http://localhost:8080/skripsi/xsl/query.xsl\" type=\"text/xsl\"?>");
out.println("<query><nilai>"+tujuan+"</nilai>");
out.println("<tipe>"+pilih+"</tipe></query>");
}
else if (pilih.equals(G))
{
ktkunci = input;
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.println("<?xml-stylesheet href=\"http://localhost:8080/skripsi/xsl/query.xsl\" type=\"text/xsl\"?>");
out.println("<query><nilai>"+ktkunci+"</nilai>");
out.println("<tipe>"+pilih+"</tipe></query>");
}
}
public void doPost (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
doGet (req,res);
}
File ‘Ciptatpk.java’
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.lang.*;
}
public void doPost (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
doGet (req,res);
}
}
File ‘Panggiltopik.java’
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.lang.*;
}
public void doPost (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
doGet (req,res);
}