XSD Batas / Facets

Pengaturan (restriction) digunakan untuk mendefinisikan nilai yang diterima bagi elemen XML atau atribut. Pengaturan bagi elemen XML disebut sebagai facet.

Pengaturan nilai

Contoh berikut mendefinisikan elemen yang disebutkan "age" dengan batasan. Nilai "age" tidak boleh kurang dari 0 atau lebih tinggi 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>

Pengaturan untuk kelompok nilai

Untuk menentukan konten elemen XML menjadi suatu kelompok nilai yang dapat diterima, kita harus menggunakan pengaturan daftar (enumeration constraint).

Contoh berikut mendefinisikan elemen yang disebutkan "car" dengan batasan. Nilai yang diterima hanya 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 dapat ditulis:

<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>

Keterangan:Dalam kasus ini, tipe "carType" dapat digunakan oleh elemen lain, karena ia bukan bagian dari elemen "car".

Pengaturan untuk sejumlah nilai

Untuk menentukan konten elemen XML menjadi urutan bilangan atau huruf yang dapat digunakan, kita harus menggunakan pengaturan paten (pattern constraint).

Contoh berikut mendefinisikan elemen yang disebutkan "letter" dengan batasan. Nilai yang diterima hanya huruf kecil a - z satu:

<xs:element name="letter">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-z]"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Contoh berikut mendefinisikan elemen yang disebutkan "initials" dengan batasan. Nilai yang diterima adalah huruf besar A - Z sebanyak tiga:

<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 berikut juga mendefinisikan elemen yang disebutkan "initials" dengan batasan. Nilai yang diterima adalah huruf besar atau kecil a - z sebanyak tiga:

<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 berikut mendefinisikan elemen yang memiliki batasan bernama "choice". Nilai yang diterima adalah salah satu huruf 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 berikut mendefinisikan elemen yang memiliki batasan bernama "prodid". Nilai yang diterima adalah urutan lima angka Arab, dan setiap angka berada dalam rentang 0-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 untuk sejumlah nilai

Contoh di bawah ini mendefinisikan elemen yang memiliki batasan bernama "letter". Nilai yang diterima adalah nol atau lebih huruf a-z:

<xs:element name="letter">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="([a-z])*"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Contoh di bawah ini mendefinisikan elemen yang memiliki batasan bernama "letter". Nilai yang diterima adalah pasangan atau pasangan-pasangan huruf, setiap pasangan huruf disusun dari huruf kecil diikuti huruf besar. Sebagai contoh, "sToP" akan melalui verifikasi ini, tetapi "Stop", "STOP" atau "stop" tidak dapat melalui verifikasi:

<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 di bawah ini mendefinisikan elemen yang memiliki batasan bernama "gender". Nilai yang diterima adalah male atau female:

<xs:element name="gender">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="male|female"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Contoh di bawah ini mendefinisikan elemen yang memiliki batasan bernama "password". Nilai yang diterima adalah baris karakter yang terdiri dari 8 karakter, karakter-karakter ini harus huruf besar atau kecil a-z atau angka 0-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>

Batasan karakter spasi

Untuk menentukan cara pengelolaan karakter spasi (whitespace characters), kita harus menggunakan batasan whiteSpace:

Contoh di bawah ini mendefinisikan elemen yang memiliki batasan bernama "address". Batasan whiteSpace ini diatur menjadi "preserve", yang berarti pemroses XML tidak akan menghapus sebarang 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 elemen yang dinamai "address" dengan batasan. WhiteSpace batasan disetel menjadi "replace", yang berarti pemroses XML akan menghapus semua karakter kosong (garis putar, enter, spasi, dan tab):

<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 dinamai "address" dengan batasan. WhiteSpace batasan disetel menjadi "collapse", yang berarti pemroses XML akan menghapus semua karakter kosong (garis putar, enter, spasi, dan tab akan diganti dengan spasi, spasi awal dan akhir akan dihapus, serta spasi berurutan akan disingkat menjadi satu spasi):

<xs:element name="address">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:whiteSpace value="collapse"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Pengaturan panjang

Untuk membatasi panjang nilai elemen, kita perlu menggunakan batasan length, maxLength, dan minLength.

Pada contoh ini, elemen yang memiliki batasan dan dinamai "password" harus tepat 8 karakter:

<xs:element name="password">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:length value="8"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Contoh ini juga mendefinisikan elemen yang dinamai "password" dengan batasan. Nilainya minimal 5 karakter, maksimal 8 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>

Pengaturan tipe data

Pengaturan Deskripsi
enumeration Definisi daftar nilai yang diizinkan
fractionDigits Definisi maksimum titik desimal yang diizinkan. Harus lebih besar atau sama dengan 0.
length Definisi jumlah karakter atau item dalam daftar yang diizinkan. Harus lebih besar atau sama dengan 0.
maxExclusive Definisi batas atas nilai. Nilai yang diizinkan harus kurang dari nilai ini.
maxInclusive Definisi batas atas nilai numerik. Nilai yang diizinkan harus lebih kecil atau sama dengan nilai ini.
maxLength Definisi jumlah maksimum karakter atau item dalam daftar yang diizinkan. Harus lebih besar atau sama dengan 0.
minExclusive Definisi batas bawah nilai numerik. Nilai yang diizinkan harus lebih besar dari nilai ini.
minInclusive Definisi batas bawah nilai numerik. Nilai yang diizinkan harus lebih besar atau sama dengan nilai ini.
minLength Definisi jumlah minimum karakter atau item dalam daftar yang diizinkan. Harus lebih besar atau sama dengan 0.
pattern Definisi urutan karakter yang diizinkan. Harus lebih besar dari 0.
totalDigits Definisi jumlah titik desimal yang diizinkan. Harus lebih besar dari 0.
whiteSpace Definisi cara menangani spasi putih (garis putar, enter, spasi, dan tab)