با سلام خدمت کاربران گرامی سایت پی وی لرن و علاقمندان و کاربرانی که علاقمند به یادگیری دوره XML هستند. در جلسه پیش با آموزش کار با Attributes ها در schema همراهتان بودیم. در ادامه سرفصل schema آموزش کار با Restrictions در schema را به علاقمندان این دوره ارائه می نماییم.
Restrictions ها یا محدویت ها برای تعیین مقادیر قابل قبول برای عناصر XML یا attributes ها استفاده می شوند.
Restrictions های عناصر XML با نام facets نیز شناخته می شوند.
مثال زیر یک عنصر با نام “age” یا “سن” را با یک محدودیت تعریف می کند. ارزش سن نمیتواند کمتر از ۰ یا بیشتر از ۱۲۰ باشد:
1 2 3 4 5 6 7 8 | <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:
1 2 3 4 5 6 7 8 9 | <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> |
مثال فوق می تواند به صورت زیر نیز نوشته شود:
1 2 3 4 5 6 7 8 9 | <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” را با محدودیت را تعریف می کند.
تنها مقدار قابل قبول، یکی از letter های LOWERCASE از a به z است:
1 2 3 4 5 6 7 | <xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element> |
مثال بعدی یک عنصر به نام “initials” را با یک محدودیت تعریف می کند. تنها مقدار قابل قبول، سه حرف از UPPERCASE از a به z است:
1 2 3 4 5 6 7 | <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” با یک محدودیت تعریف می کند. تنها مقدار قابل قبول، سه حرف LOWERCASE یا UPPERCASE از a به z است:
1 2 3 4 5 6 7 | <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> |
مثال بعدی یک عنصر به نام “choice” را با یک محدودیت تعریف می کند. تنها مقدار قابل قبول یکی از حروف زیر است: x، y، or z:
1 2 3 4 5 6 7 | <xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element> |
مثال بعدی یک عنصر به نام “prodid” را با یک محدودیت تعریف می کند. تنها مقدار قابل قبول پنج رقم در یک دنباله است و هر رقم باید در محدوده ۰ تا ۹ باشد:
1 2 3 4 5 6 7 | <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> |
مثال زیر یک عنصر به نام “letter” با یک محدودیت را تعریف می کند. مقدار قابل قبول صفر یا بیشتر از حروف کوچک از a به z است:
1 2 3 4 5 6 7 | <xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element> |
مثال بعدی نیز یک عنصر به نام “letters” را با یک محدودیت تعریف می کند.
مقدار قابل قبول یک یا چند زوج حروف است، هر زوج متشکل از یک حروف کوچک- حروف بزرگ است.
به عنوان مثال، “sToP” با این الگوی تأیید خواهد شد، اما نه “Stop” یا “STOP” یا “stop”:
1 2 3 4 5 6 7 | <xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element> |
مثال بعدی یک عنصر به نام “gender” را با یک محدودیت تعریف می کند. تنها مقدار قابل قبول male یا female است:
1 2 3 4 5 6 7 | <xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element> |
مثال بعدی یک عنصر با نام “password” را با یک محدودیت تعریف می کند. باید یک ردیف دقیقاً هشت کاراکتر داشته باشد و این کاراکترها باید حروف کوچک یا بزرگ از a به z باشند یا عدد ۰ تا ۹:
1 2 3 4 5 6 7 | <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> |
محدودیت های کاراکتر فضای سفید whitespace آخرین مبحثی است که آموزش کار با Restrictions در schema به آن می پردازیم.
برای مشخص کردن نحوه کارکرد کاراکترهای whiteSpace باید از whiteSpace constraint استفاده کنیم.
این مثال یک عنصر با نام “address” را با یک محدودیت تعریف می کند.
محدودیت whiteSpace constraint حفظ شده است، به این معنی که پردازنده XML هیچ علامت فضای سفید را حذف نخواهد کرد:
1 2 3 4 5 6 7 | <xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element> |
این مثال عنصر “address” را با یک محدودیت تعریف می کند.
محدودیت whiteSpace constraint برای «replace» تنظیم شده است، یعنی پردازشگر XML همه کاراکترهای فضای سفید (line feeds, tabs, spaces, و carriage بازگردانی شده) را با فضاها spaces عوض می کند:
1 2 3 4 5 6 7 | <xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element> |
این مثال همچنین عنصر “address” را با یک محدودیت تعریف می کند.
whiteSpace constraint برای “collapse” تنظیم شده است، به این معنی که پردازشگر XML تمام کاراکترهای فضای سفید را حذف می کند (line feeds, tabs, spaces, و carriage بازگردانی شده، با spaces, leading و trailing spaces جایگزین شده و حذف می گردند و فضاهای چندگانه به فضاهای تکی تقلیل می یابند):
1 2 3 4 5 6 7 | <xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element> |
برای محدود کردن طول یک مقدار در یک عنصر، از محدودیت طول، maxLength، و minLength استفاده می کنیم.
مثال زیر یک عنصر با نام “password” را با یک محدودیت تعریف می کند. مقدار باید دقیقا هشت کاراکتر باشد:
1 2 3 4 5 6 7 | <xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element> |
در این مثال عنصر دیگری با نام “password” با محدودیت مشخص می شود. مقدار باید حداقل پنج عدد و حداکثر هشت کاراکتر باشد:
1 2 3 4 5 6 7 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> |
در این جلسه آموزش کار با Restrictions در schema را به شما ارائه نمودیم.
در جلسه بعد به کار بر روی عناصر پیچیده خواهیم پرداخت.
با پی وی لرن همراه باشید.