تبلیغات
آموزشASP.NET - XSD چیست ؟( بخش پنجم)
 
فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 
دوشنبه 23 اسفند 1389 :: نویسنده : ارش کاکاوند
آنچه تاکنون گفته شده است :
بخش اول :  مقاهیم و جایگاه نکنولوژی XSD
بخش دوم :  گرامر XSD 
بخش سوم :انواع داده ( ساده ، مرکب )
بخش چهارم : بررسی Attribute
در این بخش به بررسی نحوه تشریح یک عنصر در سند XSD  خواهیم پرداخت .
دو راه متفاوت جهت تشریح عناصر یک سند XML با استفاده از متد XSD وجود دارد:
  • روش اول : در این روش ، زیر مجموعه های یک عنصر و خصلت های آن در داخل یک بلاک <COMPLEXTYPE> و بعد از تعریف عنصر اصلی مستقر و  تشریح می گردند.روش  فوق ، توصیف داخلی یا Nested نامیده می شود .

  • روش دوم : در این روش ، توصیف عناصر زیر مجموعه در داخل بدنه اصلی Schema ارائه گردیده و سپس در داخل بلاک <Complextype>  به عناصر مربوطه مراجعه خواهد شد. روش فوق ، توصیف عمومی یا Global نامیده می شود.

~

انتخاب هر یک از روش های فوق در توصیف عناصر ، بستگی به ماهیت خود عنصر و دیدگاه طراح دارد . بعبارت دیگر اگر تعریف یک عنصر با نوع داده ساده حالت انحصاری داشته باشد و در سایر عناصر سند جاری و یا عناصر اسناد دیگر قصد استفاده از آنان وجود نداشته باشد ، مناسب است از روش اول بمنظور تشریح عنصر استفاده گردد. در صورت عدم تحقق شرایط فوق ، مناسب است از روش دوم استفاده گردد. در واقع روش دوم، امکان استفاده مجدد از  توصیف انجام شده را فراهم می نماید.  مثال زیر نحوه تشریح یک عنصر در سند 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:Element Name="ID"      Type="XSD:String" MinOccurs="1" MaxOccurs="1"/>
                    <XSD:Element Name="GPA"  Type="XSD:String" MinOccurs="1" MaxOccurs="1"/>
                </XSD:ComplexType>
            </XSD:Element>
      </XSD:Schema>

در مثال فوق،عنصر Student به عنوان یکی از زیر مجموعه های عنصر ریشه یا همان Schema توصیف و لذا به عنوان یک تعریف عمومی مطرح و  می توان ازآن  در هر محل  دیگر سند جاری و یا حتی اسناد دیگر استفاده نمود . اما عناصر ID و GPA به صورت عناصر زیر مجموعه عنصر Student و آنهم در داخل آن (Nested) تشریح گردیده اند، لذا توصیف این عناصر صرفا" در عنصر Student معتبر بوده و در هیچ محل دیگر سند جاری و یا اسناد دیگر، قابل استفاده نخواهند بود . فرض کنید در ساختار سند فوق ،عنصر دیگری با نام Teacher ، وجود داشته باشد که دارای  دو زیر عنصر ID و GPA می باشد. با توجه به فرضیات فوق ، مناسب است از روش دوم استفاده و تعاریف مربوط به عناصر ID و GPA را در داخل عنصر ریشه قرار دهیم . بدین ترتیب ، قادر خواهیم بود از تعاریف دو عنصر فوق در عناصر Student و Teacher بصورت  یکسان استفاده نمائیم . به مثال ذیل توجه کنید :

مثال : توصیف یک سند و ضرورت استفاده از تعریف عمومی

<?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:Element Ref="ID"      MinOccurs="1" MaxOccurs="1"/>
                    <XSD:Element Ref="GPA"  MinOccurs="1" MaxOccurs="1"/>
                </XSD:ComplexType>
            </XSD:Element>
          <XSD:Element Name="Teacher" Minoccurs="0" MaxOccurs="Unbounded
