XSD Sınırlama/Facets

Sınırlama (restriction), XML elemanı veya özelliğine kabul edilebilir değerleri tanımlamak için kullanılır. XML elemanına yönelik sınırlama facet olarak adlandırılır.

Değer Sınırlaması

Aşağıdaki örnekte, adı "age" olan ve sınırlı olan bir eleman tanımlanmıştır. age değeri 0 veya 120'den büyük olamaz:

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

Bir değer grubunun kısıtlanması

XML elementinin içeriğini kabul edilebilir bir değer grubuna sınırlamak için, sayısal kısıtlama (enumeration constraint) kullanmamız gerekecek.

Aşağıdaki örnek, "car" adlı bir elementin tanımlanmasını içerir. Kabul edilen değerler sadece: Audi, Golf, BMW'dir:

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

Yukarıdaki örnek, aşağıdaki gibi de yazılabilir:

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

Açıklama:Bu durumda, "carType" türü, "car" elementinin bir parçası olmadığı için diğer elementler tarafından kullanılabilir.

Bir dizi değerin kısıtlanması

XML elementinin içeriğini kullanılabilir bir dizi rakam veya harfe sınırlamak için, kalıp kısıtlama (pattern constraint) kullanmamız gerekecek.

Aşağıdaki örnek, "letter" adlı bir elementin tanımlanmasını içerir. Kabul edilen değerler, küçük harf a-z'den biridir:

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

Örnek bir tanım, "initials" adlı bir elementin tanımlanmasını içerir. Kabul edilen değerler, büyük harf A-Z'den oluşan üç harftir:

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

Örnek bir tanım, "initials" adlı bir elementin tanımlanmasını içerir. Kabul edilen değerler, büyük veya küçük harf a-z'den oluşan üç harftir:

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

Örnek bir tanım, "choice" adlı bir elementin tanımlanmasını içerir. Kabul edilen değerler, x, y veya z harflerinden biridir:

<xs:element name="choice">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="[xyz]"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Örnek bir tanım, "prodid" adlı bir elementin tanımlanmasını içerir. Kabul edilen değerler, 0-9 aralığında beş Arap rakamından oluşan bir dizidir ve her rakamın aralığı 0-9'dur:

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

Bir dizi değer için diğer sınırlamalar

Aşağıdaki örnek, "letter" adlı bir sınırlanan elemanın tanımlanmasını içerir. Kabul edilen değerler, a - z'den sıfır veya daha fazla harften oluşabilir:

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

Aşağıdaki örnek, "letter" adlı bir sınırlanan elemanın tanımlanmasını içerir. Kabul edilen değerler, bir küçük harf ardından büyük harfle组成的字母对或多对字母。例如,"sToP" bu türden doğrulamayı geçer, ancak "Stop"、"STOP" veya "stop" geçemez:

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

Aşağıdaki örnek, "gender" adlı bir sınırlanan elemanın tanımlanmasını içerir. Kabul edilen değerler male veya female'dır:

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

Aşağıdaki örnek, "password" adlı bir sınırlanan elemanın tanımlanmasını içerir. Kabul edilen değerler, 8 karakterden oluşan bir satır karakteridir ve bu karakterler büyük veya küçük harf a - z veya rakamlar 0 - 9 olmalıdır:

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

Boş karakter sınırlaması

Boş karakterler (whitespace characters) işlenme şeklini belirlemek için whiteSpace sınırlaması kullanmamız gereklidir.

Aşağıdaki örnek, "address" adlı bir sınırlanan elemanın tanımlanmasını içerir. Bu whiteSpace sınırlaması "preserve" olarak ayarlanmıştır, bu da XML işleyicisinin hiçbir boş karakteri kaldırmayacağı anlamına gelir:

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

Bu örnek, "address" adlı bir sınırlanan elemanın tanımlanmasını da içerir. Bu whiteSpace sınırlaması "replace" olarak ayarlanmıştır, bu da XML işleyicisinin tüm boş karakterleri (satır başı, enter, boşluk ve tablar) kaldıracağı anlamına gelir:

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

Bu örnekte, "address" adlı bir elementin sınırlaması da tanımlanmıştır. Bu whiteSpace sınırlaması "collapse" olarak ayarlanmıştır, bu da XML işleyicisinin tüm boşluk karakterlerini (satır sonları, geri tuşları, boşluklar ve tablolar) bir boşluğa dönüştürdüğü ve başlangıç ve bitiş boşluklarını çıkardığı anlamına gelir:

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

Uzunluk sınırlaması

Elementin değerinin uzunluğunu sınırlamak için length, maxLength ve minLength sınırlamaları kullanmamız gerekir.

Bu örnekte, sınırlama içeren ve "password" adlı bir elementin kesin değeri 8 karakter olmalıdır:

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

Bu örnekte, "password" adlı bir elementin sınırlaması da tanımlanmıştır. Bu elementin değeri 5 karakterden küçük olmamalı ve 8 karakterden büyük olmamalıdır:

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

Veri türü sınırlaması

Sınırlama Açıklama
enumeration Kabul edilebilir değerlerin bir listesini tanımlar
fractionDigits İzin verilen en büyük ondalık basamak sayısını tanımlar. Bu değer 0 veya daha büyük olmalıdır.
length İzin verilen karakter veya liste öğesi sayısının kesin değerini tanımlar. Bu değer 0 veya daha büyük olmalıdır.
maxExclusive Değerin üst sınırı olarak tanımlanır. İzin verilen değerler bu değerin altında olmalıdır.
maxInclusive Değerin üst sınırı olarak tanımlanır. İzin verilen değerler bu değerin altında veya eşit olmalıdır.
maxLength İzin verilen karakter veya liste öğesi sayısının maksimum değerini tanımlar. Bu değer 0 veya daha büyük olmalıdır.
minExclusive Değerin alt sınırı olarak tanımlanır. İzin verilen değerler bu değerin üzerinde olmalıdır.
minInclusive Sayının alt limitini tanımlar. İzin verilen değerler bu değerin veya daha büyük olmalıdır.
minLength İzin verilen karakterler veya liste öğelerinin minimum sayısını tanımlar. 0 veya daha büyük olmalıdır.
pattern Kabul edilebilir karakterlerin doğru sırasını tanımlar.
totalDigits İzin verilen Arap rakamlarının doğru sayısını tanımlar. 0'dan büyük olmalıdır.
whiteSpace Boş karakterlerin (satır başı, enter, boşluk ve tab) işlenme şeklini tanımlar.