Home » XML » XML Schema : Pembatasan / Facet – Kode dan Contohnya

XML Schema : Pembatasan / Facet – Kode dan Contohnya

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Batasan digunakan untuk menentukan nilai yang dapat diterima untuk elemen atau atribut XML. Batasan pada elemen XML disebut faset.

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

ConstraintDeskripsi
enumerationMendefinisikan daftar nilai yang dapat diterima
fractionDigitsMenentukan jumlah maksimum tempat desimal yang diperbolehkan. Harus sama dengan atau lebih besar dari nol
lengthMenentukan jumlah pasti dari karakter atau item daftar diperbolehkan. Harus sama dengan atau lebih besar dari nol
maxExclusiveMenentukan batas atas untuk nilai numerik (nilai harus kurang dari nilai ini)
maxInclusiveMenentukan batas atas untuk nilai numerik (nilai harus kurang dari atau sama dengan nilai ini)
maxLengthMenentukan jumlah maksimum karakter atau item daftar yang diperbolehkan. Harus sama dengan atau lebih besar dari nol
minExclusiveMenentukan batas bawah untuk nilai numerik (nilai harus lebih besar dari nilai ini)
minInclusiveMenentukan batas bawah untuk nilai numerik (nilai harus lebih besar dari atau sama dengan nilai ini)
minLengthMenentukan jumlah minimum karakter atau item daftar yang diperbolehkan. Harus sama dengan atau lebih besar dari nol
patternMenentukan urutan karakter yang tepat yang dapat diterima
totalDigitsMenentukan jumlah digit yang diperbolehkan. Harus lebih besar dari nol
whiteSpaceMenentukan bagaimana white space (line feeds, tab, spasi, dan carriage return) ditangani

You may also like