XSD Kichwa / Facets

限定(restriction)用于为 XML 元素或者属性定义可接受的值。对 XML 元素的限定被称为 facet。

对值的限定

下面的例子定义了带有一个限定且名为 "age" 的元素。age 的值不能低于 0 或者高于 120:


<xs:simpleType>
  <xs:restriction base="xs:integer">
    
    
  </xs:restriction>
</xs:simpleType>
</xs:element>

对一组值的限定

如需把 XML 元素的内容限制为一组可接受的值,我们要使用枚举约束(enumeration constraint)。

下面的例子定义了带有一个限定的名为 "car" 的元素。可接受的值只有:Audi, Golf, BMW:


<xs:simpleType>
  <xs:restriction base="xs:string">
    
    
    
  </xs:restriction>
</xs:simpleType>
</xs:element>

上面的例子也可以被写为:

type="carType"/>
name="carType">
  <xs:restriction base="xs:string">
    
    
    
  </xs:restriction>
</xs:simpleType>

注释:在这种情况下,类型 "carType" 可被其他元素使用,因为它不是 "car" 元素的组成部分。

对一系列值的限定

Kuwa na mafikirio ya kumaliza maadili ya kina la XML kama mawakilishi ya maneno au chini, tunahitaji kusaidia kina kina (pattern constraint).

Mfano wa hivi karibuni piaamua kina la kina la kina la "letter" na matokeo yanayohusiana na kina chini chini chini zaidi ya moja

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

Mfano mengine piaamua kina la kina la kina la "initials" na matokeo yanayohusiana na kina kikuu kikuu kikuu: A - Z kikuu kikuu kikuu zaidi ya moja

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

Mfano wa mengine piaamua kwa kumwambaa kina la kina la "initials" na matokeo yanayohusiana na kina kikuu na kikuu na kikuu: a - z kikuu na kikuu na kikuu zaidi ya moja

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

Mfano hii unaodhani elementi yenye uangalifu yenye jina "choice". Adhimisho zinaadhibwa ni heri za kifaa ya kwanza ya kifaa ya kifaa ya pili:

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

Mfano hii unaodhani elementi yenye uangalifu yenye jina "prodid". Adhimisho zinaadhibwa ni heri ya kifaa ya tano yenye adhimisho ya kifaa, kwa heri kila yeye inahitaji kuhusu adhimisho ya kifaa ya kwanza ya kifaa ya pili, kifaa ya tatu, kifaa ya nne na kifaa ya tano:

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

Uangalifu wa uadilifu wa adhimisho zaidi

Mfano hiki unaodhani elementi yenye uangalifu yenye jina "letter". Adhimisho zinaadhibwa ni heri za kifaa ya kwanza ya kifaa ya kifaa ya pili:

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

Mfano hiki unaodhani elementi yenye uangalifu yenye jina "letter". Adhimisho zinaadhibwa ni heri za kifaa yenye heri za kifaa za kwanza yenye heri ya kifaa ya pili. Mfano, "sToP" inapata kuwa kufikia uangalifu hii, lakini "Stop", "STOP" au "stop" hapatikani kuwa kufikia uangalifu hii:

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

Mfano hiki unaodhani elementi yenye uangalifu yenye jina "gender". Adhimisho zinaadhibwa ni male ama female:

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

Mfano hiki unaodhani elementi yenye uangalifu yenye jina "password". Adhimisho zinaadhibwa ni heri ya tatu za heri yenye adhimisho ya kifaa, kwa heri kila yeye inahitaji kuhusu heri ya kifaa, heri ya kifaa ya kwanza na heri ya kifaa ya pili:

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

Uangalifu wa heri ya hali

Kuwa niwezekana kuamua jina la kuhifadhi hali ya heri, tafadhali tumetumia uangalifu wa whiteSpace.

