در بخش اول اين مقاله به بررسي مقاهيم و جايگاه نکنولوژي 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 ميباشد .
در بخش چهارم اين مقاله به بررسي خصلت ها ، خواهيم پرداخت .
برگرفته از سايت سخا روش