">
               <XSD:ComplexType>
                    <XSD:Element Ref="ID"      MinOccurs="1" MaxOccurs="1"/>
                    <XSD:Element Ref="GPA"  MinOccurs="1" MaxOccurs="1"/>
                </XSD:ComplexType>
            </XSD:Element>
      <XSD:Element Name="ID"     Type="XSD:String"/>
      <XSD:Element Name="GPA" Type="XSD:String"/>
      </XSD:Schema>

در مثال فوق ، از خصلت Ref در مقابل Name استفاده شده است .در صورت نیاز به هر نوع تغییردر توصیف عناصر ID وGPA کافی است تغییر مورد نظر را صرفا" در یک محل ( محلی که توصیف آنان انجام شده است ) اعمال نمود . بدین ترتیب ، تمام سند  و در هر مکانی که از عناصر فوق استفاده شده است ، متاثر از تغییر ایجاد شده بصورت اتوماتیک می گردد .
روش های فوق ، در خصوص انواع داده ساده (Simpletype) نیز صادق است . همانگونه که در بخش سوم این مقاله اشاره گردید ،  تعریف یک عنصر ساده (Simpletype) را  میتوان بصورت داخلی (Nested) و یا بصورت زیر مجموعه ای از عنصر ریشه (Schema) ،  انجام داد. در حالت دوم ، امکان استفاده مجدد از  تعریف انجام شده وجود  داشته و می توان از آن در هر مکانی از توصیف جاری و یا حتی توصیفهای دیگر استفاده نمود. مثال ارائه شده در بخش سوم این مقاله ، نحوه اعمال محدودیت بر روی یک  نوع داده استاندارد نظیر  String و ایجاد نوع داده جدیدی با نام StudentGpa  را نشان می دهد . مثال فوق ، در این راستا می تواند مفید واقع شود .

دسترسی به سایر توصیف ها
همانگونه که اشاره گردید، عناصر و انواع داده ئی که بعنوان عنصر زیر مجموعه ریشه Schema در یک توصیف  قرار می گیرند ، امکان استفاده مجدد از آنان در سایر توصیف ها وجود خواهد داشت . بدین منظور و در اولین مرحله می بایست از  Import  و یا Include استفاده گردد مثال زیر ، نحوه استفاده از Include را نشان می دهد .

مثال : نحوه و جایگاه استفاده از Include

<?XML Version = "1.0"?>
<XSD:Schema Xmlns:XSD="http://www.w3.org/2001/xmlschema"
                          TargetNameSpace="URI goes here">
<XSD:Include Schemalocation="XSDfilename goes here"/>
     .
     .
     .
</XSD:Schema>

از گرامر فوق ، زمانی استفاده می شود که توصیف جاری و یا بعبارت دیگر Targetnamespace و توصیفی که می خواهیم از عناصر و یا انواع داده آن استفاده نمائیم ، در یک موقعیت فیزیکی  و یا Location قرار داشته باشند . به مثال ذیل توجه فرمائید :

مثال : نحوه استفاده از Include

<?XML Version = "1.0"?>
<XSD:Schema Xmlns:XSD="http://www.w3.org/2001/xmlschema"
                          TargetNameSpace="http://www.srco.ir/students">
<XSD:Include Schemalocation="StudentGpa1.xsd"/>
    <XSD:Element Name="teacher"  Minoccurs="0"  MaxOccurs="Unbounded">
       <XSD:ComplexType>
          <XSD:Sequence>
               <XSD:Element Ref = "StudentGPA" Minoccurs="1"  MaxOccurs="1" />
               <XSD:Element Name="University" Type="XSD:String" />
          </XSD:Sequence>
       </XSD:Complextype>
    </XSD:Element>
</XSD:Schema>

