XSD 限定/Facets
Ang pagpipigil (restriction) ay ginagamit upang tanggapin ang mga halaga na maaring gamitin para sa XML elemento o attribute. Ang pagpipigil ng XML elemento ay tinatawag na facet.
Pagpipigil sa mga halaga
Ang halimbawa na ito ay nagtatalaga ng isang elemento na may limitasyon at pangalan na "age". Ang halaga ng age ay hindi dapat mababa sa 0 o mas mataas sa 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>
Pagpipigil sa isang grupo ng halaga
Kung gusto mong limitahan ang nilalaman ng XML elemento sa isang grupo ng tatanggap na halaga, kailangan mong gamitin ang enumeration constraint (enumeration constraint).
Ang susunod na halimbawa ay nagtatalaga ng isang elemento na may limitasyon na may pangalan na "car". Ang tatanggap na halaga ay isa lamang sa: 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>
Ang nakaraang halimbawa ay maaari ring isulat bilang:
<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>
Komento:Sa kasong ito, ang uri na "carType" ay maaaring gamitin ng ibang elemento dahil hindi ito bahagi ng elemento na "car".
Pagpipigil sa isang serye ng halaga
Kung gusto mong limitahan ang nilalaman ng XML elemento sa isang serye ng mga magagamit na numero o titik, kailangan mong gamitin ang pattern constraint (pattern constraint).
Ang susunod na halimbawa ay nagtatalaga ng isang elemento na may limitasyon na may pangalan na "letter". Ang tatanggap na halaga ay isa lamang sa mga titik na maliit 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>
Ang susunod na halimbawa ay nagtatalaga ng isang elemento na may limitasyon na may pangalan na "initials". Ang mga tatanggap na halaga ay tatlong may bigla na 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>
Ang susunod na halimbawa ay din nagtatalaga ng isang elemento na may limitasyon na may pangalan na "initials". Ang mga tatanggap na halaga ay tatlong titik na may bigla o maliit na 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>
Ang susunod na halimbawa ay nagtatalaga ng isang elemento na may limitasyon na may pangalan na "choice". Ang mga tatanggap na halaga ay isa sa mga titik na x, y o z:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
Ang susunod na halimbawa ay nagtatalaga ng isang elemento na may limitasyon na may pangalan na "prodid". Ang mga tatanggap na halaga ay isang serye ng limang arawang numero, na bawat numero ay may saklaw 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>
Iba pang limitasyon ng isang serye ng halaga
Ang halimbawa na ito ay naglalarawan ng isang elemento na may pinaghalong pangalan na "letter" na may limitasyon. Ang tatanggap na halaga ay walang silbi na karakter sa a - z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
Ang halimbawa na ito ay naglalarawan ng isang elemento na may pinaghalong pangalan na "letter" na may limitasyon. Ang tatanggap na halaga ay isang pares o maraming pares ng titik, bawat pares ay isang maliliit na titik na sinundan ng malaki. Halimbawa, "sToP" ay magpatunay sa ganitong pattern, ngunit "Stop", "STOP" o "stop" ay hindi magpatunay:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
Ang halimbawa na ito ay naglalarawan ng isang elemento na may pinaghalong pangalan na "gender" na may limitasyon. Ang tatanggap na halaga ay male o female:
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
Ang halimbawa na ito ay naglalarawan ng isang elemento na may pinaghalong pangalan na "password" na may limitasyon. Ang tatanggap na halaga ay isang linya ng 8 na karakter, na dapat ay mayroong malalim o malabang titik a - z o numero 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>
Limitasyon ng walang silbi na karakter
Para sa pagtutukoy ng paraan ng paghawak ng walang silbi na karakter (whitespace characters), kailangan gumamit ng limitasyon ng whiteSpace.
Ang mga halimbawa na ito ay naglalarawan ng isang elemento na may pinaghalong pangalan na "address" na may limitasyon. Ang limitasyon ng whiteSpace ay itinakda na "preserve", na ibig sabihin ang processor ng XML ay hindi aalisin ang anumang walang silbi na karakter:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Ang halimbawa na ito ay naglalarawan din ng isang elemento na may pinaghalong pangalan na "address" na may limitasyon. Ang limitasyon ng whiteSpace ay itinakda na "replace", na ibig sabihin ang processor ng XML ay aalisin ang lahat ng mga walang silbi na karakter (pansamntala, pagpapaubos, espasyo at tab):
<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 | 定义数值的上限。所允许的值必须小于或等于此值。 |
maxLength | 定义所允许的字符或者列表项目的最大数目。必须大于或等于0。 |
minExclusive | 定义数值的下限。所允许的值必需大于此值。 |
minInclusive | 定义数值的下限。所允许的值必需大于或等于此值。 |
minLength | 定义所允许的字符或者列表项目的最小数目。必须大于或等于0。 |
pattern | 定义可接受的字符的精确序列。 |
totalDigits | 定义所允许的阿拉伯数字的精确位数。必须大于0。 |
whiteSpace | 定义空白字符(换行、回车、空格以及制表符)的处理方式。 |