XSD 限定 / Facets
- Halaman Sebelumnya Atribut XSD
- Halaman Berikutnya Element XSD
Pengaturan (restriction) digunakan untuk mendefinisikan nilai yang diterima bagi elemen XML atau atribut. Pengaturan bagi elemen XML disebutnya sebagai facet.
Pengaturan nilai
contoh berikut mendefinisikan elemen yang disebutkan "age" dengan batasan. Nilai "age" tidak boleh di bawah 0 atau di atas 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 mengebatasi konten elemen XML menjadi 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 mengebatasi konten elemen XML menjadi urutan angka atau huruf yang dapat digunakan, kita harus menggunakan pengaturan pola (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 menentukan elemen yang disebut "choice" dengan batasan. 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 menentukan elemen yang disebut "prodid" dengan batasan. Nilai yang diterima adalah deret angka berupa lima digit 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 sekumpulan nilai
Contoh berikut menentukan elemen yang disebut "letter" dengan batasan. Nilai yang diterima adalah nol atau lebih banyak 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 berikut menentukan elemen yang disebut "letter" dengan batasan. Nilai yang diterima adalah pasangan atau lebih banyak pasangan huruf, setiap pasangan huruf disusun dari huruf kecil kemudian huruf besar. Sebagai contoh, "sToP" akan melalui pengesahan dengan mode ini, tetapi "Stop", "STOP" atau "stop" tidak dapat melalui pengesahan:
<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 berikut menentukan elemen yang disebut "gender" dengan batasan. 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 berikut menentukan elemen yang disebut "password" dengan batasan. 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 kosong
Untuk menentukan cara pengendalian karakter kosong (whitespace characters), kita perlu menggunakan batasan whiteSpace.
Contoh berikut menentukan elemen yang disebut "address" dengan batasan. Batasan whiteSpace disetel ke "preserve", yang berarti pemroses XML tidak akan menghapus sebarang karakter kosong:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
这个例子也定义了带有一个限定的名为 "address" 的元素。这个 whiteSpace 限定被设置为 "replace",这意味着 XML 处理器将移除所有空白字符(换行、回车、空格以及制表符):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
这个例子也定义了带有一个限定的名为 "address" 的元素。这个 whiteSpace 限定被设置为 "collapse",这意味着 XML 处理器将移除所有空白字符(换行、回车、空格以及制表符会被替换为空格,开头和结尾的空格会被移除,而多个连续的空格会被缩减为一个单一的空格):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
对长度的限定
如需限制元素中值的长度,我们需要使用 length、maxLength 以及 minLength 限定。
本例定义了带有一个限定且名为 "password" 的元素。其值必须精确到 8 个字符:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
这个例子也定义了带有一个限定的名为 "password" 的元素。其值最小为 5 个字符,最大为 8 个字符:
<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>
数据类型的限定
限定 | 描述 |
---|---|
enumeration | 定义可接受值的一个列表 |
fractionDigits | 定义所允许的最大的小数位数。必须大于等于0。 |
length | 定义所允许的字符或者列表项目的精确数目。必须大于或等于0。 |
maxExclusive | 定义数值的上限。所允许的值必须小于此值。 |
maxInclusive | Tentukan had tinggi bagi nombor. Nilai yang diizinkan mesti lebih kecil atau sama dengan nilai ini. |
maxLength | Tentukan had maksimum bagi karakter atau item dalam senarai yang diizinkan. Harus lebih besar atau sama dengan 0. |
minExclusive | Tentukan had rendah bagi nombor. Nilai yang diizinkan mesti lebih besar daripada nilai ini. |
minInclusive | Tentukan had rendah bagi nombor. Nilai yang diizinkan mesti lebih besar atau sama dengan nilai ini. |
minLength | Tentukan jumlah minimum karakter atau item dalam senarai yang diizinkan. Harus lebih besar atau sama dengan 0. |
pattern | Tentukan jadual karakter yang diizinkan. Harus diizinkan. |
totalDigits | Tentukan jumlah tempat desimal nombor yang diizinkan. Harus lebih besar daripada 0. |
whiteSpace | Tentukan cara pengendalian ruang putih (gerak baris, jomput, ruang dan tab) |
- Halaman Sebelumnya Atribut XSD
- Halaman Berikutnya Element XSD