در مثال فوق ، موقعیت فیزیکی توصیف جاری و توصیفی که می خواهیم از آن استفاده نمائیم (StudentGpa1.xsd) یکسان است . در تشریح عنصر Teacher ، از تعریف StudentGpa که در سند StudentGpa1.xsd توصیف شده است، استفاده گردیده است .
در صورتیکه موقعیت فیزیکی سند جاری و یا Targetnamespace و سندی که می خواهیم از تعاریف آن استفاده نمائیم یکسان نباشد ، می بایست از گرامر ذیل استفاده گردد :

مثال : نحوه و جایگاه استفاده از Import

<?XML Version = "1.0"?>
<XSD:Schema Xmlns:XSD="http://www.w3.org/2001/xmlschema"
                          TargetNameSpace="URI goes here">
<XSD:Import Namespace="URI goes here" 
                         Schemalocation = "XSD filename goes here"/>
     .
     .
     .
</XSD:Schema>

فرض کنید در مثال قبل ، موقعیت فیزیکی سند جاری و یا Targetnamespace و سندی که تعریف studentgpa در آن توصیف شده است یکسان نباشد ، در چنین مواردی می توان از Import استفاده و توصیف سند مورد نظر را بصورت زیر انجام داد :

مثال : نحوه استفاده از Import

<?XML Version = "1.0"?>
<XSD:Schema Xmlns:XSD="http://www.w3.org/2001/xmlschema"
                          TargetNameSpace="http://www.srco.ir/Teachers">
<XSD:Import Namespace = "http://www.srco.ir/students"
                         Schemalocation="StudentGpa1.xsd"/>
    <XSD:Element Name="teacher"  Minoccurs="0"  MaxOccurs="Unbounded">
       <XSD:ComplexType>
          <XSD:Sequence>
               <XSD:Element Name = "TeacherGPA" Type = "StudentGpa1:StudentGpa"
                                         Minoccurs="1"  MaxOccurs="1" />
               <XSD:Element Name="University" Type="XSD:String" />
          </XSD:Sequence>
       </XSD:Complextype>
    </XSD:Element>
</XSD:Schema>

همانگونه که مشاهده می گردد ، موقعیت فیزیکی  سند جاری  و سندی که از آن استفاده شده است ، یکسان نمی باشد (به نحوه استفاده از تعریف عنصر studentGpa توجه نمائید ) .
در بخش ششم این مقاله ، به بررسی انواع داده در XSD  و نحوه مستند سازی اسناد مربوطه ، خواهیم پرداخت .





نوع مطلب :
برچسب ها :
لینک های مرتبط :


شنبه 25 شهریور 1396 11:11 ب.ظ
Terrific post however I was wanting to know if you could write a litte more on this topic?

I'd be very grateful if you could elaborate a little bit further.
Kudos!
چهارشنبه 1 شهریور 1396 02:26 ب.ظ
It's actually a nice and useful piece of information. I am glad that you simply
shared this helpful info with us. Please stay us informed like
this. Thank you for sharing.
دوشنبه 25 اردیبهشت 1396 01:14 ب.ظ
You actually make it seem so easy along with your presentation however I
find this topic to be actually something
that I think I would by no means understand. It sort of feels too complicated and very extensive for me.
I'm taking a look forward on your subsequent
post, I'll attempt to get the cling of it!
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


درباره وبلاگ

سلام من آرش کاکاوند دانشجوی رشته کامپیوتر هستم و ورود شما رابه دنیای aspخوش امدمیگم.حتما نظر بدین تا من کارم رو بهتر ادامه بدم

مدیر وبلاگ : ارش کاکاوند
مطالب اخیر
نویسندگان
صفحات جانبی
نظرسنجی
شما کدام یک از برنامه های زیر را برای طراحی وب انتخاب می کنید؟








جستجو

آمار وبلاگ
کل بازدید :
بازدید امروز :
بازدید دیروز :
بازدید این ماه :
بازدید ماه قبل :
تعداد نویسندگان :
تعداد کل پست ها :
آخرین بازدید :
آخرین بروز رسانی :