PEMBAHASAN dan HASIL
4.1 TRANSLASI SKEMA
4.1.3 PEMBENTUKAN SKEMA DOKUMEN XML
Rancangan skema data semi tertsruktur berbasis XML yang telah dibuat, dijadikan sebagai dasar dalam membangun dokumen XML. Untuk membentuk dokumen XML dapat diimplemetasikan dengan membentuk dokumen dengan ekstensi .xsd, untuk elemen Mahasiswa yang telah dirancang, dokumen yang dibuat diberi nama Mhs.xsd.
Perangkat lunak yang digunakan pada penelitian ini menyediakan editor yang berbasis grafik dan editor teks, sehingga rancangan skema yang telah dibuat akan sesuai dengan implementasi yang dilakukan. Berikut adalah hasil implementasi dari skema elemen Mahasiswa dalam bentuk kode program XML;
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="Mahasiswa">
<xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="NRP" type="xs:integer"/>
<xs:element name="Nama" type="xs:string"/>
<xs:element name="TmLahir" type="xs:string"/>
<xs:element name="TgLahir" type="xs:date"/>
<xs:element name="NamaOrtu" type="xs:string"/>
<xs:element name="JnKelamin" type="xs:string"/>
<xs:element name="ThMasuk" type="xs:gYear"/>
<xs:element name="Alamat">
<xs:complexType>
<xs:sequence>
<xs:element name="Jalan" type="xs:string"/>
<xs:element name="Kabupaten" type="xs:string"/>
<xs:element name="Kodepos" type="xs:integer"/>
<xs:element name="NoTelp"/>
<xs:element name="ThLulusSMU" type="xs:gYear"/>
<xs:element name="NamaSMU" type="xs:string"/>
</xs:sequence>
Jika terdapat elemen yang mengandung elemen lain, elemen ini akan dideklarasikan sebagai elemen complextype, pada dokumen Mhs ini terdapat 3 (tiga) elemen complextype yaitu Mahasiswa, Alamat, dan SMU, sementara untuk elemen yang tidak mengandung elemen lain dideklarasikan sebagai elemen simpletype. Elemen simpletype yang terdapat pada skema dokumen XML dapat ditentukan tipe data elemen, seperti terlihat pada program XML, elemen NRP dideklarasikan sebagai elemen yang bertipe integer, sementara elemen Nama bertipe string. Setiap elemen yang digunakan tidak harus ditentukan tipenya, seperti pada elemen NoTelp yang tidak ditentukan tipenya.
Sehingga hal yang sangat mungkin jika setiap elemen yang digunakan tidak memiliki tipe data. Jika kode program skema dokumen XML Mhs ditampilkan dalam bentuk design view akan terlihat pada gambar di bawah ini:
32
Gambar 15. Skema dokumen Mhs.xsd
Setelah skema dokumen XML Mhs.xsd selesai dibentuk, berikutnya adalah membentuk DTD dari dokumen XML tersebut, adapun DTD tersebut adalah sebagai berikut:
<?xml version="1.0" encoding="UTF-8"?>
<!--DTD generated by XML Spy v4.2 U (http://www.xmlspy.com)-->
<!--Comment describing your root element-->
<!ELEMENT Mahasiswa (NRP, Nama, TmLahir, TgLahir, NamaOrtu, JnKelamin, ThMasuk, Alamat, SMU)>
<!ELEMENT NRP (#PCDATA)>
<!ELEMENT Nama (#PCDATA)>
<!ELEMENT TmLahir (#PCDATA)>
<!ELEMENT TgLahir (#PCDATA)>
<!ELEMENT NamaOrtu (#PCDATA)>
<!ELEMENT JnKelamin (#PCDATA)>
<!ELEMENT ThMasuk (#PCDATA)>
<!ELEMENT Alamat (Jalan, Kabupaten, Kodepos, NoTelp)>
<!ELEMENT SMU (ThLulusSMU, NamaSMU)>
<!ELEMENT Jalan (#PCDATA)>
<!ELEMENT Kabupaten (#PCDATA)>
<!ELEMENT Kodepos (#PCDATA)>
<!ELEMENT NoTelp ANY>
<!ELEMENT ThLulusSMU (#PCDATA)>
<!ELEMENT NamaSMU (#PCDATA)>
Seperti telah dijelaskan bahwa DTD digunakan untuk mendefinisikan struktur dari dokumen XML dan seringkali DTD direkomendasikan untuk meyakinkan kesesuaian pada dokumen XML. Definisi struktur dokumen XML yang dibuat oleh DTD meliputi
definisi elemen yang digunakan, deklarasi elemen pada DTD dilakukan dengan menggunakan element type declarations. Setiap elemen yang dideklarasikan harus ditentukan pula content specifications, yaitu kandungan yang dibolehkan pada elemen, biasanya deklarasi content specifications ditentukan berdasarkan dari tipe elemen pada skema dokumen XML. Untuk elemen yang telah memiliki tipe seperti string, integerdan lainnya, content specifications dideklarasikan dengan PCDATA, sedangkan elemen yang dideklarasikan dengan content specifications ANY dapat mengandung apapun termasuk PCDATA, elemen atau kombinasi dari elemen dan PCDATA, dan dapat juga merupakan sebuah elemen kosong (empty elements). Pada DTD, elemen complextype akan ditulis dengan menempatkan elemen yang dikandungnya sebagai content specifications, dimana banyak elemen yang dituliskan tergantung dari jumlah elemen yang dikandung.
Jika dilakukan analisa terhadap dokumen XML Mhs, berdasarkan dari skema dan DTD yang telah dibentuk, dokumen XML Mhs ini hanya dapat menampung 1 (satu) data Mahasiswa saja tidak bisa lebih, padahal dokumen Mhs harus dapat menampung sejumlah data yang lebih besar. Untuk mengatasi masalah ini, biasanya dilakukan dengan merubah root elemen menjadi elemen yang bersifat unbounded, yaitu elemen yang berfungsi sebagai indikator banyaknya data pada elemen, untuk data yang tidak terbatas yang dinyatakan dengan simbol 1..∞ pada dokumen xsd sedangkan pada DTD direpresentasikan dengan simbol plus (+), asterisk (*) dan question mark (?). Setelah dilakukan percobaan, ternyata langkah ini tidak dapat dilakukan, karena pada tools yang digunakan pada penelitian, root elemen tidak dapat dideklarasi sebagai elemen unbounded.
Setelah dilakukan beberapa kali percobaan, didapatkan cara yang dapat digunakan untuk mengatasi permasalahan daya tampung dokumen Mhs yang terbatas, yaitu dengan membuat dokumen XML lain yang diberi nama MhsAll.xsd. Skema dari dokumen MhsAll ini menggunakan skema dokumen Mhs sebagai referensi skema, hal ini dilakukan karena karakteristik dari XML yang bersifat reusable, sehingga memudahkan dalam pembuatan skema dokumen MhsAll.xsd.
Pembentukan skema MhsAll akan menggunakan elemen MhsAll sebagai root elemen yang mengandung elemen Mahasiswa. Elemen Mahasiswa yang digunakan kemudian dideklarasikan sebagai elemen unbounded, hal inilah yang dapat memecahkan
34
permasalahan daya tampung yang terbatas pada dokumen Mhs. Hasil dari pembuatan skema dokumen MhsAll dapat dilihat pada gambar di bawah ini;
Gambar 16. Skema dokumen MhsAll.xsd
Penggunaan skema dokumen Mhs sebagai referensi elemen pada pembentukan dokumen MhsAll menjadikan penulisan skema dilakukan dengan sederhana karena tidak perlu lagi dituliskan semua elemen yang digunakan pada dokumen MhsAll. Dari implementasi diatas, dapat terjawab dengan jelas mengapa XML dikatakan sebagai model data yang reusable.
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:include schemaLocation=" D:\TesisTitin\XMLFile\Mhs.xsd"/>
<xs:element name="MhsAll">
<xs:annotation>
<xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Mahasiswa" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Sebagai kelengkapan dari skema dokumen MhsAll.xsd, harus juga dibuat DTD dari dokumen MhsAll tersebut, dengan terbentuknya skema dan DTD dari dokumen MhsAll maka dokumen yang digunakan untuk menampung data mahasiswa yang menjadi alumni telah terbentuk. Berikut adalah bentuk DTD dari dokumen MhsAll.xsd yang akan berfungsi sebagai alat untuk melakukan validasi terhadap dokumen MhsAll yang akan dibentuk;
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<!--DTD generated by XML Spy v4.2 U (http://www.xmlspy.com)-->
<!--Comment describing your root element-->
<!ELEMENT Mahasiswa (NRP, Nama, TmLahir, TgLahir, NamaOrtu, JnKelamin, ThMasuk, Alamat, SMU)>
<!--Comment describing your root element-->
<!ELEMENT MhsAll (Mahasiswa+)>
<!ELEMENT NRP (#PCDATA)>
<!ELEMENT Nama (#PCDATA)>
<!ELEMENT TmLahir (#PCDATA)>
<!ELEMENT TgLahir (#PCDATA)>
<!ELEMENT NamaOrtu (#PCDATA)>
<!ELEMENT JnKelamin (#PCDATA)>
<!ELEMENT ThMasuk (#PCDATA)>
<!ELEMENT Alamat (Jalan, Kabupaten, Kodepos, NoTelp)>
<!ELEMENT SMU (ThLulusSMU, NamaSMU)>
<!ELEMENT Jalan (#PCDATA)>
<!ELEMENT Kabupaten (#PCDATA)>
<!ELEMENT Kodepos (#PCDATA)>
<!ELEMENT NoTelp ANY>
<!ELEMENT ThLulusSMU (#PCDATA)>
<!ELEMENT NamaSMU (#PCDATA)>
Selanjutnya penelitian dilanjutnya dengan membangun dokumen Prodi.xsd, proses pembuatan dokumen ini sama seperti pada dokumen Mhs.xsd, dimana rancangan skema data semi tertsruktur yang telah dibuat dijadikan sebagai dasar pembuatan dokumen Prodi.xsd. Berikut ini adalah program yang dipakai;
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="ProgramStudi">
<xs:annotation>
<xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
Elemen complextype pada dokumen Prodi ini hanya satu yaitu root elemen yang bernama ProgramStudi, elemen lain yang digunakan merupakan elemen simpletype.
36
Setiap elemen simpletype pada dokumen ini belum ditentukan tipe elemennya, hal ini dapat dilakukan karena elemen-elemen tersebut akan dideklarasikan pada DTD dengan tipe data ANY. Berikut adalah bentuk DTD dari skema Prodi;
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<!--DTD generated by XML Spy v4.2 U (http://www.xmlspy.com)-->
<!--Comment describing your root element-->
<!ELEMENT ProgramStudi (KodeProdi, NamaProdi, JenjangProdi, Akreditasi)>
<!ELEMENT KodeProdi ANY>
<!ELEMENT NamaProdi ANY>
<!ELEMENT JenjangProdi ANY>
<!ELEMENT Akreditasi ANY>
Pengalaman yang didapatkan pada saat membentuk skema dokumen Mhs dimana untuk penanganan terhadap masalah daya tampung dokumen, maka dibentuk skema dokumen ProdiAll yang menggunakan skema Prodi sebagai elemen referensi. Pada penelitian ini, hirarki yang dibentuk hanya sampai pada tingkat program studi saja, karena sampel data yang digunakan berasal dari 3 (tiga) program studi yang terdapat pada suatu universitas, dalam hal ini adalah Universitas Pembangunan Nasional “Veteran”
Jakarta. Perluasan hirarki sangat mungkin diperluas sampai pada tingkat universitas, sehingga setiap alumni akan diketahui berasal dari universitas dan program studi.
Sehingga untuk menampung jumlah data 3 (tiga) program studi tersebut, dibuat skema ProdiAll.xsd sebagai berikut:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:include schemaLocation="D:\TesisTitin\XMLFile\Prodi.xsd"/>
<xs:element name="ProdiAll">
<xs:annotation>
<xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="ProgramStudi" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Terlihat pada teks program untuk skema dokumen ProdiAll diatas, bahwa untuk penanganan jumlah program studi lebih dari satu, maka jumlah timbulnya maxOccurs dari elemen ProgramStudi dideklarasikan sebagai unbounded. Pembentukan skema dokumen tentunya dibarengi dengan dibentuknya DTD dari skema dokumen tersebut.
DTD yang dibentuk merupakan kelengkapan dari skema dokumen yang akan digunakan
agar dokumen XML memenuhi kebutuhan well-formed dan validation-formed. Berikut ini adalah DTD dari skema dokumen ProdiAll.xsd;
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<!--DTD generated by XML Spy v4.2 U (http://www.xmlspy.com)-->
<!--Comment describing your root element-->
<!ELEMENT Mahasiswa (NRP, Nama, TmLahir, TgLahir, NamaOrtu, JnKelamin, ThMasuk, Alamat, SMU)>
<!--Comment describing your root element-->
<!ELEMENT MhsAll (Mahasiswa+)>
<!ELEMENT NRP (#PCDATA)>
<!ELEMENT Nama (#PCDATA)>
<!ELEMENT TmLahir (#PCDATA)>
<!ELEMENT TgLahir (#PCDATA)>
<!ELEMENT NamaOrtu (#PCDATA)>
<!ELEMENT JnKelamin (#PCDATA)>
<!ELEMENT ThMasuk (#PCDATA)>
<!ELEMENT Alamat (Jalan, Kabupaten, Kodepos, NoTelp)>
<!ELEMENT SMU (ThLulusSMU, NamaSMU)>
<!ELEMENT Jalan (#PCDATA)>
<!ELEMENT Kabupaten (#PCDATA)>
<!ELEMENT Kodepos (#PCDATA)>
<!ELEMENT NoTelp ANY>
<!ELEMENT ThLulusSMU (#PCDATA)>
<!ELEMENT NamaSMU (#PCDATA)>
Skema terakhir yang dibentuk pada penelitian ini adalah skema dokumen Alumni.xsd. Seperti apa yang telah dijelaskan pada rancangan skema sebelumnya bahwa skema Alumni menggunakan skema Yudisium sebagai elemen referensi, maka pembentukan skema dokumen Alumni.xsd juga dilakukan setelah skema Yudisium.xsd terbentuk, hal tersebut dapat dilihat sebagai berikut;
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:include schemaLocation=" D:\TesisTitin\XMLFile\Yudisium.xsd"/>
<xs:element name="Alumni">
<xs:annotation>
<xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="ThYudisium"/>
<xs:element ref="Yudisium" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Pada pembentukan skema di atas, elemen yang terkandung pada elemen Alumni tidak dideklarasikan karena elemen elemen-elemen tersebut telah dideklarasikan pada elemen Yudisium. Sebagai elemen referensi, semua elemen pada elemen Yudisium akan terdapat juga oleh elemen Alumni. Berikut adalah skema dari Yudisium.xsd;
38
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="KodeProdi" type="xs:string"/>
<xs:element name="Yudisium">
<xs:annotation>
<xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="KodeProdi"/>
<xs:element name="MhsYudisium" maxOccurs="unbounded">
<xs:complexType>
Setelah elemen Alumni terbentuk, untuk menjadikan elemen ini dapat menampung jumlah data alumni sesuai dengan program studi yang beragam, maka kemudian dibentuk skema dokumen AlumniAll.xsd. Pembentukan ini dilakukan guna menghindari adanya keterbatasan dalam penyimpanan data alumni yang berasal dari tahun akademik yang berbeda.
Skema dokumen AlumniAll.xsd menggunakan skema Alumni.xsd sebagai elemen referensi, elemen Alumni ini yang kemudian dideklarasikan sebagai elemen yang bersifat unbounded, dengan pola pembuatan skema seperti ini kebutuhan akan skema yang bersifat hirarki dan jumlah data yang maksimal dapat diatasi. Berikut adalah skema dokumen AlumniAll.xsd tersebut.
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:include schemaLocation="D:\TesisTitin\XMLFile\Alumni.xsd"/>
<xs:element name="AlumiAll">
<xs:annotation>
<xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Alumni" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Terlihat pada teks program skema dokumen AlumniAll.xsd di atas yang menggunakan skema Alumni.xsd sebagai elemen referensi. Hal yang perlu diperhatikan pada saat menggunakan elemen referensi adalah lokasi skema dokumen yang digunakan, jika skema dokumen yang dijadikan elemen referensi tidak sesuai dengan yang tertera pada teks program, maka skema yang menggunakan tidak dapat digunakan, seperti terlihat pada teks program di atas.
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Ba-k (ZonaWarez.com) -->
<!--DTD generated by XML Spy v4.2 U (http://www.xmlspy.com)-->
<!--Comment describing your root element-->
<!ELEMENT AlumiAll (Alumni+)>
<!--Comment describing your root element-->
<!ELEMENT Alumni (ThYudisium, Yudisium+)>
<!ELEMENT KodeProdi (#PCDATA)>
<!--Comment describing your root element-->
<!ELEMENT Yudisium (KodeProdi, MhsYudisium+)>
<!ELEMENT ThYudisium ANY>
<!ELEMENT MhsYudisium (NrpMhs, IPK, TotalSKS)>
<!ELEMENT NrpMhs ANY>
<!ELEMENT IPK ANY>
<!ELEMENT TotalSKS ANY>