Monday, June 15, 2015

XSD Enumeration

Apabila pada kesempatan sebelumnya kita berhasil memvalidasi XSD menggunakan mediator. Maka pada kesempatan kali ini kita akan mencoba membuat XSD menggunakan enum atau membatasi data yang dapat masuk pada XSD.

Pada dasarnya XSD memiliki banyak atribut yang dapat digunakan untuk membantu menyeleksi data. Seperti menggunakan tipe data yang telah disediakan seperti string, decimal, integer, boolean, date,time dll.

Selain tipe data tersebut di atas kita juga dapat mendeklarasikan tipe data sendiri yang sebenarrnya merupakan element yang memiliki element sederhana. Pada kesempatan kali ini kita akan mencoba membuat sebuah type data yang memiliki batasan-batasan data pada XSD.

Seperti halnya pada kebanyakan bahasa pemprograman, tentunya kita sering menemui enumeration. Enumeration adalah sebuah tipe data yang sudah ditentukan terlebih dahulu nilai-nilainya. Ketika kita membuat sebuah service ada kalanya kita sangat memerlukan penggunaan enum untuk membantu dalam pembersihan data dari pihak-pihak yang sengaja maupun tidak sengaja mengisi data yang tidak sesuai.

Baiklah, langsung saja kita memulai membuat sebuah xsd dengan membuat enum sebagai satu type elemennya. Berikut adalah source xsd yang kita buat : 


<xs:schema attributeformdefault="unqualified" elementformdefault="qualified" targetnamespace="http://xmlns.oracle.com/Test/Test2/bpelValidator" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://xmlns.oracle.com/Test/Test2/bpelValidator">
<xs:element name="process">
<xs:complextype>
<xs:sequence>
<xs:element name="String" type="xs:string"/>
                                <xs:element name="Integer" type="xs:integer"/>
                                <xs:element name="Date" type="xs:date"/>
                                <xs:element name="Boolean" type="xs:boolean"/>
                                <xs:element name="StringUseEnum" type="enumData"/>
</xs:sequence>
</xs:complextype>
</xs:element>
<xs:element name="processResponse">
<xs:complextype>
<xs:sequence>
<xs:element name="result" type="xs:string"/>
</xs:sequence>
</xs:complextype>
        </xs:element>
        <xs:simpletype name="enumData">
          <xs:restriction base="xs:string">
            <xs:enumeration value="ENUM1"/>
            <xs:enumeration value="ENUM2"/>
            <xs:enumeration value="ENUM3"/>
         </xs:restriction>
        </xs:simpletype>
</xs:schema>



Apabila kita mencari cara membuat enum, pasti anda akan menjumpai xsd yang tiba-tiba memiliki "xs" atau "xsd" di depan setiap tag. Mengapa demikian?  "xs" atau "xsd" pada tag tersebut membantu kita dalam menentukan asal element tersebut berasal. Kita akan membuat sebuah type data baru yg akan kita sebut enumData dan bukan type data asli yang sudah terdefinisi dari "http://www.w3.org/2001/XMLSchema" sehingga kita harus mendefinisikannya pada xsd kita dari mana element tersebut berasal. 

Apabila kita lht kembali di atas maka akan terlihat 2 macam deklarasi yang ada : 
xmlns:xs="http://www.w3.org/2001/XMLSchema"  
=> memiliki nama alias "xs" yang nantinya setiap element yang terdefinisi harus di beri "xs" di depan setiap element yang akan digunakan.
xmlns="http://xmlns.oracle.com/Test/Test2/bpelValidator" 
=> membuat element yang terdefinisi pada file yang memiliki namespace tersebut dapat digunakan pada xsd tanpa seperti penggunaan element normal.

Dari keterangan tersebut sebenarnya kita bsa memberi alias apa saja pada saat mendeklarasi element. Setelah mengetahui cara kerja dari pendeklarasian pada xsd. Kita bisa menentukan bagaimana cara membuat type data baru dengan lebih mudah. Seperti misalkan kita balik kegiatan pendeklarasian element yang akan digunakan agar lebih sedikit perubahan yang dibutuhkan pada xsd yang telah dibuat sebelumnya. Seperti contoh di bawah : 

Cara Lain Penulisan XSD dengan Tambahan Element Baru
Demikian sekilas mengenai pembuatan enumeration dan hal- hal yang diperlukan serta pengertiannya. Semoga membantu. 



No comments:

Post a Comment