XSD چيست ؟

پس از عرضه XML ، مجموعه ای از تکتولوژی های ديگر در رابطه با آن و با هدفمندی خاصی مطرح و ارائه گرديده است . بهمين دليل است که امروزه XML بعنوان خانواده ای بزرگ از ساير تکنولوژی ها در نظر گرفته می شود .XSD) XML Schema Definition) ، يکی از تکنولوژی های موجود در اين زمينه است. در مجموعه مقالاتی که در اين رابطه ارائه خواهد شد، به بررسی جايگاه XSD و نحوه ارتباط آن با XML خواهيم پرداخت . در اين مقاله ، به بررسی ضرورت استفاده از
دوشنبه، 14 بهمن 1387
تخمین زمان مطالعه:
موارد بیشتر برای شما
XSD چيست ؟
XSD چيست ؟
XSD چيست ؟

پس از عرضه 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 ،در ابتدا به ذکر يک مثال پرداخته و سپس المانهای موجود در آن تشريح می گردد. جدول زير نمونه سند XML را نشان می دهد :

يک سند نمونه XML

<?XML Version = "1.0"?>
     <Students>
           <Student>
                  <ID>12345</ID>
                  <GPA>3.5</GPA>
            </Student>
            <Student>
                  <ID>67890</ID>
                  <GPA>4.0</GPA>
            </Student>
      </Students>

توصيف سند فوق، بر اساس متد XSD بصورت زير است :

توصيف سند XMLبا استفاده از متد 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>

در ادامه با توجه به سند XML اشاره شده وXSD مربوطه ، به تجزيه و تحليل توصيف تعريف شده خواهيم پرداخت .

اعلاميه XML

با توجه به اينکه XSD خود يک سند XML است ، پس خط اول آن ميتواند يک اعلاميه XML باشد . (به خط اول توصيف تعريف شده XSD توجه نمائيد )

<?XML Version = "1.0"?>

المان ريشه در توصيف XSD

المان ريشه در يک سند XSD ،همواره با تگ <Schema> مشخص می گردد . بمنظور اعلام به پارسر XML که توصيف ارائه شده از روش XSD تبعيت می نمايد ، لازم است Namespace مرجع در المان <schema> تعيين گردد. Namespace فوق توسط کنسرسيوم وب ارائه شده است .(به خط دوم توصيف تعريف شده XSD توجه نمائيد )

    <XSD:Schema xmlns:xsd='http://www.W3.org/2001/xmlschema'>
            .
            .
            .
      </XSD:Schema>

نکته : پيشوند XSD که در مثال فوق از آن استفاده شده است، نشاندهنده متد بکارگرفته شده بمنظور توصيف سند است . پيشوند فوق ، در صورت تعريف در NameSpace مرجع ، می تواند هر چيز ديگری را نيز شامل شود . همچنين اگر NameSpace مربوطه بصورت پيش فرض مشخص گردد ، می توان آن را حذف نمود. پيشنهاد می گردد بمنظور افزايش خوانائی سند و همچنين جلوگيری از مشکلات آتی خصوصا" زمانی که در توصيف مربوطه از توصيف ديگری استفاده ميگردد، ( Import) حتما" از پيشوند فوق ، استفاده گردد .

عناصر (Elements)

المان ها ، مهمترين بخش در يک سند XSD می باشند . جهت معرفی هر المان می بايست خصلت های زير تعريف گردند .
• Name : خصلت اجباری فوق ، نام عنصر مورد نظر را مشخص می نمايد .
• Type : خصلت فوق ، نوع داده (Data Type) عنصر مورد نظر را مشخص و می تواند ساده نظير String و يا از انواع داده مرکب باشد .
• MinOccurs : خصلت فوق،اختياری بودن يا اجباری بودن عنصرمورد نظر را مشخص می نمايد. اين خصلت اجباری نبوده و در صورت عدم مقدار دهی ، بصورت پيش فرض عدد يک برای آن در نظر گرفته خواهد شد . جدول ذيل مقادير مختلف خصلت فوق را نشان می دهد.

توضيحات

مقدار نسبت داده شده

عنصر اختياری است

0

عنصر بايد حداقل به تعداد مشخص شده در سندوجود داشته باشد

Integer > 0

• MaxOccurs : خصلت فوق، تعداد مجاز عنصر در سند را مشخص می نمايد. اين خصلت نيز اجباری نبوده و در صورت عدم مقدار دهی ،بصورت پيش فرض عدد يک برای آن در نظر گرفته خواهد شد . جدول ذيل مقادير مختلف خصلت فوق را نشان می دهد.

توضيحات

مقدار نسبت داده شده

عنصر فقط می تواند به اندازه عدد مشخص شده درسند وجود داشته باشد

Integer > 0

محدوديتی در ظهور عنصر در سند وجودندارد

Unbounded

اين تگ(نشانه) زمانی استفاده می گردد، که توالی عناصر در سند برای ما اهميت داشته باشد. از نشانه فوق، فقط در تعريف عناصر مرکب (عناصری که بيش از يک جزء داشته باشند) ميتوان استفاده نمود ، در چنين حالتی محل قرارگيری آن می بايست قبل از تعريف اجزاء مربوطه باشد .
با توجه به توضيحات فوق و مشاهده مجدد سند توصيفی نمونه، آناليز سند XML مربوطه به شرح ذيل خواهد بود .

توصيف سند XMLبا استفاده از متد 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 که يا اصلا" در سند وجود ندارد و يا به هر تعداد ممکن است وجود داشته باشد چراکه MinOccurs آن برابر صفر است و MaxOccurs آن برابر Unbounded .
• عنصر Student ، شامل دو زير عنصر به نامهای ID و GPA و از نوع String بوده و هرکدام فقط ميتوانند يک بار در سند ظاهر شوند چرا که MinOccurs و MaxOccurs آنها برابر يک است (در مثال فوق ،در صورت حذف خصلت های MinOccurs و MaxOccurs مربوط به توصيف عناصر ID و GPA ،هيچ تغييری در ماهيت توصيف ايجاد نمی شود، چرا که مقادير پيش فرض آنها برابر يک است ).
• عناصر ID و GPA در سند بايد به صورت پشت سرهم بيايند چرا که در توصيف سند از نشانه Sequence استفاده شده است .




نظرات کاربران
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط