با سلام خدمت کاربران گرامی سایت پی وی لرن و علاقمندان و کاربرانی که علاقمند به یادگیری دوره XML هستند. در جلسه گذشته Mixed Content ها یا محتواهای ترکیبی را شناختیم و کار با آن ها را فراگرفتیم. در ادامه سر فصل آموزشی schema شما را به آموزش کار با Indicators ها در schema دعوت می کنیم.
به Indicators ها یا شاخص ها می توان عناصر HOW را در اسناد کنترل کرد.
هفت نوع Indicators یا شاخص وجود دارد:
شاخص های Order که عبارتند از:
شاخص های Occurrence که شامل موارد زیر می شود:
و شاخص های Group که دو نوع هستند:
شاخص های Order برای مشخص کردن ترتیب عناصر مورد استفاده قرار می گیرند.
شاخص <all> عنصر child را که می تواند در هر ترتیب ظاهر شود مشخص می کند.
آن عنصر child باید فقط یک بار رخ داده باشد.
1 2 3 4 5 6 7 8 | <xs:element name="person"> <xs:complexType> <xs:all> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:all> </xs:complexType> </xs:element> |
هنگام استفاده از شاخص <all> می توانید شاخص <minOccurs> را بر روی ۰ و یا ۱ تنظیم کنید.
شاخص <maxOccurs> نیز باید همواره بر روی ۱ تنظیم شود.
( بعداً راجع به شاخص <maxOccurs> و شاخص <minOccurs> توضیح خواهیم داد.)
شاخص <choice> مشخص می کند که فقط یک عنصر child و یا عنصر دیگری می تواند رخ دهد:
1 2 3 4 5 6 7 8 | <xs:element name="person"> <xs:complexType> <xs:choice> <xs:element name="employee" type="employee"/> <xs:element name="member" type="member"/> </xs:choice> </xs:complexType> </xs:element> |
شاخص <sequence> مشخص می کند که عنصر child باید در ردیف مشخصی ظاهر شود:
1 2 3 4 5 6 7 8 | <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> |
از این شاخص برای تعیین تعداد رخ دادن یک عنصر استفاده می شود.
برای شاخص “Order” و شاخص “Group” یعنی (any, all, choice, sequence, group name, و group reference) مقدار پیش فرض برای maxOccurs و minOccurs 1 است.
شاخص <maxOccurs> حداکثر تعداد دفعاتی که یک عنصر می تواند رخ دهد را تعیین می کند:
1 2 3 4 5 6 7 8 | <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10"/> </xs:sequence> </xs:complexType> </xs:element> |
مثال بالا نشان می دهد که عنصر “child_name” حداقل یک بار (مقدار پیش فرض برای minOccurs برابر ۱ است) و حداکثر ده بار در عنصر “person” رخ می دهد.
نشانگر <minOccurs> حداقل تعداد دفعاتی که یک عنصر می تواند رخ دهد را مشخص می کند:
1 2 3 4 5 6 7 8 9 | <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> |
مثال بالا نشان می دهد که عنصر “child_name” می تواند حداقل صفر و حداکثر ده بار در عنصر “person” رخ دهد.
برای این که یک عناصر به صورت نامحدود بتواند ظاهر شود از عبارت maxOccurs = “unbounded” استفاده کنید.
به فایل XML زیر به نام “Myfamily.xml” توجه نمایید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?xml version="1.0" encoding="UTF-8"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="family.xsd"> <person> <full_name>Hege Refsnes</full_name> <child_name>Cecilie</child_name> </person> <person> <full_name>Tove Refsnes</full_name> <child_name>Hege</child_name> <child_name>Stale</child_name> <child_name>Jim</child_name> <child_name>Borge</child_name> </person> <person> <full_name>Stale Refsnes</full_name> </person> </persons> |
فایل XML بالا شامل یک عنصر ریشه به نام “persons” است. در داخل این عنصر ریشه سه عنصر “ر” تعریف شده است.
هر عنصر “person” باید یک عنصر “full_name” داشته باشد که خود می تواند شامل پنج عنصر “child_name” باشد.
در اینجا فایل schema family.xsd ما قرار دارد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="persons"> <xs:complexType> <xs:sequence> <xs:element name="person" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" minOccurs="0" maxOccurs="5"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
شاخص های Group برای تعیین مجموعه ای از عناصر مرتبط استفاده می شود.
گروه های عنصر با اعلان گروه تعریف شده اند و شما باید عنصر all، choice و sequence را در داخل اعلان گروه تعریف نمایید.
مثال زیر یک گروه را به نام “persongroup” تعریف می کند که یک گروه از عناصر را که باید در یک exact sequence رخ دهد تعریف می نماید:
1 2 3 4 5 6 7 | <xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group> |
پس از اینکه یک گروه را تعریف کردید، می توانید آن را در تعریف دیگری بنویسید مانند مثال زیر:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group> <xs:element name="person" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:group ref="persongroup"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType> |
گروه های Attribute با اعلام attributeGroup تعریف می شوند:
1 2 3 | <xs:attributeGroup name="groupname"> ... </xs:attributeGroup> |
مثال زیر یک attribute group به نام “personattrgroup” تعریف می کند:
1 2 3 4 5 | <xs:attributeGroup name="personattrgroup"> <xs:attribute name="firstname" type="xs:string"/> <xs:attribute name="lastname" type="xs:string"/> <xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup> |
پس از اینکه یک attribute group را تعریف کردید، می توانید آن را در یک تعریف دیگر، مانند نمونه زیر به کار برید:
1 2 3 4 5 6 7 8 9 10 11 | <xs:attributeGroup name="personattrgroup"> <xs:attribute name="firstname" type="xs:string"/> <xs:attribute name="lastname" type="xs:string"/> <xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup> <xs:element name="person"> <xs:complexType> <xs:attributeGroup ref="personattrgroup"/> </xs:complexType> </xs:element> |
در این جلسه با آموزش کار با Indicators ها در schema همراهتان بودیم.
در جلسه بعد کار به بر روی عنصر any خواهیم پرداخت.
با پی وی لرن همراه باشید.