پس از عرضه 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 در مثال قبل از مصادیق بکارگیری این روش در توصیف عناصر است.
توانائی ایجاد انواع