XSD 限定 / Facets

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

对值的限定

下面的例子定义了带有一个限定且名为 "age" 的元素。age 的值不能低于 0 或者高于 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>

对一组值的限定

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

下面的例子定义了带有一个限定的名为 "car" 的元素。可接受的值只有: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>

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

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

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

对一系列值的限定

如需把 XML 元素的内容限制定义为一系列可使用的数字或字母,我们要使用模式约束(pattern constraint)。

下面的例子定义了带有一个限定的名为 "letter" 的元素。可接受的值只有小写字母 a - z 其中的一个:

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

下一个例子定义了带有一个限定的名为 "initials" 的元素。可接受的值是大写字母 A - 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>

下一个例子也定义了带有一个限定的名为 "initials" 的元素。可接受的值是大写或小写字母 a - 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>

tse tasuwa tsa kifanin dake "choice" tsa. kalmomi dake a samu amfani da wajen tsa kowane kalmomi na x, y ko z:

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

tse tasuwa tsa kifanin dake "prodid" tsa. kalmomi dake a samu amfani da wajen tsa arba'in kalmomi na 5 dake yi kiyayewa da kowane kalmomi na 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>

kifanin kiyayewa na dukkanin kalmomi na wajen tsa:

tse tasuwa tsa kifanin dake "letter" tsa. kalmomi dake a samu amfani da wajen tsa a z na zero ko kalmomi na abin da yake kiyayewa na a z:

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

tse tasuwa tsa kifanin dake "letter" tsa. kalmomi dake a samu amfani da wajen tsa dukkanin kalmomi ko kalmomi na abin da yake kiyayewa na wuce kalmomi dake yi kiyayewa na a yi kiyayewa da A yi kiyayewa. Tsa misali, "sToP" za gana da wannan harsa, amma "Stop", "STOP" ko "stop" ba gana ba:

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

tse tasuwa tsa kifanin dake "gender" tsa. kalmomi dake a samu amfani da wajen tsa "male" ko "female":

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

tse tasuwa tsa kifanin dake "password" tsa. kalmomi dake a samu amfani da wajen tsa 8 kalmomi kuma kalmomi na a yi kiyayewa da a yi kiyayewa da a yi kiyayewa na 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>

kifanin kiyayewa kalmomi wajen tsa:

doniyar donin kiyayewa kalmomi wajen tsa "whiteSpace" kifanin kuma an samu amfani da kifanin "whiteSpace":

تسايتو تامو كاifanin dake "address" tsa. kifanin "whiteSpace" tsa "preserve" na, tana tsa kifanin XML ba ba rama karfe kawar da kalmomi wajen waje:

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

tariya ce kuma tafiya tukwanci kananananin na "address". whiteSpace tafiya a ke kama "replace", waɗanda haka XML tafiyarwaran za a kai karo kulli akwanci (na tsaki, kuma na kaiyaki, akwanci ko tabi, kuma akwanci na tabi a cikin akwanci ko ayyuka):

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

tariya ce kuma tafiya tukwanci kananananin na "address". whiteSpace tafiya a ke kama "collapse", waɗanda haka XML tafiyarwaran za a kai karo kulli akwanci (na tsaki, kuma na kaiyaki, akwanci ko tabi, kuma akwanci na tabi a cikin akwanci ko ayyuka, akwanci na kaiyaki ko ayyuka a cikin akwanci ko ayyuka za a kai karo, kuma akwanci na kaiyaki za a kai karo a cikin akwanci ko ayyuka):

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

tafiya na length

don tafiya tukwanci na kananananin na element, na kama na length, maxLength ko minLength tafiya.

tariya ce kuma tafiya tukwanci kananananin na "password". wajibai a kai karo ko 8 kananananin tukwanci:

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

tariya ce kuma tafiya tukwanci kananananin na "password". wajibai a kai karo ko 5 kananananin tukwanci, kuma kai karo ko 8 kananananin tukwanci:

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

tafiya na ayyuka

tafiya baɗaɗa
enumeration tafiya kundivici na wajibai a kai karo.
fractionDigits tafiya kananananin yauyi na tukwanci na kaiyaki. wajibai a kai karo ko 0 ko fi kai.
length tafiya tukwanci ko tukwanci na yauyi ko kananananin ayyuka. wajibai a kai karo ko 0 ko fi kai.
maxExclusive tafiya taɗa na yauyi, wajibai a kai karo yauyi na ayyuka.
maxInclusive Define the upper limit of the number. The allowed values must be less than or equal to this value.
maxLength Define the maximum number of allowed characters or list items. It must be greater than or equal to 0.
minExclusive Define the lower limit of the number. The allowed values must be greater than this value.
minInclusive Define the lower limit of the number. The allowed values must be greater than or equal to this value.
minLength Define the minimum number of allowed characters or list items. It must be greater than or equal to 0.
pattern Define the exact sequence of acceptable characters.
totalDigits Define the exact number of decimal places allowed for Arabic numerals. It must be greater than 0.
whiteSpace Define the way to handle the treatment of whitespace characters (new lines, carriage returns, spaces, and tab characters).