Pembatasan digunakan untuk mendefinisikan nilai-nilai yang dapat diterima untuk elemen XML atau atribut. Pembatasan elemen XML disebut aspek.
Pembatasan Nilai
Contoh berikut mendefinisikan sebuah elemen yang disebut "age" dengan pembatasan. Nilai usia tidak dapat 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>
Pembatasan pada Set Nilai
Untuk membatasi isi dari elemen XML untuk seperangkat nilai-nilai yang dapat diterima, kami akan menggunakan kendala pencacahan.
Contoh di bawah ini mendefinisikan sebuah elemen yang disebut "car" dengan pembatasan. 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 bisa juga 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>
Note: Dalam hal ini jenis "carType" dapat digunakan oleh unsur-unsur lain karena itu bukan bagian dari "car" elemen.
Pembatasan pada Seri Nilai
Untuk membatasi isi dari elemen XML untuk mendefinisikan serangkaian angka atau huruf yang bisa digunakan, kita akan menggunakan kendala pola.
Contoh di bawah ini mendefinisikan sebuah elemen yang disebut "letter" dengan pembatasan. Satu-satunya nilai yang dapat diterima adalah SATU dari 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 berikutnya mendefinisikan sebuah elemen yang disebut "initials" dengan pembatasan. Satu-satunya nilai yang dapat diterima adalah TIGA dari huruf huruf besar dari ke 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 berikutnya juga mendefinisikan sebuah elemen yang disebut "initials" dengan pembatasan. Satu-satunya nilai yang dapat diterima adalah TIGA dari huruf kecil atau huruf huruf dari ke 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 berikutnya mendefinisikan sebuah elemen yang disebut "choice" dengan pembatasan. Satu-satunya nilai yang dapat diterima adalah SATU dari surat-surat berikut: x, y, z OR:
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Contoh berikutnya mendefinisikan sebuah elemen yang disebut "prodid" dengan pembatasan. Satu-satunya nilai yang dapat diterima adalah FIVE digit secara berurutan, dan masing-masing digit harus dalam kisaran dari 0 sampai 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>
Pembatasan lain pada Seri Nilai
Contoh di bawah ini mendefinisikan sebuah elemen yang disebut "letter" dengan pembatasan. Nilai diterima adalah nol atau lebih kejadian dari 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 berikutnya juga mendefinisikan sebuah elemen yang disebut "letter" dengan pembatasan. Nilai diterima adalah satu atau lebih pasang huruf, masing-masing pasangan terdiri dari huruf kecil diikuti dengan huruf besar. Misalnya, "sToP" akan divalidasi oleh pola ini, tapi tidak "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 sebuah elemen yang disebut "gender" dengan pembatasan. Satu-satunya nilai yang dapat diterima adalah laki-laki atau perempuan:
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Contoh berikutnya mendefinisikan sebuah elemen yang disebut "password" dengan pembatasan. Harus ada tepat delapan karakter berturut-turut dan karakter-karakter harus huruf kecil atau huruf besar dari a sampai z, atau nomor 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 Spasi
Untuk menentukan bagaimana karakter spasi harus ditangani, kami akan menggunakan kendala spasi.
Contoh ini mendefinisikan sebuah elemen yang disebut "address" dengan pembatasan. Kendala spasi diatur ke "preserve" , yang berarti bahwa prosesor XML TIDAK AKAN menghapus karakter spasi:
<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 sebuah elemen yang disebut "address" dengan pembatasan. Kendala spasi diatur ke "replace" , yang berarti bahwa prosesor XML AKAN MENGGANTI semua karakter putih ruang (line feed, tab, spasi, dan tombol kembali) 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 sebuah elemen yang disebut "address" dengan pembatasan. Kendala spasi diatur ke "collapse" , yang berarti bahwa prosesor XML AKAN HAPUS semua karakter spasi (line feed, tab, spasi, tombol kembali diganti dengan spasi, ruang terkemuka dan trailing dihapus, dan beberapa ruang direduksi menjadi satu ruang):
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Pembatasan Panjang
Untuk membatasi panjang nilai dalam elemen, kita akan menggunakan panjang, maxlength, dan kendala MINLENGTH.
Contoh ini mendefinisikan sebuah elemen yang disebut "password" dengan pembatasan. Nilai harus persis 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 pembatasan. Nilai 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>
Pembatasan untuk Datatypes
Paksaan | Deskripsi |
---|---|
enumeration | Mendefinisikan sebuah daftar nilai yang diterima |
fractionDigits | Menentukan jumlah maksimum tempat desimal diperbolehkan. Harus sama dengan atau lebih besar dari nol |
length | Menentukan jumlah yang tepat dari karakter atau daftar item 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 daftar item 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 daftar item diperbolehkan. Harus sama dengan atau lebih besar dari nol |
pattern | Mendefinisikan urutan yang tepat dari karakter yang dapat diterima |
totalDigits | Menentukan jumlah yang tepat dari angka diperbolehkan. Harus lebih besar dari nol |
whiteSpace | Menentukan bagaimana ruang putih (line feed, tab, spasi, dan tombol kembali) ditangani |