Mfano hiki ni upo maelezo unaodhani elementi yenye jina "address" yenye uangalifu. Uangalifu hii ya whiteSpace inayosetwa kuwa "preserve", inamaanisha kwamba kipindi cha XML kinasifanya kufichwa kufikia kwa ukweli kwa kila heri ya hali:

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

Mfano huu pia kina ujumbe wa kawaida wa kina kwa jina "address" ambao whiteSpace kielele cha kulinganisha chake kinatokana na "replace", kimekuwa kwamba vifaa vya uwanja wa XML vataondoa barua za kimaumini (maviringo, mababu, nafasi na tabula za kufikia):

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

Mfano huu pia kina ujumbe wa kawaida wa kina kwa jina "address" ambao whiteSpace kielele cha kulinganisha chake kinatokana na "collapse", kimekuwa kwamba vifaa vya uwanja wa XML vataondoa barua za kimaumini (maviringo, mababu, nafasi na tabula za kufikia) kwa ajili ya nafasi kwa jumla (maviringo, mababu, nafasi na tabula za kufikia zitaonyesha nafasi kwa jumla, nafasi ya kwanza na ya kushiriki zitaondoa, na nafasi za kuzunguka zitaonyesha nafasi moja tu):

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

Kielele cha kulinganisha cha ukingo

Kuwa na ukingo cha thamani katika ujumbe wa kawaida, tafadhali tumekuwa na length, maxLength na minLength kielele cha kulinganisha.

Mfano huu pia kina ujumbe wa kawaida wa kina kwa jina "password" ambao thamani yake lazima iwe na herufi 8:

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

Mfano huu pia kina ujumbe wa kawaida wa kina kwa jina "password" ambao thamani yake inayotakaywa ni 5 herufi, na kikubwa ni 8 herufi:

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

Kielele cha kulinganisha cha aina ya data

Kielele cha kulinganisha Ujumbe
enumeration Kielele cha orodha ya thamani ambazo zinaonesha thamani ambazo zinaonesha thamani.
fractionDigits Kielele cha uangalifu wa namba zilizozunguka kwa ujumla cha kidogo. lazima zivue zaidi ya 0.
length Kielele cha uongezeshaji wa haraka kwa ujumbe wa kawaida ama orodha ya majukumu. lazima zivue zaidi ya 0.
maxExclusive Kielele cha kina cha mifano cha namba, thamani zote zinaokwenda chini kwa jumla huzunguka hivi. Vigezo vinavyotakaywa vizunguka hivi lazima zivue zaidi ya thamani hii.
maxInclusive Kuchukua uwezo wa kumaliza kipenyo cha matumizi ya namba ya kubadilika. Inahitajika kuwa kubadilika chini ya uwezo huo.
maxLength Kuchukua uwezo wa kumaliza kipenyo cha matumizi ya namba ya kubadilika. Inahitajika kuwa kubadilika zaidi ya uwezo huo.
minExclusive Kuchukua uwezo wa kumaliza kipenyo cha matumizi ya namba ya kubadilika. Inahitajika kuwa kubadilika zaidi ya uwezo huo.
minInclusive Kuchukua uwezo wa kumaliza kipenyo cha matumizi ya namba ya kubadilika. Inahitajika kuwa kubadilika zaidi ya uwezo huo.
minLength Kuchukua uwezo wa kumaliza kipenyo cha matumizi ya namba ya herufi au kipenyo cha kina cha matumizi ya kipenyo cha kina cha herufi. Inahitajika kuwa kubwa zaidi ya 0.
pattern Kuchukua uwezo wa kumaliza kipenyo cha matumizi ya kipenyo cha kina cha matumizi ya herufi.
totalDigits Kuchukua uwezo wa kumaliza kipenyo cha matumizi ya namba ya Arabu. Inahitajika kuwa kubwa zaidi ya 0.
whiteSpace Kuchukua uwezo wa kumaliza kusikia kipenyo cha mafuta, kwa ajili ya mawasiliano, mawasiliano ya kifungu na mawasiliano ya kipenyo cha kifungu.