پس از عرضه XML ، مجموعه ای از تکتولوژی های دیگر در رابطه با آن و با هدفمندی خاصی مطرح و ارائه گردیده است .
بهمین دلیل است که امروزه XML بعنوان خانواده ای بزرگ از سایر تکنولوژی ها در نظر گرفته می شود .XSD) XML Schema Definition) ، یکی از تکنولوژی های موجود در این زمینه است.
در مجموعه مقالاتی که در این رابطه ارائه خواهد شد، به بررسی جایگاه XSD و نحوه ارتباط آن با XML خواهیم پرداخت .
در این مقاله ، به بررسی ضرورت استفاده از XSD و معرفی برخی از ویژگی های آن اشاره خواهد شد .
چرا به Schema نیاز است ؟
یکی از مزایای مهم XML ،ارائه انعطاف و تسهیلات لازم برای طراحان و پیاده کنندگان در رابطه با تشریح ساختار داده ها است.
سندهای XML ، دارای مخاطبان خاص خود ( انسان و یا سایر برنامه های کامپیوتری ) بوده و می بایست امکانات لازم از زاویه استفاده کننده نیز مورد توجه قرار گیرد .
در این رابطه می بایست مجوزهای لازم بمنظور ارائه هر یک از عناصر و یا خصلتهای موجود در سند مشخص گردد.ترتیب عناصر و خصلت های موجود در یک سند XML نیز بسیار حائز اهمیت بوده و همواره مورد نیاز منابعی خواهد بود که بنحوی از سندهای XML بعنوان ساختاری برای تامین داده های خود استفاده می نمایند.
همانگونه که اشاره شد، سندهای XML ممکن است توسط انسان و یا سایر برنامه ها و نرم افزارها استفاده گردند.
بدیهی است با فراگیر شدن استفاده از داده ها با فرمتی که توسط سندهای XML مطرح می گردد ،انتظار حمایت از انواع داده ها که در سایر زبانهای برنامه نویسی نظیر Java، VB، C++ ، SQL وجود دارد ،بشدت مورد نیاز خواهد بود.
پیاده کنندگان سندهای XML بدنبال یک راهکار مناسب برای تعریف نوع داده ها (Date ، String ، Integer) و سایر موارد مربوط به قانونمند نمودن ساختار داده ها در رابطه با یک سند XML بودند .بدین ترتیب تعریف Schema برای سندهای XML ، امری حیاتی و ضروری تلقی گردید .
Schema ، محتوای مجاز یک کلاس از اسناد XML را تشریح می کند.
تاریخچه XML Schema
برای نوشتن سندهای XML ،در ابتدا از شکل ساده ای از زبان نشانه گذاری SGML استفاده می گردید .SGML ، صرفا برای نشانه گذاری اسناد مورد استفاده قرار می گرفت .
جایگاه استفاده از XML در ابتدا برای برنامه نویسان مشخص نبود و اکثر عرضه کنندگان مرورگرهای وب ، از تکنولوژی فوق حمایت نمی کردند .
پس از مدت زمان کوتاهی، تکنولوژی XML جایگاه خاصی را در بین متقاضیان خصوصا برنامه نویسان پیدا کرد .
اکثر استفاده کنندگان به این نکته پی بردند که XML گزینه ای مناسب برای اکثر نیازهای آنان بوده و کاربرد آن بسیار فراتر از نشانه گذاری اسناد است .
در زمان عرضه XML 1.0 توسط کنسرسیوم وب ، از تکنولوژی DTD برای تشریح سندهای XML استفاده می گردید .
گرامر استفاده شده در DTD ، پاسخگوی برخی از نیازهای جدید خصوصا در رابطه با انتقال اطلاعات بود .
در ادامه نیاز های جدیدی در رابطه با پردازش داده های موجود در اسناد XML مطرح گردید .
بمنظور ارائه قابلیت فوق برای منابع مصرف کننده ، می بایست امکاناتی بمنظور تشریح مناسب داده ها ( ارتباط ، نوع داده و ...
) در اختیار برنامه نویسان قرار گیرد .
بدین ترتیب برنامه نویسان قادر به تشخیص رفتار داده ها در یک سند XML و انجام پردازش های لازم در رابطه با داده های موجود در یک سند XML خواهند بود .
بمنظورپاسخ مناسب به خواسته های فوق ، کنسرسیوم وب تصمیم به طراحی یک زبان توصیفی جدید با نام XML Schema گرفت .
در این رابطه یک گروه کاری با همین نام تاسیس گردید .
مهمترین هدف گروه فوق، ایجاد یک زبان توصیفی جدید با قابلیت استفاده توسط استفتاده کنندگان ، تولیدکنندگان و برنامه نویسان با توجه به طیف گسترده انتظارات هر گروه بود .
گروه XML Schema کنسرسیوم وب ، فعالیت خود را از فوریه سال 1999 آغاز و پس از دو سال در 2001 موفق به طراحی زبان توصیفی شدند .
تکنولوژی فوق با نام XML Schema Definition و یا XSD معرفی گردید .
در زمانیکه گروه فوق ، سرگرم طراحی زبان توصیفی خود بودند، راهکارهای متفاوتی در این خصوص توسط سایر شرکت ها ارائه گردید .
مثلا شرکت ماکروسافت تکنولوژی XDR را عرضه نمود .
تکنولوژی استاندارد شده کنسرسیوم وب ، در مدت زمان کوتاهی پس از عرضه ، بعنوان گزینه ای مناسب برای تشریح ساختار داده ها ی موجود در یک سند XML ، مورد توجه عموم متقاضیان قرار گرفت .
ویژگی های مهم XSD
• فرمت آن همانند یک سند XML است.
بنابراین ضرورتی به فراگیری گرامر جدیدی برای ایجاد XSD نخواهد بود .
بدین ترتیب می توان از تمام ابزارهای موجود در رابطه با سندهای XML ، در ارتباط با XSD نیز استفاده کرد .
• ضمن حمایت از انواع داده (Data Type) تعریف شده در اکثر زبانهای برنامه سازی، امکان تعریف نوع داده مورد نظر استفاده کننده را نیز فراهم می نماید .
بدین ترتیب می توان محتویات سند را محدود به نوع داده مورد استفاده در نرم افزار خود نمود و یا حتی از خصلت فیلدهای موجود در بانک اطلاعاتی کپی برداری کرد .
• امکان تعریف کلید یکتا (Key) در عناصر اطلاعاتی را بمنظور عملیات یکتا سازی(Uniqe) فراهم می نماید .
• از خصلت توارث مدل شئ گراء ، بخوبی تبعیت می نماید .
بدین ترتیب یک توصیف می تواند از توصیف دیگر به ارث رسیده باشد .ویژگی فوق ، توانائی تولید توصیف هائی با قابلیت استفاده مجدد را میسر می سازد .
• امکان تعریف عناصر با ارزش NULL ، و یا فاقد ارزش ، در XSD وجود دارد .
• از Namespace بخوبی حمایت می نماید .
بدین ترتیب امکان توصیف اسناد با استفاده از Namespace مختلف فراهم می گردد .
این ویژگی در راستای تولید توصیف هائی با قابلیت استفاده مجدد است .
• اسناد XSD ، نیز نظیر سندهای XML ، توسط پارسر اعتبار سنجی شده و در صورت وجود خطا ء گزارشات لازم ارائه می گردد .
در بخش دوم ، به بررسی گرامر XSD خواهیم پرداخت .
________________________________________
XSD چیست ؟( بخش دوم )
در بخش اول این مقاله ، به بررسی ضرورت استفاده از XSD و معرفی برخی از ویژگی های آن اشاره گردید، در بخش دوم به بررسی گرامر XSD خواهیم پرداخت .
گرامر XSD
برای تشریح گرامر XSD ،در ابتدا به ذکر یک مثال پرداخته و سپس المانهای موجود در آن تشریح می گردد.
جدول زیر نمونه سند XML را نشان می دهد :
گرامر XSD برای تشریح گرامر XSD ،در ابتدا به ذکر یک مثال پرداخته و سپس المانهای موجود در آن تشریح می گردد.
جدول زیر نمونه سند XML را نشان می دهد : توصیف سند فوق، بر اساس متد XSD بصورت زیر است : در ادامه با توجه به سند XML اشاره شده وXSD مربوطه ، به تجزیه و تحلیل توصیف تعریف شده خواهیم پرداخت .
اعلامیه XML با توجه به اینکه XSD خود یک سند XML است ، پس خط اول آن میتواند یک اعلامیه XML باشد .
(به خط اول توصیف تعریف شده XSD توجه نمائید ) المان ریشه در توصیف XSD المان ریشه در یک سند XSD ،همواره با تگ مشخص می گردد .
بمنظور اعلام به پارسر XML که توصیف ارائه شده از روش XSD تبعیت می نماید ، لازم است Namespace مرجع در المان تعیین گردد.
Namespace فوق توسط کنسرسیوم وب ارائه شده است .(به خط دوم توصیف تعریف شده XSD توجه نمائید ) نکته : پیشوند XSD که در مثال فوق از آن استفاده شده است، نشاندهنده متد بکارگرفته شده بمنظور توصیف سند است .
پیشوند فوق ، در صورت تعریف در NameSpace مرجع ، می تواند هر چیز دیگری را نیز شامل شود .
همچنین اگر NameSpace مربوطه بصورت پیش فرض مشخص گردد ، می توان آن را حذف نمود.
پیشنهاد می گردد بمنظور افزایش خوانائی سند و همچنین جلوگیری از مشکلات آتی خصوصا" زمانی که در توصیف مربوطه از توصیف دیگری XSD چیست ؟( بخش سوم ) در بخش اول این مقاله به بررسی مقاهیم و جایگاه نکنولوژی XSD اشاره و در بخش دوم به بررسی بررسی گرامر XSD پرداخته گردید .
در این بخش به بررسی انواع داده ساده ( simple type ) و مرکب ( complex type ) ، خواهیم پرداخت .
انواع داده ( ساده ، مرکب ) جهت توصیف داده ها در یک سند XML با استفاده از تکنولوژی XSD ، از دو نوع ساده و مرکب استفاده می گردد که بمنظور بکارگیری آنان در گرامر XSD ، نشانه هائی با همین عنوان یعنی و در نظر گرفته شده است .
قبل از تشریح هر یک از موارد فوق ، لازم است جایگاه استفاده از هر یک بدرستی مشخص گردد .
نوع داده مرکب زمانی استفاده میگردد که : عنصر داده دارای عناصر زیر مجموعه باشد و/ یا .
عنصر داده دارای خصائص (Attribute) باشد .
نوع داده ساده زمانی استفاده میگردد که : تصمیم داریم با اعمال شرایط و یا محدودیتهائی بر روی یک نوع داده استاندارد (مثل String) یک نوع داده جدید (User Define Data Type) ایجاد نمائیم و / یا عنصر مورد نظر دارای عناصر زیر مجموعه و یا خصائص (Attribute) نمی باشد.
بمنظور آشنائی با برخی از مفاهیم اولیه در این خصوص ، مجددا" به مثال ارائه شده در بخش دوم مقاله ، مراجعه می نمائیم .
درمثال فوق ، عنصر Student دارای دو زیر عنصر ID و GPA است.
بنابراین می بایست عنصر Student بصورت مرکب توصیف گردد.
بدین منظور لازم است پس از توصیف عنصر مربوطه و پیش از توصیف عناصر زیر مجموعه آن از نشانه استفاده شده و در ادامه عناصر زیر مجموعه را درون بلاکی از این نشانه قرار دهیم.( خطوط چهارم و نهم ) فرض کنید ، می خواهیم بر روی عنصر GPA که از نوع استاندارد String است ، محدودیتی خاص را اعمال نمائیم، بطوریکه طول آن چهار حرف و فرمت آن به صورت (Digit.DigitDigit) باشد .بمنظور تامین خواسته فوق ، لازم است یک نوع داده جدید با لحاظ نمودن محدودیت اشاره شده ، بر روی نوع داده استاندارد String تعریف گردد .
با توجه به ضرورت تعریف یک نوع داده جدید ، می بایست از نشانه استفاده گردد .
تشریح نوع داده جدید بر اساس تکنولوژی XSD ، بصورت زیر خواهد بود.
( در مقالات بعد، بصورت مفصل تر به بررسی اعمال محدودیت ، ارزش ها و الگوهای مختلف ، پرداخته خواهد شد ).
با توجه به تعریف نوع ساده مورد نظر و لحاظ نمودن محدودیت های مربوطه ، سند XSD مثال قبل به شکل ذیل خواهد بود : سند فوق، به شکل زیر نیز می تواند ارائه گردد : تفاوت موجود در ارتباط با هر یک از روش های ارائه شده به قابلیـت استفاده مجدد از نوع تعریف شده برمی گردد.
در حالت اول، نوع داده جدید studentgpa را میتوان در هر محلی از سند (در تشریح هر یک از عناصر دیگر ) استفاده کرد (قابلیت استفاده مجدد).
در حالت دوم، نوع تعریف شده صرفا" بر روی عنصر GPA اعمال و امکان استفاده مجدد از وجود نخواهد داشت (غیر قابل استفاده مجدد) .
جمع بندی بمنظور تشریح عناصر ( نوع ساده و یا نوع مرکب ) ، از سه روش متفاوت استفاده می گردد : روش اول : میتوان در یک خط نام عنصر و نوع آن و حداقل و حداکثر حضور آن در سند را تعیین نمود .در واقع روش فوق ، علیرغم اینکه از نشانه استفاده نشده است ، یک عنصر ساده را تشریح می نماید.چرا که نوع داده این نوع عناصر از انواع داده استاندارد بوده و در انتهای خط نیز توصیف با علامت " / " خاتمه یافته است .
توصیف عناصر ID و GPA در مثال ابتدای مقاله از مصادیق این روش توصیف عناصر است .
روش دوم : در این روش نام عنصر، حداقل و حداکثر حضور آن در سند به عنوان عنصر مادر تشریح شده و سپس عناصر زیر مجموعه آن در داخل یک بلاک تعیین میگردند .
این نوع توصیف در خصوص انواع داده مرکب یعنی عناصری که دارای زیر مجموعه و یا خصائص (attribute) میباشند، استفاده می گردد .
توصیف عنصر Student در مثال ابتدای مقاله از مصادیق این روش است .
روش سوم : در این روش نام عنصر ، حداقل و حداکثر حضور آن در سند توصیف و سپس محدودیت اعمال شده بر روی نوع داده استاندارد در یک بلوک جهت تعریف یک نوع داده جدید، توصیف میگردد.
در واقع روش فوق، نوع دیگر توصیف انواع داده ساده Simpletype بوده که با اعمال محدودیت بر روی یکی از انواع داده استاندارد ایجاد شده است .
تعریف studentgpa در مثال قبل از مصادیق بکارگیری این روش در توصیف عناصر است.
توانائی ایجاد انواع داده جدید با اعمال محدودیت بر روی انواع داده استاندارد از ویژگیهای بسیار مهم و توانمند تکنولوژی XSD میباشد .
در بخش چهارم این مقاله به بررسی خصلت ها ، خواهیم پرداخت .
XSD چیست ؟( بخش چهارم) آنچه تاکنون گفته شده است : بخش اول : مقاهیم و جایگاه نکنولوژی XSD بخش دوم : گرامر XSD بخش سوم :انواع داده ( ساده ، مرکب ) در این بخش به بررسی Attribute خواهیم پرداخت .
در تشریح ساختار داده های یک موجودیت (Entity) ، برخی مواقع به اجزاء و یا المانهائی برخورد خواهیم کرد که ارتباط تنگاتنگی با موجودیت داشته و بنوعی بعنوان یک خصلت یا ویژگی موجودیت مورد بررسی ، شناخته می گردند.نحوه حضور این اجزاء در ساختمان داده موجودیت از قبیل مقادیر پیش فرض،مقادیر ثابت یا خصلت تغییر ناپذیری از ویژگی های مهم این اجزاء محسوب می گردند .
بعنوان مثال فرض کنید در یک سازمان بزرگ برای تشکیل پرونده پرسنل، از یک فیلد اطلاعاتی با نام ملیت استفاده می شود.بیش از 98 درصد پرسنل شرکت مزبور دارای ملیت ایرانی بوده و تنها ممکن است یک و یا دو درصد از پرسنل ، ملیت غیر ایرانی داشته باشند.با توجه به وضعیت فوق ، می توان فیلد ملیت را به صورت پیش فرض مقدار دهی و از تکرار آن در سند XML مربوطه جلوگیری و صرفا" ملیت افراد غیر ایرانی را در سند مشخص نمود.
در چنین مواردی علاوه بر حفظ یکپارچگی اطلاعات به مقدار زیادی در حجم اطلاعات سند XML نیز صرفه جوئی خواهد شد .
در تکنولوژی XSD برای معرفی اینگونه اجزاء ، نشانه ای تحت عنوان پیش بینی شده است .
گرامر استفاده از attribute بصورت زیر است : Name : نام Attribute را مشخص و یک خصلت اجباری است .
Type : نوع داده attribute را مشخص و جزء خصلت های اجباری است ( نوع داده حتما" باید از انواع داده ساده (simple type) باشد).
Use : نحوه استفاده از attribute را مشخص و می تواند مقادیر زیر را داشته باشد : Value : اگر ویژگی Use دارای ارزش Default و یا Fixed باشد آنگاه ارزش مورد نظر می بایست مشخص و در غیر اینصورت نیازی به استفاده از ویژگی فوق ، نخواهد بود.
جایگاه فیزیکی و نحوه تعریف attribute در یک سند XSD همانگونه که در بخش سوم این مقاله اشاره گردید ، عناصر مرکب (ComplexType) عناصری هستند که دارا عناصر زیر مجموعه و یا attribute باشند .
بنابراین جایگاه فیزیکی attribute در داخل یک بلاک Complextype است (انتهای بلاک و پس از توصیف کلیه عناصر زیر مجموعه) .
بمنظور بررسی نحوه استفاده از attribute ، مثال ارائه شده در بخش سوم این مقاله را مجددا" بررسی می نمائیم .در مثال فوق ، قصد داریم عنصر ID را بصورت یک attribute تعریف نمائیم .
در چنین حالتی توصیف سند بصورت زیر خواهد بود : روش های توصیف attribute جهت توصیف یک attribute از دو روش متفاوت استفاده می گردد .
اگر نوع داده attribute مورد نظر از انواع داده استاندارد و یا از پیش تعریف شده باشد ، آنگاه طبق گرامر ارائه شده ، می توان توصیف یک attribute را بصورت زیر انجام داد : اما اگر بخواهیم نوع داده attribute را با اعمال محدودیت بر روی یک نوع داده استاندارد تشریح نمائیم ، می توان از گرامر زیر استفاده کرد : facet ، حالات و ارزش های متفاوت آن در مقالات بعد به طور مفصل بررسی خواهد شد.
جهت تشریح بهتر روش دوم، به بررسی یک مثال دیگر می پردازیم .
فرض کنید که در مثال قبل ، قصد داریم بر روی نوع داده attribute ID ، محدودیتی خاصی را اعمال نمائیم :"طول رشته پنج و کاراکترهای آن عدد باشند " ، در چنین حالتی توصیف سند بصورت زیر خواهد بود : همانگونه که مشاهده می گردد ( با اندکی دقت !
) ، توصیف های ارائه شده برای خصلت ID داخلی بوده و امکان استفاده مجدد از آن وجود نخواهد داشت .
در صورت نیاز به استفاده مجدد از توصیف یک Attribute در مکان هائی دیگر از سند ، می بایست توصیف Attribute مورد نظر در خارج از محدوده داخلی قرار گیرد .
در بخش پنجم این مقاله به بررسی حالات متفاوت ساختار ، خواهیم پرداخت .
XSD چیست ؟( بخش پنجم) آنچه تاکنون گفته شده است : بخش اول : مقاهیم و جایگاه نکنولوژی XSD بخش دوم : گرامر XSD بخش سوم :انواع داده ( ساده ، مرکب ) بخش چهارم : بررسی Attribute در این بخش به بررسی نحوه تشریح یک عنصر در سند XSD خواهیم پرداخت .
دو راه متفاوت جهت تشریح عناصر یک سند XML با استفاده از متد XSD وجود دارد: روش اول : در این روش ، زیر مجموعه های یک عنصر و خصلت های آن در داخل یک بلاک و بعد از تعریف عنصر اصلی مستقر و تشریح می گردند.روش فوق ، توصیف داخلی یا Nested نامیده می شود .
روش دوم : در این روش ، توصیف عناصر زیر مجموعه در داخل بدنه اصلی Schema ارائه گردیده و سپس در داخل بلاک به عناصر مربوطه مراجعه خواهد شد.
روش فوق ، توصیف عمومی یا Global نامیده می شود.
انتخاب هر یک از روش های فوق در توصیف عناصر ، بستگی به ماهیت خود عنصر و دیدگاه طراح دارد .
بعبارت دیگر اگر تعریف یک عنصر با نوع داده ساده حالت انحصاری داشته باشد و در سایر عناصر سند جاری و یا عناصر اسناد دیگر قصد استفاده از آنان وجود نداشته باشد ، مناسب است از روش اول بمنظور تشریح عنصر استفاده گردد.
در صورت عدم تحقق شرایط فوق ، مناسب است از روش دوم استفاده گردد.
در واقع روش دوم، امکان استفاده مجدد از توصیف انجام شده را فراهم می نماید.
مثال زیر نحوه تشریح یک عنصر در سند XSD را نشان می دهد : در مثال فوق،عنصر Student به عنوان یکی از زیر مجموعه های عنصر ریشه یا همان Schema توصیف و لذا به عنوان یک تعریف عمومی مطرح و می توان ازآن در هر محل دیگر سند جاری و یا حتی اسناد دیگر استفاده نمود .
اما عناصر ID و GPA به صورت عناصر زیر مجموعه عنصر Student و آنهم در داخل آن (Nested) تشریح گردیده اند، لذا توصیف این عناصر صرفا" در عنصر Student معتبر بوده و در هیچ محل دیگر سند جاری و یا اسناد دیگر، قابل استفاده نخواهند بود .
فرض کنید در ساختار سند فوق ،عنصر دیگری با نام Teacher ، وجود داشته باشد که دارای دو زیر عنصر ID و GPA می باشد.
با توجه به فرضیات فوق ، مناسب است از روش دوم استفاده و تعاریف مربوط به عناصر ID و GPA را در داخل عنصر ریشه قرار دهیم .
بدین ترتیب ، قادر خواهیم بود از تعاریف دو عنصر فوق در عناصر Student و Teacher بصورت یکسان استفاده نمائیم .
به مثال ذیل توجه کنید : در مثال فوق ، از خصلت Ref در مقابل Name استفاده شده است .در صورت نیاز به هر نوع تغییردر توصیف عناصر ID وGPA کافی است تغییر مورد نظر را صرفا" در یک محل ( محلی که توصیف آنان انجام شده است ) اعمال نمود .
بدین ترتیب ، تمام سند و در هر مکانی که از عناصر فوق استفاده شده است ، متاثر از تغییر ایجاد شده بصورت اتوماتیک می گردد .
روش های فوق ، در خصوص انواع داده ساده (Simpletype) نیز صادق است .
همانگونه که در بخش سوم این مقاله اشاره گردید ، تعریف یک عنصر ساده (Simpletype) را میتوان بصورت داخلی (Nested) و یا بصورت زیر مجموعه ای از عنصر ریشه (Schema) ، انجام داد.
در حالت دوم ، امکان استفاده مجدد از تعریف انجام شده وجود داشته و می توان از آن در هر مکانی از توصیف جاری و یا حتی توصیفهای دیگر استفاده نمود.
مثال ارائه شده در بخش سوم این مقاله ، نحوه اعمال محدودیت بر روی یک نوع داده استاندارد نظیر String و ایجاد نوع داده جدیدی با نام StudentGpa را نشان می دهد .
مثال فوق ، در این راستا می تواند مفید واقع شود .
دسترسی به سایر توصیف ها همانگونه که اشاره گردید، عناصر و انواع داده ئی که بعنوان عنصر زیر مجموعه ریشه Schema در یک توصیف قرار می گیرند ، امکان استفاده مجدد از آنان در سایر توصیف ها وجود خواهد داشت .
بدین منظور و در اولین مرحله می بایست از Import و یا Include استفاده گردد مثال زیر ، نحوه استفاده از Include را نشان می دهد .
از گرامر فوق ، زمانی استفاده می شود که توصیف جاری و یا بعبارت دیگر Targetnamespace و توصیفی که می خواهیم از عناصر و یا انواع داده آن استفاده نمائیم ، در یک موقعیت فیزیکی و یا Location قرار داشته باشند .
به مثال ذیل توجه فرمائید : در مثال فوق ، موقعیت فیزیکی توصیف جاری و توصیفی که می خواهیم از آن استفاده نمائیم (StudentGpa1.xsd) یکسان است .
در تشریح عنصر Teacher ، از تعریف StudentGpa که در سند StudentGpa1.xsd توصیف شده است، استفاده گردیده است .
در صورتیکه موقعیت فیزیکی سند جاری و یا Targetnamespace و سندی که می خواهیم از تعاریف آن استفاده نمائیم یکسان نباشد ، می بایست از گرامر ذیل استفاده گردد : فرض کنید در مثال قبل ، موقعیت فیزیکی سند جاری و یا Targetnamespace و سندی که تعریف studentgpa در آن توصیف شده است یکسان نباشد ، در چنین مواردی می توان از Import استفاده و توصیف سند مورد نظر را بصورت زیر انجام داد : همانگونه که مشاهده می گردد ، موقعیت فیزیکی سند جاری و سندی که از آن استفاده شده است ، یکسان نمی باشد (به نحوه استفاده از تعریف عنصر studentGpa توجه نمائید ) .
در بخش ششم این مقاله ، به بررسی انواع داده در XSD و نحوه مستند سازی اسناد مربوطه ، خواهیم پرداخت .
XSD چیست ؟( بخش ششم) آنچه تاکنون گفته شده است : بخش اول : مقاهیم و جایگاه نکنولوژی XSD بخش دوم : گرامر XSD بخش سوم :انواع داده ( ساده ، مرکب ) بخش چهارم : بررسی Attribute بخش پنجم : تشریح یک عنصر در سند XSD در این بخش به بررسی انواع داده در XSD ، خواهیم پرداخت .
تعیین نوع داده یکی از ویژگی های مهم XSD بوده که با استفاده از آن میتوان عناصر و یا خصلت ها را با فرمت صحیح و دلخواه اعتبار سنجی نمود .
تکنولوژی XSD ، دامنه گسترده و وسیعی از انواع داده را حمایت و در عین حال به کاربر امکان تعریف نوع داده دلخواه را نیز خواهد داد .
انواع داده ساده یا استاندارد تکنولوژی XSD ، یش از چهل و چهار نوع نوع داده ساده یا استاندارد را حمایت که بسیاری از آنان بصورت از پیش تعریف شده در XSD تعبیه و برخی دیگر نیز از تعاریف فوق ، مشتق شده اند .
بدین ترتیب کاربران بسادگی قادر به استفاده از آنان در توصیف عناصر و یا خصلت های اسناد مورد نظر خود خواهند بود .
جدول زیر ، نحوه تعریف نوع داده یک عنصر را نشان می دهد ( در بخش های قبل مقالات از آن استفاده شده است ) .
جدول زیر ، انواع داده مهم حمایت شده در XSD را نشان می دهد .
ایجاد انواع داده دلخواه همانگونه که در بخش های قبل این مقاله اشاره گردید ، ، در XSD این امکان وجود خواهد داشت که کاربر با استفاده از انواع داده استاندارد (جدول فوق) و اعمال محدودیت های دلخواه بر روی آنان ، اقدام به تعریف انواع داده ساده (Simple) دلخواه خود نموده و از آنها در توصیف جاری و یا حتی سایر توصیف ها استفاده نماید .
با توجه به اینکه نحوه تعریف انواع داده دلخواه در مقالات قبل به تفصیل بیان شده است ، در این بخش از مقاله ، از تکرار آن خودداری نموده و صرفا" به تشریح حالات مختلف خلاصه سازی یا محدود سازی اشاره خواهد شد .
پارمترهای محدود سازی (Facets) خلاصه سازی و یا محدود سازی بستگی مستقیم به نوع داده پایه ای دارد که میخواهیم محدود سازی را بر روی آن اعمال نمائیم .
در خصوص داده هائی از نوع رشته ای، پارمترهای مختلف محدود سازی به شرح ذیل می باشند : enumeration length minlength maxlength pattern whitespace جدول زیر نحوه استفاده از پارامتر الگو(pattern) و اعمال کنترل های مختلف بمنظور تشریح الگو را نشان می دهد : مثال یک : در مثال زیر نحوه استفاده از پارامتر الگو ، نشان داده شده است : مثال دوم : در مثال زیر نحوه استفاده از پارامتر الگو ، نشان داده شده است : نکته : در مثال دوم، ارزش های مختلفی که یک سند برای عنصر StudentGPA می تواند داشته باشد 2.0 یا 2.5 یا 3.0 یا 3.5 یا 4.0 است .
اما در مثال اول طول رشته باید چهار حرف بوده و الگوی آن نیز معادل الگوی تعریف شده در pattern باشد .
حال سئوال اینجا است که در محدود سازی یک نوع داده ، جایگاه واقعی استفاده از and و یا or چگونه است ؟.
جواب این سئوال پیچیده نیست ، در واقع ، در مواردیکه از خصلت های enumoration و pattern استفاده می گردد ، واقعیت or حکمفرما بوده و در صورت استفاده از سایر خصلت ها ، واقعیت and حکم فرما خواهد بود.
در خصوص داده های عددی ، پارامترهای محدود سازی(Facets) به شرح ذیل می باشد : enumeration fractionDigits maxExclusive minExclusive maxInclusive minInclusive pattern totalDigits whiteSpace مثال : در مثال زیر نحوه استفاده از پارامترهای محدودسازی در خصوص داده های عددی را نشان می دهد : در این مثال نوع داده دلخواهی جهت توصیف عنصر شماره درس ایجاد شده است که طبق آن هر دانشجو میتواند تا 10 درس را ثبت نام نموده و شماره هر درس نیز بین 1000 تا 3000 باید باشد .
بنابر این در صورتیکه در یک سند XML که از توصیف فوق استفاده نموده وعنصر course دارای مقدار 4000 و بصورت زیر باشد،پارسر XSD خطائی مبنی بر ایجاد مشکل در نوع داده ارائه و سند اعتبار سنجی نخواهد شد .
4000 در بخش هفتم این مقاله به بررسی مستند سازی یک توصیف یا سند XSD خواهیم پرداخت .
Schema ، محتوای مجاز یک کلاس از اسناد XML را تشریح می کند.
یک سند نمونه XML 12345 3.5 67890 4.0 توصیف سند XML با استفاده از متد XSD .
.
یک سند XSD نمونه بمنظور بررسی انواع داده تعریف یک نوع داده ساده با اعمال محدودیت یک سند XSD نمونه بمنظور بررسی انواع داده با لحاظ نمودن محدودیت ( روش اول ) یک سند XSD نمونه بمنظور بررسی انواع داده با لحاظ نمودن محدودیت ( روش دوم ) تعریف یک نوع مرکب .
تعریف یک نوع ساده .
گرامر استفاده از attribute توضیحاتمقدار نسبت داده شدهخصلت اجباری استRequiredخصلت دارای مقدار پیش فرض استDefaultخصلت دارای مقدار ثابت و غیر قابل تغییر استFixedخصلت اختیاری استOptionalخصلت محافظت شده استProhibited نحوه استفاده از Attribute در یک سند XSD روش اول : توصیف یک Attribute روش دوم : توصیف یک Attribute مثال : توصیف یک سند با اعمال محدودیـت در رابطه با Attribute مثال : توصیف یک سند ( بررسی تعاریف عمومی و داخلی ) مثال : توصیف یک سند و ضرورت استفاده از تعریف عمومی مثال : نحوه و جایگاه استفاده از Include .
مثال : نحوه استفاده از Include مثال : نحوه و جایگاه استفاده از Import .
مثال : نحوه استفاده از Import تعریف یک نوع داده در XSD.
انواع داده حمایت شده در XSDانواع داده حمایت شده در XSDنوع دادهتوضیحات و مثالanyuriUniform Resource Locator Example : http://www.srco.irbase64BinaryMIME STYLE base64 encoded binary datahexBinaryHexadecimal encoded binary databooleanTRUE(1) Or FALSE(0)byteNumbers between -128 To 127dateTimeDate in a subset of the ISO8601 format Time and Timezone are optional Example: 2003-04-15T10:40:15.000-05:00dateDate in a subset of the ISO8601 format Example: 2003-04-15decimalPositive or negative arbitrary precision decimal value Examples: -5.34,0,5.34,5000.00doubledouble precision 64-bit floating pointdurationDuration of time specified in years , months , days , hours , minutes and seconds format , as defined in the ISO8601 standards extended format PnYnMnDTnHnMnS.nY is then number of years , nM is the number of months and so on .The P is required but the other items are optional Example:To specify duration of one year and two months you would specify : P1Y2MfloatSingle precision 32-bit floating pointgDayDay in Gregorian format Example: --31 every 31th day,regardless of monthgMonthMonth in Gregorian format Example: --06-- every maygMonthDayMonth and day in Gregorian format Example: --07-31 every july 31thgYearYear in Gregorian format Example: 2000gYearMonthYear and month in Gregorian format Example:2000-02IntInteger.Sign is optional Range: -2147483648 to 2147483647IntegerThe standard mathematical concept of integer numbers Range: An infinite set of negative or positive numbersLanguageAny valid XML language value as defined by RFC 1766 Example: en-USLong: -9223372036854775808 to 9223372036854775807NameXML 1.0 name typeNCNameXML namespace ncname (An XML name without the prefix and colon)negativeIntegerRange : Negative infinity to -1nonNegativeIntegerRange : 0 to infinitypositiveIntegerRange : 1 to infinitynonPositiveIntegerRange : Negative infinity to 0normalizedStringString of character data.
Newline,tab and carriage-return characters are converted to spaces before schema processing.ShortRange : -32768 to 32767StringString of character data .(characters that match CHAR from XML 1.0)TimeTime in hh:mm:ss.sss-TimeZone format .
Time zone is optional .
The time zone is based on the number of hours ahead or behind coordinated universal time (as define in ISO8601) Example : 11:45:33.20-05:00 where 05:00 means 5 hours behind universal time .Tokenstring of character data .
Like normalizedstring the newline,tab and carriage-return characters are converted to spaces before schema processing .
In addition , adjacent space characters are collapsed to a single space and leading and trailing spaces are removed .unsignedByteUnsigned byte .
Range : 0 to 255unsignedIntUnsigned integer .
Range : 0 to 4294967295unsignedlongUnsigned long integer .
Range : 0 to 18446744073709551615unsignedShortUnsigned short integer.
Range : 0 to 65535QNameXML namespace QName.NOTATIONXML 1.0 NOTATION attribute type.
to retain compatibility between XSD and XML DTD 1.0s.
these should only be used with attributes.NMTOKENName token value.
string consisting of one word in a set of letters , digits and other characters in any combination .to retain compatibility between XSD and XML DTD 1.0s.
these should only be used with attributes.NMTOKENSList of name tokens separated by whitespace.
these should only be used with attributes.IDThe ID value must be unique throughtout all elements in the XML document.
This attribute is refrenced by other attributes such as idref and idrefs.
these should only be used with attributes.IDREFReferences the value in an ID attribute within the XML document.
these should only be used with attributes.IDREFSReferences multiple ID type values separated by whitespace.
these should only be used with attributes.ENTITYXML 1.0 ENTITY attribute type.
these should only be used with attributes.ENTITIESXML 1.0 ENTITIES attribute type.
ENTITIES contain a set of ENTITY values.
these should only be used with attributes.