Pembatasan/Fase XSD
Pembatasan digunakan untuk menentukan nilai yang dapat diterima untuk elemen atau atribut XML. Pembatasan pada elemen XML disebut faset.
Pembatasan Nilai
Contoh berikut mendefinisikan elemen yang disebut "usia" dengan batasan. Nilai usia 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 Kumpulan Nilai
Untuk membatasi konten elemen XML ke sekumpulan nilai yang dapat diterima, kami akan menggunakan batasan enumerasi.
Contoh di bawah ini mendefinisikan elemen yang disebut "mobil" 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 tipe "carType" dapat digunakan oleh elemen lain karena bukan merupakan bagian dari elemen "car".
Batasan pada Serangkaian Nilai
Untuk membatasi konten elemen XML untuk menentukan rangkaian 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 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 berikutnya mendefinisikan elemen yang disebut "inisial" dengan batasan. Satu-satunya nilai yang dapat diterima adalah TIGA 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 berikutnya juga mendefinisikan elemen yang disebut "inisial" dengan batasan. Satu-satunya nilai yang dapat diterima adalah TIGA 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 berikutnya mendefinisikan elemen yang disebut "pilihan" dengan batasan. Satu-satunya nilai yang dapat diterima adalah SATU dari huruf berikut: x, y, ATAU z:
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Contoh berikutnya mendefinisikan elemen yang disebut "prodid" dengan batasan. Satu-satunya nilai yang dapat diterima adalah LIMA digit secara berurutan, dan setiap digit harus dalam rentang dari 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>
Pembatasan Lain pada Serangkaian Nilai
Contoh di bawah ini mendefinisikan elemen yang disebut "huruf" dengan batasan. Nilai yang dapat diterima adalah nol atau lebih kemunculan huruf kecil dari a hingga 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 elemen yang disebut "huruf" dengan batasan. Nilai yang dapat diterima adalah satu atau lebih pasangan huruf, setiap pasangan terdiri dari huruf kecil diikuti dengan huruf besar. Misalnya, "sToP" akan divalidasi oleh pola ini, tetapi bukan "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 berikutnya mendefinisikan elemen yang disebut "kata sandi" dengan batasan. Harus ada tepat delapan karakter dalam satu baris dan karakter tersebut harus berupa huruf kecil atau huruf besar dari a hingga z, atau angka dari 0 hingga 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, kita akan menggunakan batasan spasi putih.
Contoh ini mendefinisikan elemen yang disebut "alamat" dengan batasan. Batasan whiteSpace diatur ke "pertahankan", yang berarti bahwa prosesor XML TIDAK AKAN menghapus karakter spasi putih 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 "alamat" dengan batasan. Batasan whiteSpace diatur ke "replace", yang berarti bahwa prosesor XML AKAN MENGGANTI semua karakter spasi putih (umpan baris, tab, spasi, dan carriage return) 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 "alamat" dengan batasan. Batasan whiteSpace diatur ke "collapse", yang berarti bahwa prosesor XML AKAN MENGHAPUS semua karakter spasi putih (umpan baris, tab, spasi, carriage return diganti dengan spasi, spasi awal dan akhir 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>
Pembatasan Panjang
Untuk membatasi panjang suatu nilai dalam suatu elemen, kita akan menggunakan batasan panjang, panjang maks, dan panjang min.
Contoh ini mendefinisikan elemen yang disebut "kata sandi" 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 "kata sandi" dengan batasan. 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>
Batasan untuk Tipe Data
Constraint | Description |
---|---|
enumeration | Defines a list of acceptable values |
fractionDigits | Specifies the maximum number of decimal places allowed. Must be equal to or greater than zero |
length | Specifies the exact number of characters or list items allowed. Must be equal to or greater than zero |
maxExclusive | Specifies the upper bounds for numeric values (the value must be less than this value) |
maxInclusive | Specifies the upper bounds for numeric values (the value must be less than or equal to this value) |
maxLength | Specifies the maximum number of characters or list items allowed. Must be equal to or greater than zero |
minExclusive | Specifies the lower bounds for numeric values (the value must be greater than this value) |
minInclusive | Specifies the lower bounds for numeric values (the value must be greater than or equal to this value) |
minLength | Specifies the minimum number of characters or list items allowed. Must be equal to or greater than zero |
pattern | Defines the exact sequence of characters that are acceptable |
totalDigits | Specifies the exact number of digits allowed. Must be greater than zero |
whiteSpace | Specifies how white space (line feeds, tabs, spaces, and carriage returns) is handled |