جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
XSD چيست ؟( بخش پنجم)
-(76 Body) 
XSD چيست ؟( بخش پنجم)
Visitor 1443
Category: کامپيوتر
در اين بخش به بررسي نحوه تشريح يک عنصر در سند 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  و نحوه مستند سازي اسناد مربوطه ، خواهيم پرداخت .

برگرفته از سايت سخا روش

Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image