Batasan digunakan untuk menentukan nilai yang dapat diterima untuk elemen atau atribut XML. Batasan pada elemen XML disebut faset.
Section Artikel
Batasan Nilai
Contoh berikut mendefinisikan elemen yang disebut “age” dengan batasan. Nilai “age” tidak boleh lebih rendah dari 0 atau lebih besar dari 120:
<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element>
Batasan pada Set Nilai
Untuk membatasi konten elemen XML ke satu set nilai yang dapat diterima, kita akan menggunakan batasan enumerasi.
Contoh di bawah ini mendefinisikan elemen yang disebut “car” dengan batasan. Satu-satunya nilai yang dapat diterima adalah: Audi, Golf, BMW:
<xs:element name="car"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh di atas juga bisa ditulis seperti ini:
<xs:element name="car" type="carType"/> <xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>
Catatan: Dalam hal ini, jenis “carType” dapat digunakan oleh elemen lain karena bukan merupakan bagian dari elemen “car”.
Batasan pada Serangkaian Nilai
Untuk membatasi konten elemen XML untuk mendefinisikan serangkaian angka atau huruf yang dapat digunakan, kita akan menggunakan batasan pola.
Contoh di bawah ini mendefinisikan elemen yang disebut “huruf” dengan batasan. Satu-satunya nilai yang dapat diterima adalah SALAH SATU huruf LOWERCASE dari a sampai z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh selanjutnya mendefinisikan elemen yang disebut “initials” dengan batasan. Satu-satunya nilai yang dapat diterima adalah TIGA dari huruf UPPERCASE dari a sampai z:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh selanjutnya juga mendefinisikan elemen yang disebut “initials” dengan batasan. Satu-satunya nilai yang dapat diterima adalah TIGA dari huruf LOWERCASE ATAU UPPERCASE dari a sampai z:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh selanjutnya mendefinisikan elemen yang disebut “choice” dengan batasan. Satu-satunya nilai yang dapat diterima adalah SALAH SATU dari huruf berikut: x, y, OR z:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh selanjutnya mendefinisikan elemen yang disebut “prodid” dengan batasan. Satu-satunya nilai yang dapat diterima adalah LIMA digit secara berurutan dan setiap digit harus dalam rentang 0 hingga 9:
<xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element>
Batasan Lain pada Serangkaian Nilai
Contoh di bawah ini mendefinisikan elemen yang disebut “letter” dengan batasan. Nilai yang dapat diterima adalah nol atau lebih kemunculan huruf kecil dari a sampai z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh selanjutnya juga mendefinisikan elemen yang disebut “letter” dengan batasan. Nilai yang dapat diterima adalah satu atau lebih pasang huruf, setiap pasangan terdiri dari huruf kecil diikuti dengan huruf besar. Misalnya, “sToP” akan divalidasi dengan pola ini, tetapi tidak dengan “Stop” atau “STOP” atau “stop”:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh berikutnya mendefinisikan elemen yang disebut “gender” dengan batasan. Satu-satunya nilai yang dapat diterima adalah pria ATAU wanita:
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh selanjutnya mendefinisikan elemen yang disebut “password” dengan batasan. Harus ada tepat delapan karakter dalam satu baris dan karakter tersebut harus huruf kecil atau huruf besar dari a sampai z, atau angka dari 0 sampai 9:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> </xs:element>
Pembatasan Karakter Whitespace
Untuk menentukan bagaimana karakter spasi harus ditangani, kita akan gunakan batasan whiteSpace.
Contoh ini mendefinisikan elemen yang disebut “address” dengan batasan. Batasan whiteSpace disetel ke “preserve”, yang berarti pemroses XML TIDAK AKAN menghapus karakter spasi apa pun:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh ini juga mendefinisikan elemen yang disebut “address” dengan batasan. Batasan whiteSpace disetel ke “replace”, yang berarti bahwa pemroses XML AKAN MENGGANTI semua karakter spasi (umpan baris, tab, spasi, dan tanda gulir) dengan spasi:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh ini juga mendefinisikan elemen yang disebut “address” dengan batasan. Batasan whiteSpace disetel ke “collaps”, yang berarti bahwa prosesor XML AKAN MENGHAPUS semua karakter spasi putih (baris feed, tab, spasi, carriage return diganti dengan spasi, spasi di depan dan di belakang dihapus dan beberapa spasi dikurangi menjadi satu spasi):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
Batasan Panjang
Untuk membatasi panjang nilai dalam sebuah elemen, kita akan menggunakan batasan length, maxLength, dan minLength.
Contoh ini mendefinisikan elemen yang disebut “password” dengan batasan. Nilainya harus tepat delapan karakter:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Contoh ini mendefinisikan elemen lain yang disebut “password” dengan batasan. Nilainya harus minimal lima karakter dan maksimal delapan karakter:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Batasan untuk Tipe Data
Constraint | Deskripsi |
---|---|
enumeration | Mendefinisikan daftar nilai yang dapat diterima |
fractionDigits | Menentukan jumlah maksimum tempat desimal yang diperbolehkan. Harus sama dengan atau lebih besar dari nol |
length | Menentukan jumlah pasti dari karakter atau item daftar diperbolehkan. Harus sama dengan atau lebih besar dari nol |
maxExclusive | Menentukan batas atas untuk nilai numerik (nilai harus kurang dari nilai ini) |
maxInclusive | Menentukan batas atas untuk nilai numerik (nilai harus kurang dari atau sama dengan nilai ini) |
maxLength | Menentukan jumlah maksimum karakter atau item daftar yang diperbolehkan. Harus sama dengan atau lebih besar dari nol |
minExclusive | Menentukan batas bawah untuk nilai numerik (nilai harus lebih besar dari nilai ini) |
minInclusive | Menentukan batas bawah untuk nilai numerik (nilai harus lebih besar dari atau sama dengan nilai ini) |
minLength | Menentukan jumlah minimum karakter atau item daftar yang diperbolehkan. Harus sama dengan atau lebih besar dari nol |
pattern | Menentukan urutan karakter yang tepat yang dapat diterima |
totalDigits | Menentukan jumlah digit yang diperbolehkan. Harus lebih besar dari nol |
whiteSpace | Menentukan bagaimana white space (line feeds, tab, spasi, dan carriage return) ditangani |