XSD cheklovlari
Cheklovlar XML elementlari yoki atributlari uchun ruxsat etilgan qiymatlarni aniqlashda ishlatiladi. XML elementlariga qo‘yiladigan cheklovlar fasetlar (facets) deb ataladi.
Qiymatlarga qo‘yiladigan cheklovlar
Quyidagi misol cheklovga ega "age" nomli elementni aniqlaydi. age qiymati 0 dan kichik yoki 120 dan katta bo‘lishi mumkin emas:
<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>Qiymatlar to‘plamiga qo‘yiladigan cheklovlar
XML elementi kontentini ruxsat etilgan qiymatlar to‘plami bilan cheklash uchun enumeration cheklovidan foydalanamiz.
Quyidagi misol cheklovga ega "car" nomli elementni aniqlaydi. Faqat quyidagi qiymatlarga ruxsat beriladi: 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>Yuqoridagi misolni quyidagicha ham yozish mumkin edi:
<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>Eslatma: Bu holda "carType" tipidan boshqa elementlar ham foydalanishi mumkin, chunki u "car" elementining bir qismi emas.
Qiymatlar ketma-ketligiga qo‘yiladigan cheklovlar
XML elementi kontentini ishlatilishi mumkin bo‘lgan raqamlar yoki harflar ketma-ketligi bilan cheklash uchun pattern cheklovidan foydalanamiz.
Quyidagi misol cheklovga ega "letter" nomli elementni aniqlaydi. Yagona ruxsat etilgan qiymat — a dan z gacha bo‘lgan KICHIK harflardan BITTASI:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>Keyingi misol cheklovga ega "initials" nomli elementni aniqlaydi. Yagona ruxsat etilgan qiymat — a dan z gacha bo‘lgan KATTA harflardan UCHTASI:
<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>Keyingi misol ham cheklovga ega "initials" nomli elementni aniqlaydi. Yagona ruxsat etilgan qiymat — a dan z gacha bo‘lgan KICHIK YOKI KATTA harflardan UCHTASI:
<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>Keyingi misol cheklovga ega "choice" nomli elementni aniqlaydi. Yagona ruxsat etilgan qiymat — quyidagi harflardan BITTASI: x, y YOKI z:
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>Keyingi misol cheklovga ega "prodid" nomli elementni aniqlaydi. Yagona ruxsat etilgan qiymat — ketma-ket kelgan BESHTA raqam, har bir raqam esa 0 dan 9 gacha oraliqda bo‘lishi kerak:
<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>Qiymatlar ketma-ketligiga qo‘yiladigan boshqa cheklovlar
Quyidagi misol cheklovga ega "letter" nomli elementni aniqlaydi. Ruxsat etilgan qiymat — a dan z gacha bo‘lgan kichik harflarning nol yoki undan ko‘p marta takrorlanishi:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>Keyingi misol ham cheklovga ega "letter" nomli elementni aniqlaydi. Ruxsat etilgan qiymat — bir yoki bir nechta harflar juftligi, har bir juftlik kichik harf va undan keyingi katta harfdan iborat. Masalan, "sToP" bu andoza (pattern) bo‘yicha tekshiruvdan o‘tadi, "Stop", "STOP" yoki "stop" esa o‘tmaydi:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z][A-Z])+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>Keyingi misol cheklovga ega "gender" nomli elementni aniqlaydi. Yagona ruxsat etilgan qiymat — male YOKI female:
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>Keyingi misol cheklovga ega "password" nomli elementni aniqlaydi. Ketma-ket aynan sakkizta belgi bo‘lishi kerak va bu belgilar a dan z gacha bo‘lgan kichik yoki katta harflar yoki 0 dan 9 gacha bo‘lgan raqamlar bo‘lishi kerak:
<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‘sh joy belgilariga qo‘yiladigan cheklovlar
Bo‘sh joy belgilari qanday qayta ishlanishi kerakligini belgilash uchun whiteSpace cheklovidan foydalanamiz.
Bu misol cheklovga ega "address" nomli elementni aniqlaydi. whiteSpace cheklovi "preserve" qiymatiga o‘rnatilgan, ya’ni XML protsessor hech qanday bo‘sh joy belgisini OLIB TASHLAMAYDI:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>Bu misol ham cheklovga ega "address" nomli elementni aniqlaydi. whiteSpace cheklovi "replace" qiymatiga o‘rnatilgan, ya’ni XML protsessor barcha bo‘sh joy belgilarini (qator o‘tkazish, tabulyatsiya, probel va karetkani qaytarish belgilarini) probellarga ALMASHTIRADI:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>Bu misol ham cheklovga ega "address" nomli elementni aniqlaydi. whiteSpace cheklovi "collapse" qiymatiga o‘rnatilgan, ya’ni XML protsessor barcha bo‘sh joy belgilarini OLIB TASHLAYDI (qator o‘tkazish, tabulyatsiya, probel va karetkani qaytarish belgilari probellarga almashtiriladi, boshidagi va oxiridagi probellar olib tashlanadi, ketma-ket kelgan bir nechta probel esa bitta probelga qisqartiriladi):
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>Uzunlikka qo‘yiladigan cheklovlar
Elementdagi qiymat uzunligini cheklash uchun length, maxLength va minLength cheklovlaridan foydalanamiz.
Bu misol cheklovga ega "password" nomli elementni aniqlaydi. Qiymat aynan sakkiz belgidan iborat bo‘lishi kerak:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>Bu misol cheklovga ega yana bir "password" nomli elementni aniqlaydi. Qiymat kamida besh va ko‘pi bilan sakkiz belgidan iborat bo‘lishi kerak:
<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>Ma’lumot tiplari uchun cheklovlar
| Cheklov | Tavsif |
|---|---|
| enumeration | Ruxsat etilgan qiymatlar ro‘yxatini aniqlaydi |
| fractionDigits | Ruxsat etilgan kasr xonalarining maksimal sonini belgilaydi. Noldan katta yoki nolga teng bo‘lishi kerak |
| length | Ruxsat etilgan belgilar yoki ro‘yxat elementlarining aniq sonini belgilaydi. Noldan katta yoki nolga teng bo‘lishi kerak |
| maxExclusive | Sonli qiymatlar uchun yuqori chegarani belgilaydi (qiymat shu qiymatdan kichik bo‘lishi kerak) |
| maxInclusive | Sonli qiymatlar uchun yuqori chegarani belgilaydi (qiymat shu qiymatdan kichik yoki unga teng bo‘lishi kerak) |
| maxLength | Ruxsat etilgan belgilar yoki ro‘yxat elementlarining maksimal sonini belgilaydi. Noldan katta yoki nolga teng bo‘lishi kerak |
| minExclusive | Sonli qiymatlar uchun quyi chegarani belgilaydi (qiymat shu qiymatdan katta bo‘lishi kerak) |
| minInclusive | Sonli qiymatlar uchun quyi chegarani belgilaydi (qiymat shu qiymatdan katta yoki unga teng bo‘lishi kerak) |
| minLength | Ruxsat etilgan belgilar yoki ro‘yxat elementlarining minimal sonini belgilaydi. Noldan katta yoki nolga teng bo‘lishi kerak |
| pattern | Ruxsat etilgan belgilarning aniq ketma-ketligini aniqlaydi |
| totalDigits | Ruxsat etilgan raqamlarning aniq sonini belgilaydi. Noldan katta bo‘lishi kerak |
| whiteSpace | Bo‘sh joy belgilari (qator o‘tkazish, tabulyatsiya, probel va karetkani qaytarish belgilari) qanday qayta ishlanishini belgilaydi |
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
