Friday, 25 September 2015

Namespaces

Namespaces   merupaka penambahan  suatu  string  pada  suatu  elemen. Namespaces  diimplementasikan  dengan  menempelkan  awalan  untuk  setiap
elemen dan atribut. Penulisannya dengan menambahkan string tertentu pada
elemen/atribut yang kemudian dibatasi oleh titik dua ( : ) antara namespace nama elemen/atribut. Setiap awalan adalah dipetakan ke URI oleh atribut xmlns:prefix. URI default juga dapat diberikan untuk elemen yang tidak memiliki prefix oleh atribut xmlns. Elemen dan atribut yang melekat pada URI yang sama merupakan berada pada namespace yang sama.


Tujuan namespaces adalah untuk membedakan antara nama elemen dan nama atribut yang sama namun memiliki arti yang berbeda dan untuk berbagai nama yang sama serta untuk semua grup terkait dengan elemen dan atribut dari satu aplikasi share XML sehingga perangkat lunak dapat dengan mudah mengenali mereka.

Kebutuhan Namespace
Seperti telah kita ketahui bersama bahwa sebuah dokumen XML memiliki nama elemen dan atribut yang digunakan oleh aplikasi untuk memproses dokumen XML tersebut. Namun, seperti kita ketahui bersama bahwa penamaan tersebut dapat kita definisikan sendiri. Namun dengan demikian ada kemungkinan suatu nama elemen yang kita gunakan memiliki nama yang sama dengan elemen lain padahal maksudnya berbeda. Jika kita menggunakan dokumen untuk diri kita sendiri, itu tidak jadi masalah, karena kita dapat memberikan nama elemen tersebut berbeda. Namun jika dokumen kita digunakan oleh bayak orang atau kita yang menggunakan dokumen orang lain, maka ada kemungkinan hal tersebut terjadi. Dan aplikasi bisa saja salah dalam menampilkan  dokumen  sehingga  hasil  keluaran  berbeddengan  yang kita harapkan. Jadi solusi untuk menghindari hal itu adalah dengan menambahkan namespace. Penggunaan Namespace dengan memberikan awalan tertentu sebagai  pembeddengan  elemen  lainnya  dan  dipisahkan  tanda  titik  dua dengan nama elemen.


Sintaks Namespace
Untuk kasus penggunaan elemen adalah misalnya jika kita ingin menuliskan sebuah  dokumen  untuk  menyimpan  nama  bambu,  dimana  bambu  yang pertama merupakan data untuk menyatakan bahwa sebuah bambu akan digunakan untuk membuat pagar rumah dimana penulisan elemen tersebut adalah sebagai berikut :

<bambu>
<jenis>Jawa</jenis>
<panjang>2</panjang>
</bambu>

sedangkan addokumen yang keduamenyatakan  bahwa bambu itu adalah sebuah merk produk dengan penulisan dokumen :

<bambu>
<jumlah>246</jumlah>
<hargasatuan>200</hargasatuan>
</bambu>



Jika kita menggabungkan elemen tersebut dengan penulisan seperti berikut :
<bambu>
<jenis>Jawa</jenis>
<panjang>2</panjang>
</bambu>
<bambu>
<jumlah>246</jumlah>
<hargasatuan>200</hargasatuan>
</bambu>

maka dalam pemprosesannya akan ambigu antara elemen bambu, maka solisinya adalah dengan menggunakan namespace, sehingga penulisan dokumen tersebut adalah :

<bahan>
<n_pertama:bambu xmlns:n_pertama='Namespace1'>
<n_pertama:jenis>Jawa</n_pertama:jenis>
<n_pertama:panjang>3m</n_pertama:panjang>
</n_pertama:bambu>
<n_kedua:bambu xmlns:n_kedua='Namespace2'>
<n_kedua:jumlah>100</n_kedua:jumlah>
<n_kedua:hargasatuan>300</n_kedua:hargasatuan>
</n_kedua:bambu>
</bahan>

simpan file tersebut dengan nama contoh4_1.xml dan jalankan. Jika dokumen tersebut dijalankan maka hasilnya adalah sebagai berikut :

Namespaces dan DTD
Namespace perludideklarasikan pada Document Type Definition (DTD) agar dokumen yang kita buat menjadi falid. Pendeklarasiannya dengan menuliskan :

<prefiks:nama_elemen xmlns:prefiks=”Namespace”>

prefiks adalah awalan yang digunakan, nama_elemen merupakan nama elemen yang akan diberi namespace karena memiliki kesamaan nama dengan elemen lain namun berbeda maksud.

Sebagai contoh, buatlah file XML dengan nama filenya adalah contoh4_2.xml yang isinya adalah sebagai berikut :

<!DICTYPE barang [
<!ELEMENT barang (bambu+)>
<n_pertama:bambu
<n_kedua:bambu
]>

No comments:

Post a Comment