|
عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
|
XSD چيست ؟( بخش سوم ) |
مديريت نرم افزار |
5198 |
5 |
4 |
XSD چيست ؟( بخش سوم )
XSD چيست ؟( بخش سوم )
در
بخش اول اين مقاله به بررسی مقاهيم و جايگاه نکنولوژی
XSD اشاره و در
بخش دوم
به بررسی بررسی گرامر XSD
پرداخته گرديد . در اين بخش به بررسی انواع داده ساده ( simple
type ) و مرکب ( complex type ) ، خواهيم پرداخت
.
انواع داده ( ساده ، مرکب )
جهت توصيف داده ها در يک سند XML با
استفاده از تکنولوژی XSD ، از دو نوع ساده و مرکب
استفاده می گردد که بمنظور بکارگيری آنان در گرامر XSD
، نشانه هائی با همين عنوان يعنی <SimpleType> و <ComplexType>
در نظر گرفته شده است . قبل از تشريح هر يک از موارد فوق ، لازم است جايگاه استفاده
از هر يک بدرستی مشخص گردد .
نوع داده مرکب <ComplexType>
زمانی استفاده ميگردد که :
نوع داده ساده <SimpleType>
زمانی استفاده ميگردد که :
-
تصميم داريم با اعمال شرايط و يا محدوديتهائی بر
روی يک نوع داده استاندارد (مثل String) يک نوع داده
جديد (User Define Data Type) ايجاد نمائيم و / يا
-
عنصر مورد نظر دارای عناصر زير مجموعه و يا خصائص (Attribute)
نمی باشد.
بمنظور آشنائی با برخی از مفاهيم
اوليه در اين خصوص ، مجددا" به مثال ارائه شده در
بخش دوم
مقاله ، مراجعه می نمائيم .
|
يک سند XSD
نمونه بمنظور بررسی انواع داده |
|
<?XML Version = "1.0"?>
<XSD:Schema xmlns:xsd='http://www.W3.org/2001/xmlschema'>
<XSD:Element
Name="student" Minoccurs="0" MaxOccurs="Unbounded">
<XSD:ComplexType>
<XSD:Sequence>
<XSD:Element Name="ID" Type="XSD:String" MinOccurs="1"
MaxOccurs="1"/>
<XSD:Element Name="GPA" Type="XSD:String" MinOccurs="1"
MaxOccurs="1"/>
</XSD:Sequence>
</XSD:ComplexType>
</XSD:Element>
</XSD:Schema> |
درمثال فوق ، عنصر Student
دارای دو زير عنصر ID و
GPA است. بنابراين می بايست عنصر Student بصورت مرکب توصيف
گردد. بدين منظور لازم است پس از توصيف عنصر مربوطه و پيش از توصيف عناصر زير مجموعه آن از نشانه
<ComplexType> استفاده شده و در ادامه عناصر زير مجموعه
را درون بلاکی از اين نشانه قرار دهيم.( خطوط چهارم و نهم )
فرض کنيد ، می خواهيم بر روی عنصر
GPA که از نوع استاندارد String
است ، محدوديتی خاص را اعمال نمائيم، بطوريکه طول آن چهار حرف و فرمت آن به صورت (Digit.DigitDigit)
باشد .بمنظور تامين خواسته فوق ، لازم است يک نوع داده جديد با لحاظ نمودن محدوديت
اشاره شده ، بر روی نوع داده
استاندارد String تعريف گردد . با توجه به ضرورت تعريف
يک نوع داده جديد ، می بايست از نشانه <SimpleType>
استفاده گردد . تشريح نوع داده جديد بر اساس تکنولوژی XSD
، بصورت زير خواهد بود. ( در مقالات بعد، بصورت مفصل تر به بررسی اعمال
محدوديت ، ارزش ها و الگوهای مختلف ، پرداخته خواهد شد ).
|
تعريف يک نوع داده ساده با اعمال
محدوديت |
|
<XSD:simpletype name="studentgpa"
minoccurs="1" maxoccurs="1">
<XSD:restriction base="XSD:string">
<XSD:length
value="4"/>
<XSD:pattern
value="\d{1}.\d{2}"/>
</XSD:restriction>
</XSD:simpletype> |
با توجه به تعريف نوع ساده مورد نظر و
لحاظ نمودن محدوديت های مربوطه ، سند
XSD مثال قبل به شکل ذيل خواهد بود :
|
يک سند XSD
نمونه بمنظور بررسی انواع داده با لحاظ نمودن محدوديت ( روش اول
) |
|
<?XML Version = "1.0"?>
<XSD:Schema xmlns:xsd='http://www.W3.org/2001/xmlschema'>
<XSD:Element
Name="student" Minoccurs="0" MaxOccurs="Unbounded">
<XSD:ComplexType>
<XSD:Sequence>
<XSD:Element Name="ID" Type="XSD:String" MinOccurs="1"
MaxOccurs="1"/>
<XSD:Element Name="GPA" Type="StudentGpa"/>
</XSD:Sequence>
</XSD:ComplexType>
</XSD:Element>
<XSD:simpletype name="studentgpa"
minoccurs="1" maxoccurs="1">
<XSD:restriction base="XSD:string">
<XSD:length
value="4"/>
<XSD:pattern
value="\d{1}.\d{2}"/>
</XSD:restriction>
</XSD:simpletype>
</XSD:Schema> |
سند فوق، به شکل زير نيز می تواند
ارائه گردد :
|
يک سند XSD
نمونه بمنظور بررسی انواع داده با لحاظ نمودن محدوديت ( روش دوم
) |
|
<?XML Version = "1.0"?>
<XSD:Schema xmlns:xsd='http://www.W3.org/2001/xmlschema'>
<XSD:Element
Name="student" Minoccurs="0" MaxOccurs="Unbounded">
<XSD:ComplexType>
<XSD:Sequence>
<XSD:Element Name="ID" Type="XSD:String" MinOccurs="1"
MaxOccurs="1"/>
<XSD:Element Name="GPA" Type="string"
minoccurs="1" maxoccurs="1"/>
<XSD:simpletype
>
<XSD:restriction base="XSD:string">
<XSD:length value="4"/>
<XSD:pattern value="\d{1}.\d{2}"/>
</XSD:restriction>
</XSD:simpletype>
</XSD:Sequence>
</XSD:ComplexType>
</XSD:Element>
</XSD:Schema> |
تفاوت موجود در ارتباط با هر يک از
روش های ارائه شده به قابليـت استفاده مجدد از نوع تعريف شده برمی گردد. در حالت اول، نوع داده
جديد studentgpa را ميتوان در هر محلی از سند (در تشريح
هر يک از عناصر ديگر ) استفاده کرد (قابليت استفاده مجدد). در حالت دوم، نوع تعريف
شده صرفا" بر روی عنصر GPA اعمال و امکان استفاده
مجدد از وجود نخواهد داشت (غير قابل استفاده مجدد) .
جمع بندی
بمنظور تشريح عناصر ( نوع ساده و يا نوع مرکب ) ، از سه روش
متفاوت استفاده می گردد :
-
روش دوم : در اين روش نام عنصر، حداقل و حداکثر
حضور آن در سند به عنوان عنصر مادر تشريح شده و سپس عناصر زير مجموعه آن در داخل يک
بلاک <Complextype> تعيين ميگردند . اين نوع توصيف در خصوص انواع داده مرکب يعنی عناصری که دارای زير
مجموعه و يا خصائص (attribute) ميباشند، استفاده می گردد .
توصيف عنصر Student در مثال ابتدای مقاله از مصاديق اين
روش است .
|
تعريف يک نوع مرکب |
|
<XSD:Element
Name="name" Minoccurs="int" MaxOccurs="int">
<XSD:ComplexType>
.
.
.
</XSD:ComplexType>
</XSD:Element> |
-
روش سوم : در اين روش نام عنصر
، حداقل و حداکثر
حضور آن در سند توصيف و سپس محدوديت اعمال شده بر روی نوع داده استاندارد در يک
بلوک <Simpletype> جهت تعريف يک نوع داده جديد،
توصيف ميگردد. در واقع روش فوق، نوع ديگر توصيف انواع داده ساده
Simpletype بوده که با اعمال محدوديت بر روی يکی از
انواع داده استاندارد ايجاد شده است . تعريف studentgpa
در مثال قبل از مصاديق بکارگيری اين روش در توصيف عناصر است.
|
تعريف يک نوع ساده |
|
<XSD:element name = "name"
minoccurs="int" maxoccurs="int" />
<XSD:simpletype>
<XSD:restriction>
.
.
.
</XSD:restriction>
</XSD:simpletype>
</XSD:element> |
توانائی
ايجاد انواع داده جديد با اعمال محدوديت بر روی انواع داده استاندارد از ويژگيهای
بسيار مهم و توانمند تکنولوژی XSD ميباشد .
در بخش چهارم اين مقاله به بررسی خصلت ها ، خواهيم پرداخت .