Najnowsze tutoriale tworzenie stron internetowych
 

Ograniczenia XSD / Facets


Ograniczenia są używane do określenia dopuszczalnych wartości dla elementów XML i atrybutów. Ograniczenia dotyczące elementów XML nazywane są aspekty.


Ograniczenia dotyczące wartości

Poniższy przykład definiuje element o nazwie "age" z ograniczeniem. Wartość życia nie może być niższa niż 0 lub większa niż 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>

Ograniczenia dotyczące zbioru wartości

Aby ograniczyć zawartość elementu XML do zestawu dopuszczalnych wartości, użylibyśmy ograniczenie wyliczenia.

Poniższy przykład definiuje element o nazwie "car" z ograniczeniem. Jedynymi dopuszczalnymi wartościami są: 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>

Powyższy przykład może również zostały napisane tak:

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

Note: W tym przypadku, rodzaj "carType" może być używany w innych elementów, ponieważ nie jest częścią "car" elementu.


Ograniczenia w szereg wartości

Aby ograniczyć zawartość elementu XML do definiowania szeregu cyfr lub liter, które można wykorzystać, użylibyśmy ograniczenie wzoru.

Poniższy przykład definiuje element o nazwie "letter" z ograniczeniem. Jedyna dopuszczalna wartość jest jednym z literami małymi literami od A do Z:

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

Kolejny przykład definiuje element o nazwie "initials" z ograniczeniem. Jedyna dopuszczalna wartość wynosi trzy litery wielkie litery od A do 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>

Kolejny przykład definiuje również element zwany "initials" z ograniczeniem. Jedyna dopuszczalna wartość to trzy z małymi lub wielkimi literami od A do 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>

Kolejny przykład definiuje element o nazwie "choice" z ograniczeniem. Jedyna dopuszczalna wartość to jedna z następujących liter: X, Y lub Z:

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

Kolejny przykład definiuje element o nazwie "prodid" z ograniczeniem. Jedyna dopuszczalna wartość to pięć cyfr w sekwencji, a każda cyfra musi być w zakresie od 0 do 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>

Inne Ograniczenia szereg wartości

Poniższy przykład definiuje element o nazwie "letter" z ograniczeniem. Akceptowalny wartość wynosi zero lub więcej wystąpień małych liter od A do Z:

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

Kolejny przykład definiuje również element zwany "letter" z ograniczeniem. Akceptowalny wartość jest jedna lub więcej par liter, każda para składająca się z małą literą sprawy następuje przez górną litery. Na przykład, "sToP" zostaną zatwierdzone przez ten wzór, ale nie "Stop" lub "STOP" lub "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>

Kolejny przykład definiuje element o nazwie "gender" z ograniczeniem. Jedyna dopuszczalna wartość jest mężczyzną czy kobietą:

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

Kolejny przykład definiuje element o nazwie "password" z ograniczeniem. Nie musi być dokładnie osiem znaków w wierszu, a te znaki muszą być małe lub wielkie litery od A do Z, albo liczby od 0 do 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>

Ograniczenia w białych znaków

Aby określić, jak spacje znaki powinny być traktowane, chcielibyśmy skorzystać z białymi znakami ograniczenia.

Ten przykład definiuje element o nazwie "address" z ograniczeniem. Białe znaki ograniczenia jest ustawiony na "preserve" , co oznacza, że procesor XML nie usunie żadnych białe znaki:

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

Przykład ten określa również element o nazwie "address" z ograniczeniem. Białe znaki ograniczenia jest ustawiony na "replace" , co oznacza, że procesor XML zastąpi wszystkie białe znaki (linia zasila, przekładki, spacje i powrót karetki) ze spacjami:

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

Przykład ten określa również element o nazwie "address" z ograniczeniem. Białe znaki ograniczenia jest ustawiony na "collapse" , co oznacza, że procesor XML usunie wszystkie białe znaki (linia zasila, klapki, spacje, powroty karetki są zastąpione spacjami, wiodące i końcowe spacje są usuwane, a wielokrotne spacje są zredukowane do pojedyncza spacja):

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

Ograniczenia długości

Aby ograniczyć długość o wartości w elemencie, nie stosujemy długość, maxLength i ograniczenia MINLENGTH.

Ten przykład definiuje element o nazwie "password" z ograniczeniem. Wartość musi być dokładnie osiem znaków:

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

Ten przykład definiuje kolejny element o nazwie "password" z ograniczeniem. Wartość ta musi wynosić co najmniej pięć znaków i maksymalnie osiem znaków:

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

Ograniczenia dotyczące typów danych

Przymus Opis
enumeration Określa listę dopuszczalnych wartości
fractionDigits Określa maksymalną liczbę miejsc po przecinku dozwolony. Musi być równa lub większa niż zero
length Określa dokładną liczbę znaków lub elementów listy dozwolonych. Musi być równa lub większa niż zero
maxExclusive Określa górne granice dla wartości numerycznych (wartość musi być mniejsza od tej wartości)
maxInclusive Określa górne granice dla wartości numerycznych (wartość musi być mniejsza lub równa tej wartości)
maxLength Określa maksymalną liczbę znaków lub elementów listy dozwolonych. Musi być równa lub większa niż zero
minExclusive Określa dolne granice dla wartości numerycznych (wartość musi być większa od tej wartości)
minInclusive Określa dolne granice dla wartości numerycznych (wartość musi być większa lub równa tej wartości)
minLength Określa minimalną liczbę znaków lub elementów listy dozwolonych. Musi być równa lub większa niż zero
pattern Określa dokładną sekwencję znaków, które są dopuszczalne
totalDigits Określa dokładną liczbę cyfr dozwolony. Musi być większa od zera
whiteSpace Określa, jak spacje (linia zasila, zaczepy, spacji i powroty karetki) jest obsługiwana