نشانگر نوع ترکیبی XSD
- صفحه قبلی محتوای مخلوط XSD
- صفحه بعدی XSD <any>
با استفاده از نشانگر، میتوانیم کنترل کنیم که چگونه عناصر در مستند استفاده شوند.
نشانگر
هفت نشانگر وجود دارد:
نشانگر ترتیب:
- همه
- انتخاب
- ترتیب
نشانگر وقوع:
- maxOccurs
- minOccurs
نشانگر گروه:
- نام گروه
- attributeGroup name
مؤشر Order
مؤشر Order برای تعریف ترتیب عناصر استفاده میشود.
مؤشر All
مؤشر <all> مشخص میکند که فرزندان میتوانند به هر ترتیبی ظاهر شوند و هر فرزند فقط یک بار باید ظاهر شود:
<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> را به 0 یا 1 تنظیم کنید و فقط مؤشر <maxOccurs> را به 1 تنظیم کنید (در بخش بعدی <minOccurs> و <maxOccurs> توضیح داده خواهد شد).
مؤشر Choice
مؤشر <choice> مشخص میکند که یک فرزند خاص یا فرزند دیگری (یا یکی از این دو) میتواند ظاهر شود:
<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>
توجه:برای تنظیم تعداد ظهور فرزندان به صورت نامحدود، <maxOccurs> (که در بخش بعدی توضیح داده خواهد شد) را به unbounded (بدون محدودیت) تنظیم کنید.
مؤشر Sequence
<sequence> تعیین میکند که فرزندان باید به ترتیب خاصی ظاهر شوند:
<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>
مؤشر Occurrence
مؤشر Occurrence برای تعریف فرکانس ظهور یک عنصر استفاده میشود.
توضیح:برای تمامی مؤشرات "Order" و "Group" (any،all،choice،sequence،name group و reference group)، مقدار پیشفرض maxOccurs و minOccurs یک است.
مؤشر maxOccurs
مؤشر <maxOccurs> تعداد بیشترین بار ظهور یک عنصر را مشخص میکند:
<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" میتواند در علامت "person" به最少 یک بار (که مقدار پیشفرض minOccurs است) و به بیشترین 10 بار ظاهر شود.
مؤشر minOccurs
مؤشر <minOccurs> تعداد کمترین بار ظهور یک عنصر را مشخص میکند:
<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" به最少 0 بار و به بیشترین 10 بار ظاهر شود.
توجه:برای اینکه تعداد ظهور یک عنصر را محدود نکنید، از این بیان استفاده کنید: maxOccurs="unbounded"
یک مثال واقعی:
فایل XML به نام "Myfamily.xml":
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="family.xsd"> <person> <full_name>Tony Smith</full_name> <child_name>Cecilie</child_name> </person> <person> <full_name>David Smith</full_name> <child_name>Jogn</child_name> <child_name>mike</child_name> <child_name>kyle</child_name> <child_name>mary</child_name> </person> <person> <full_name>Michael Smith</full_name> </person> </persons>
این فایل XML شامل یک عنصر ریشه به نام "persons" است. در داخل این عنصر ریشه، ما سه عنصر "person" تعریف کردهایم. هر عنصر "person" باید یک عنصر "full_name" داشته باشد و میتواند تا 5 عنصر "child_name" داشته باشد.
این فایل شماتیک "family.xsd" است:
<?xml version="1.0" encoding="ISO-8859-1"?> <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 تعریف میشود:
<xs:group name="组名称"> ... </xs:group>
شما باید یک عنصر all، choice یا sequence در داخل تعریف group تعریف کنید. در این مثال، یک گروه به نام "persongroup" تعریف شده است که یک مجموعه از عناصر باید به ترتیب دقیق ظاهر شوند:
<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: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>
گروه ویژگیها
گروه ویژگیها از طریق تعریف attributeGroup تعریف میشود:
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
در این مثال، یک گروه ویژگیها به نام "personattrgroup" تعریف شده است:
<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: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>
- صفحه قبلی محتوای مخلوط XSD
- صفحه بعدی XSD <any>