ذخیره تغییرات تنظیمات پیش فرض بخشهای مورد علاقه خود را جهت نمایش در این صفحه انتخاب نمائید:

چهارشنبه سوم خرداد 1391 خورشیدی (سال تولید ملی، حمایت از کار و سرمایه ایرانی)

دنیای مجازی
XSD چیست ؟
 1
XSD چیست ؟

چهارشنبه 19 اسفند 1388  9:45 AM




پس از عرضه 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   کنسرسیوم وب ، فعالیت خود را از فوریه سال ۱۹۹۹ آغاز و پس از دو سال در ۲۰۰۱  موفق به طراحی زبان توصیفی شدند . تکنولوژی فوق با نام XML Schema Definition و یا XSD   معرفی گردید . در زمانیکه گروه فوق ، سرگرم طراحی زبان توصیفی خود بودند، راهکارهای متفاوتی در این خصوص توسط سایر شرکت ها ارائه گردید . مثلا” شرکت ماکروسافت تکنولوژی XDR را  عرضه نمود . تکنولوژی  استاندارد شده  کنسرسیوم وب ، در مدت زمان کوتاهی پس از عرضه ، بعنوان گزینه ای مناسب برای تشریح ساختار داده ها ی موجود در یک سند XML ، مورد توجه عموم متقاضیان  قرار گرفت .

ویژگی های مهم XSD

  • فرمت آن همانند یک سند XML است. بنابراین ضرورتی به فراگیری گرامر جدیدی  برای ایجاد XSD   نخواهد بود  . بدین ترتیب می توان از  تمام ابزارهای موجود در رابطه با سندهای  XML ، در ارتباط با XSD نیز استفاده کرد .
  • ضمن حمایت از انواع داده ( Data Type ) تعریف شده در اکثر زبانهای برنامه سازی، امکان تعریف نوع  داده مورد نظر استفاده کننده  را  نیز فراهم می نماید . بدین ترتیب  می توان محتویات  سند را محدود به نوع داده مورد استفاده در نرم افزار خود نمود و یا حتی از خصلت فیلدهای موجود در بانک اطلاعاتی کپی برداری کرد .
  • امکان  تعریف کلید یکتا ( Key ) در عناصر اطلاعاتی را بمنظور عملیات یکتا سازی( Uniqe )  فراهم می نماید .
  • از خصلت توارث مدل شئ گراء ، بخوبی تبعیت می نماید . بدین ترتیب  یک توصیف می تواند از توصیف دیگر به ارث رسیده باشد .ویژگی فوق ، توانائی تولید توصیف هائی با قابلیت استفاده مجدد را میسر می سازد .
  • امکان تعریف عناصر با  ارزش NULL   ، و یا فاقد ارزش ، در XSD وجود دارد .
  • از Namespace  بخوبی حمایت می نماید . بدین ترتیب امکان توصیف اسناد با استفاده از  Namespace مختلف فراهم می گردد . این ویژگی در راستای تولید توصیف هائی با قابلیت استفاده مجدد است .
  • اسناد XSD ، نیز نظیر سندهای  XML ، توسط پارسر اعتبار سنجی شده و در صورت وجود خطا ء  گزارشات لازم ارائه می گردد .

در بخش دوم ،به بررسی  گرامر XSD   خواهیم پرداخت .

 

tala2207






تاریخ عضویت: مهر 1389 
سطح کاربری : کاربر جدید
تعداد پست ها: -1
محل سکونت :
samsam   hojatpoor   
تشکرهای این پست

بررسی گرامر XSD

چهارشنبه 19 اسفند 1388  9:46 AM




گرامر 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 : خصلت  فوق،اختیاری بودن یا اجباری بودن عنصرمورد نظر  را مشخص می نماید. این خصلت اجباری نبوده و در صورت عدم مقدار دهی ، بصورت پیش فرض عدد یک برای آن در نظر گرفته خواهد شد . جدول ذیل مقادیر مختلف خصلت فوق را نشان می دهد.

توضیحات

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

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

۰

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

Integer > 0

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

توضیحات

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

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

Integer > 0

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

Unbounded

تگ Sequence
این تگ(نشانه) زمانی استفاده می گردد، که توالی عناصر در سند برای ما اهمیت داشته باشد. از نشانه فوق، فقط در تعریف عناصر مرکب (عناصری که بیش از یک جزء داشته باشند) میتوان استفاده نمود ، در چنین حالتی محل قرارگیری آن  می بایست قبل از تعریف اجزاء مربوطه باشد .
با توجه به توضیحات فوق و مشاهده مجدد سند توصیفی نمونه، آنالیز سند
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 استفاده شده است .

در بخش سوم این مقاله، به بررسی نوع های ساده ( SimpleType ) و نوع های مرکب ( ComplexType )  در XSD   خواهیم پرداخت .

 

tala2207






تاریخ عضویت: مهر 1389 
سطح کاربری : کاربر جدید
تعداد پست ها: -1
محل سکونت :
hojatpoor   
تشکرهای این پست

بررسی انواع داده ساده و مرکب در XSD

چهارشنبه 19 اسفند 1388  9:47 AM




انواع داده ( ساده ، مرکب )
جهت توصیف داده ها در یک سند XML با استفاده از تکنولوژی XSD ، از دو نوع  ساده و مرکب استفاده می گردد که بمنظور بکارگیری آنان در گرامر XSD   ، نشانه هائی با همین عنوان یعنی < SimpleType > و < ComplexType >  در نظر گرفته شده است . قبل از تشریح هر یک از موارد فوق ، لازم است جایگاه استفاده از هر یک بدرستی مشخص گردد .

نوع داده مرکب < ComplexType > زمانی استفاده میگردد که :

  • عنصر داده  دارای عناصر زیر مجموعه باشد  و/  یا .
  • عنصر داده دارای خصائص ( Attribute ) باشد .

نوع داده ساده < SimpleType > زمانی استفاده میگردد که :

  • تصمیم داریم با اعمال شرایط و یا محدودیتهائی بر روی یک نوع داده استاندارد (مثل String ) یک نوع داده جدید ( User Define Data Type ) ایجاد نمائیم  و / یا
  • عنصر مورد نظر دارای عناصر زیر مجموعه و یا خصائص ( Attribute ) نمی باشد.

بمنظور آشنائی با برخی از مفاهیم اولیه در این خصوص ، مجددا” به مثال ارائه شده در بخش دوم مقاله ، مراجعه می نمائیم .

یک سند 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 دارای دو زیر عنصر ID و GPA است. بنابراین می بایست عنصر Student بصورت مرکب توصیف گردد. بدین منظور لازم است پس از توصیف عنصر مربوطه و پیش از توصیف عناصر زیر مجموعه آن از نشانه < ComplexType > استفاده شده  و در ادامه عناصر زیر مجموعه را درون بلاکی  از این نشانه قرار دهیم.( خطوط چهارم و نهم )
فرض کنید ، می خواهیم بر روی عنصر
GPA که از نوع استاندارد String است ، محدودیتی خاص را اعمال نمائیم،  بطوریکه طول آن چهار حرف  و فرمت آن به صورت ( Digit.DigitDigit ) باشد .بمنظور تامین خواسته فوق ، لازم است یک نوع داده جدید با لحاظ نمودن محدودیت اشاره شده ، بر روی نوع داده استاندارد String تعریف گردد . با توجه به ضرورت تعریف یک نوع داده جدید ، می بایست از نشانه < SimpleType > استفاده گردد . تشریح نوع داده جدید بر اساس تکنولوژی XSD ، بصورت زیر خواهد بود. ( در مقالات بعد، بصورت مفصل تر به بررسی اعمال  محدودیت ، ارزش ها و الگوهای مختلف ، پرداخته خواهد شد ).

تعریف یک نوع داده ساده با اعمال محدودیت

<XSD:simpletype  name=”studentgpa”  minoccurs=”1″   maxoccurs=”1″>
<XSD:restriction  base=”XSD:string”>
<XSD:length  value=”4″/>
<XSD:pattern value=”\d{1}.\d{2}”/>
</XSD:restriction>
</XSD:simpletype>

با توجه به تعریف نوع ساده مورد نظر و لحاظ نمودن محدودیت های مربوطه ، سند XSD مثال قبل به شکل ذیل خواهد بود :

یک سند 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=”StudentGpa”/>
</XSD:Sequence>
</XSD:ComplexType>
</XSD:Element>
<XSD:simpletype  name=”studentgpa”  minoccurs=”1″   maxoccurs=”1″>
<XSD:restriction  base=”XSD:string”>
<XSD:length  value=”4″/>
<XSD:pattern value=”\d{1}.\d{2}”/>
</XSD:restriction>
</XSD:simpletype> </XSD:Schema>

سند فوق، به شکل زیر نیز می تواند ارائه گردد :

یک سند 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=”string”  minoccurs=”1″ maxoccurs=”1″/>
<XSD:simpletype >
<XSD:restriction  base=”XSD:string”>
<XSD:length  value=”4″/>
<XSD:pattern value=”\d{1}.\d{2}”/>
</XSD:restriction>
</XSD:simpletype> </XSD:Sequence>
</XSD:ComplexType>
</XSD:Element>
</XSD:Schema>

تفاوت موجود در ارتباط با هر یک از روش های ارائه شده به قابلیـت استفاده مجدد از نوع تعریف شده برمی گردد. در حالت اول،  نوع داده جدید studentgpa را میتوان در هر محلی از سند (در تشریح هر یک از عناصر دیگر ) استفاده کرد (قابلیت استفاده مجدد). در حالت دوم، نوع تعریف شده صرفا” بر روی عنصر GPA اعمال و امکان استفاده مجدد از وجود نخواهد داشت (غیر قابل استفاده مجدد) .

جمع بندی
بمنظور تشریح عناصر ( نوع ساده و یا نوع مرکب ) ، از سه روش متفاوت استفاده می گردد :

  • روش اول : میتوان در یک خط نام عنصر و نوع آن و حداقل و حداکثر حضور آن در سند را تعیین نمود .در واقع روش فوق ، علیرغم اینکه از نشانه < Simpletype > استفاده  نشده است ، یک عنصر ساده را تشریح می نماید.چرا که نوع داده این نوع عناصر از انواع داده استاندارد بوده و در انتهای خط نیز توصیف با علامت ” / ” خاتمه یافته است . توصیف عناصر ID و GPA در مثال ابتدای مقاله از مصادیق این روش توصیف عناصر است .

<XSD:element name=”name”  Type=”type”  minoccurs=”int”  maxoccurs=”int”/>

  • روش دوم : در این روش نام عنصر، حداقل و حداکثر حضور آن در سند به عنوان عنصر مادر تشریح شده و سپس عناصر زیر مجموعه آن در داخل یک بلاک < Complextype > تعیین میگردند . این نوع توصیف در  خصوص انواع داده مرکب یعنی عناصری که دارای زیر مجموعه و یا خصائص ( attribute ) میباشند، استفاده می گردد . توصیف عنصر Student در مثال ابتدای مقاله از مصادیق این روش است .

تعریف یک نوع مرکب

<XSD:Element Name=”name” Minoccurs=”int” MaxOccurs=”int”>
<XSD:ComplexType>
.
.
.
</XSD:ComplexType>
</XSD:Element>

  • روش سوم : در این روش نام عنصر ، حداقل و حداکثر حضور آن در سند توصیف و سپس محدودیت اعمال شده بر روی نوع داده استاندارد در یک بلوک < Simpletype > جهت تعریف یک نوع داده جدید،  توصیف میگردد. در واقع روش فوق، نوع دیگر توصیف انواع داده ساده Simpletype   بوده  که با اعمال محدودیت بر روی یکی از انواع داده استاندارد ایجاد شده است . تعریف studentgpa در مثال قبل از مصادیق بکارگیری این روش در توصیف عناصر است.

تعریف یک نوع ساده

<XSD:element  name = “name”  minoccurs=”int”  maxoccurs=”int” />
<XSD:simpletype>
<XSD:restriction>
.
.
.
</XSD:restriction>
</XSD:simpletype>
</XSD:element>

توانائی ایجاد انواع داده جدید با اعمال محدودیت بر روی انواع داده استاندارد از ویژگیهای بسیار مهم و توانمند تکنولوژی XSD میباشد .
در بخش چهارم این مقاله به بررسی خصلت ها ، خواهیم پرداخت .

 

tala2207






تاریخ عضویت: مهر 1389 
سطح کاربری : کاربر جدید
تعداد پست ها: -1
محل سکونت :
hojatpoor   
تشکرهای این پست

نحوه تعریف Attribute در XSD

چهارشنبه 19 اسفند 1388  9:48 AM




در تشریح ساختار داده های یک موجودیت ( Entity )  ، برخی مواقع  به اجزاء  و یا المانهائی برخورد خواهیم کرد  که ارتباط تنگاتنگی با موجودیت داشته و بنوعی بعنوان یک خصلت یا ویژگی موجودیت مورد بررسی ، شناخته می گردند.نحوه حضور این اجزاء در ساختمان داده موجودیت از قبیل مقادیر پیش فرض،مقادیر ثابت یا خصلت تغییر ناپذیری از ویژگی های مهم این اجزاء محسوب می گردند . بعنوان مثال فرض کنید در یک سازمان بزرگ برای تشکیل پرونده پرسنل، از یک  فیلد اطلاعاتی با  نام ملیت  استفاده می شود.بیش از ۹۸ درصد پرسنل شرکت مزبور دارای ملیت ایرانی بوده  و تنها ممکن است یک  و یا دو درصد از پرسنل ، ملیت غیر ایرانی داشته باشند.با توجه به وضعیت فوق ، می توان  فیلد ملیت  را به صورت پیش فرض مقدار دهی  و از تکرار آن در سند XML مربوطه جلوگیری  و صرفا” ملیت افراد غیر ایرانی  را در سند مشخص نمود. در چنین مواردی علاوه بر حفظ یکپارچگی اطلاعات به مقدار زیادی در حجم اطلاعات سند XML   نیز صرفه جوئی خواهد شد . در تکنولوژی  XSD برای معرفی اینگونه اجزاء ، نشانه ای تحت عنوان < Attribute > پیش بینی  شده است . گرامر استفاده از attribute بصورت زیر است :

گرامر استفاده از attribute

<XSD:attribute Name=”name” Type=”simple type”  Use=”how used”  Value=”value”/>

Name : نام Attribute را مشخص  و یک خصلت اجباری است .
Type : نوع داده attribute را مشخص و جزء خصلت های اجباری است ( نوع داده حتما” باید از انواع داده ساده ( simple type ) باشد).
Use : نحوه استفاده از attribute را مشخص و می تواند مقادیر زیر  را داشته باشد :

توضیحات

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

خصلت اجباری است

Required

خصلت دارای مقدار پیش فرض است

Default

خصلت دارای مقدار ثابت و غیر قابل تغییر است

Fixed

خصلت اختیاری است

Optional

خصلت محافظت شده است

Prohibited

Value : اگر ویژگی Use دارای ارزش Default و یا Fixed باشد آنگاه ارزش مورد نظر می بایست مشخص و در غیر اینصورت نیازی به استفاده از ویژگی فوق ، نخواهد بود.

جایگاه فیزیکی و نحوه تعریف attribute در یک سند XSD
همانگونه که در بخش سوم این مقاله اشاره گردید ،  عناصر مرکب ( ComplexType ) عناصری هستند که دارا عناصر زیر مجموعه و یا attribute باشند . بنابراین جایگاه فیزیکی attribute در داخل یک بلاک Complextype است (انتهای بلاک و پس از توصیف کلیه عناصر زیر مجموعه) . بمنظور بررسی نحوه استفاده از attribute ، مثال ارائه شده در بخش سوم این مقاله را مجددا” بررسی می نمائیم .در مثال فوق ، قصد داریم عنصر ID را بصورت یک attribute تعریف  نمائیم . در چنین حالتی توصیف سند بصورت زیر خواهد بود :

نحوه استفاده از Attribute در یک سند 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=”GPA” Type=”XSD:String” MinOccurs=”1″ MaxOccurs=”1″/>
<XSD:Attribute Name=”ID”  Type=”XSD:String”  Use=”Required”/>
</XSD:ComplexType>
</XSD:Element>
</XSD:Schema>

روش های توصیف attribute
جهت توصیف یک attribute از دو روش متفاوت استفاده می گردد . اگر نوع داده attribute مورد نظر از انواع داده استاندارد و یا از پیش تعریف شده باشد ، آنگاه طبق گرامر ارائه شده ، می توان  توصیف یک attribute را  بصورت زیر انجام داد :

روش اول : توصیف یک Attribute

<XSD:attribute Name=”name” Type=”simple type”  Use=”how used”  Value=”value”/>

اما اگر بخواهیم نوع داده attribute را با اعمال محدودیت بر روی  یک نوع داده استاندارد تشریح نمائیم ، می توان از گرامر زیر استفاده کرد :

روش دوم : توصیف یک Attribute

<XSD:attribute Name=”name”   Use=”how used”  Value=”value” >
<XSD:simpletype>
<XSD:restriction  Base=”simple type”>
<XSD:facet  Value=”value” />
</XSD:restriction>
</XSD:simpletype>
</XSD:attribute>

facet ، حالات و ارزش های متفاوت آن در مقالات بعد به طور مفصل بررسی خواهد شد. جهت تشریح بهتر روش دوم،  به بررسی یک مثال  دیگر می پردازیم . فرض کنید که در مثال قبل ، قصد داریم  بر روی  نوع داده attribute ID ، محدودیتی خاصی را اعمال نمائیم :”طول رشته پنج و کاراکترهای آن عدد باشند ” ، در چنین حالتی توصیف سند بصورت زیر خواهد بود :

مثال : توصیف یک سند با اعمال محدودیـت در رابطه با Attribute

<?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=”GPA” Type=”XSD:String” MinOccurs=”1″ MaxOccurs=”1″/>
<XSD:Attribute Name=”ID”    Use=”Required”>
<XSD:simpletype>
<XSD:restriction  Base=”XSD:String”>
<XSD:Length=”5″ />
<XSD:Pattern = “\d{5}” />
</XSD:restriction>
</XSD:simpletype>
</XSD:attribute>
</XSD:ComplexType>
</XSD:Element>
</XSD:Schema>

همانگونه که مشاهده می گردد ( با اندکی دقت ! ) ، توصیف های ارائه شده برای خصلت ID داخلی بوده و امکان استفاده مجدد از آن وجود نخواهد داشت . در صورت نیاز به استفاده مجدد از توصیف یک Attribute در مکان هائی دیگر از سند ، می بایست توصیف Attribute مورد نظر در خارج از محدوده داخلی قرار گیرد .
در بخش پنجم این مقاله به بررسی حالات متفاوت ساختار ، خواهیم پرداخت .

 

tala2207






تاریخ عضویت: مهر 1389 
سطح کاربری : کاربر جدید
تعداد پست ها: -1
محل سکونت :

نحوه تشریح یک عنصر در سند XSD

چهارشنبه 19 اسفند 1388  9:49 AM




در این بخش به بررسی نحوه تشریح یک عنصر در سند 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   و نحوه مستند سازی اسناد مربوطه ، خواهیم پرداخت .

 

tala2207






تاریخ عضویت: مهر 1389 
سطح کاربری : کاربر جدید
تعداد پست ها: -1
محل سکونت :

بررسی انواع داده در XSD

چهارشنبه 19 اسفند 1388  9:50 AM




در این بخش به بررسی انواع داده در XSD   ، خواهیم پرداخت .
تعیین نوع داده  یکی از ویژگی های مهم
XSD بوده  که با استفاده از آن میتوان عناصر و یا خصلت ها را با فرمت صحیح و دلخواه اعتبار سنجی نمود . تکنولوژی  XSD ، دامنه گسترده و وسیعی از  انواع داده را حمایت و در عین حال  به کاربر امکان تعریف نوع داده دلخواه را نیز خواهد داد .

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

تعریف یک نوع داده در XSD

.
.
.
<XSD:Element Name=”ID”      Type=”XSD:String” MinOccurs=”1″ MaxOccurs=”1″/>
.
.
.

جدول زیر ، انواع داده مهم حمایت شده در XSD   را نشان می دهد .

انواع داده حمایت شده در XSD

نوع داده

توضیحات و مثال

anyuri

Uniform Resource Locator
Example : http://www.srco.ir

base64Binary

MIME STYLE base64 encoded binary data

hexBinary

Hexadecimal encoded binary data

boolean

TRUE(1) Or FALSE(0)

byte

Numbers between -128 To 127

dateTime

Date in a subset of  the ISO8601 format
Time and Timezone are optional
Example: 2003-04-15T10:40:15.000-05:00

date

Date in a subset of the ISO8601 format
Example : 2003-04-15

decimal

Positive or negative arbitrary precision decimal value
Examples: -5.34,0,5.34,5000.00

double

double precision 64-bit floating point

duration

Duration 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 : P1Y2M

float

Single precision 32-bit floating point

gDay

Day in Gregorian format
Example: –31 every 31th day,regardless of month

gMonth

Month in Gregorian format
Example: –06– every may

gMonthDay

Month and day in Gregorian format
Example: –07-31 every july 31th

gYear

Year in Gregorian format
Example : 2000

gYearMonth

Year and month in Gregorian format
Example:2000-02

Int

Integer.Sign is optional
Range: -2147483648 to 2147483647

Integer

The standard mathematical concept of integer numbers
Range: An infinite set of negative or positive numbers

Language

Any valid XML language value as defined by RFC 1766
Example: en-US

Long

Integer
Range: -9223372036854775808 to
9223372036854775807

Name

XML 1.0 name type

NCName

XML namespace ncname (An XML name without the prefix and colon)

negativeInteger

Range : Negative infinity to -1

nonNegativeInteger

Range : 0 to infinity

positiveInteger

Range : 1 to infinity

nonPositiveInteger

Range : Negative infinity to 0

normalizedString

String of character data. Newline,tab and carriage-return characters are converted to spaces before schema processing.

Short

Range : -32768 to 32767

String

String of character data .(characters that match CHAR from XML 1.0)

Time

Time 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 .

Token

string 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 .

unsignedByte

Unsigned byte .
Range : 0 to 255

unsignedInt

Unsigned integer .
Range : 0 to 4294967295

unsignedlong

Unsigned long integer .
Range : 0 to 18446744073709551615

unsignedShort

Unsigned short integer.
Range : 0 to 65535

QName

XML namespace QName.

NOTATION

XML 1.0 NOTATION attribute type. to retain compatibility between XSD and XML DTD 1.0s. these should only be used with attributes.

NMTOKEN

Name 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.

NMTOKENS

List of name tokens separated by whitespace. to retain compatibility between XSD and XML DTD 1.0s. these should only be used with attributes.

ID

The ID value must be unique throughtout all elements in the XML document. This attribute is refrenced by other attributes such as idref and idrefs. to retain compatibility between XSD and XML DTD 1.0s. these should only be used with attributes.

IDREF

References the value in an ID attribute within the XML document. to retain compatibility between XSD and XML DTD 1.0s. these should only be used with attributes.

IDREFS

References multiple ID type values separated by whitespace. to retain compatibility between XSD and XML DTD 1.0s. these should only be used with attributes.

ENTITY

XML 1.0 ENTITY attribute type. to retain compatibility between XSD and XML DTD 1.0s. these should only be used with attributes.

ENTITIES

XML 1.0 ENTITIES attribute type. ENTITIES contain a set of ENTITY values.  to retain compatibility between XSD and XML DTD 1.0s. these should only be used with attributes.


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

پارمترهای محدود سازی ( Facets )
خلاصه سازی و یا محدود سازی بستگی مستقیم به نوع داده پایه ای دارد که میخواهیم محدود سازی را بر روی آن اعمال نمائیم . در خصوص داده هائی از نوع رشته‏ ای، پارمترهای مختلف محدود سازی به شرح ذیل می باشند :

  • enumeration
  • length
  • minlength
  • maxlength
  • pattern
  • whitespace

جدول زیر نحوه استفاده از پارامتر الگو( pattern ) و اعمال  کنترل های مختلف بمنظور تشریح  الگو را نشان می دهد :

Regular Expression

Explanation

Example(s)

\d

Digit

1,2,3, etc.

[a-z]

Lower case ASCII characters

a,b,c, etc.

[A-Z]

Upper case ASCII characters

A,B,C, etc.

*

Wildcard

A*Z=ABZ,AbnmZ,ADDFZ, etc.

?

Single placeholder

A?Z=ABZ,AbZ,ACZ, etc.

+

Inclusive of at least the specified values, but more are allowed .

A+Z=AZ,ABZ,ABCZ, etc.

(Value1|Value2)

Or

(A|Z)+Q=AQ,ZQ,ABQ,ZBQ, etc.

[abcde]

Another way to specify or , but with single character only.

[abc]=a,b, or c

[^0-9]

Any non-digit character

A,B,C,a,b,c, etc.

{integer}

The number of occurrences that there must be of the previous value .

az{2} = azz
\d{3} = 123,456,789,444, etc.
(az){2} = azaz

مثال یک : در مثال زیر نحوه استفاده از پارامتر الگو ، نشان داده شده است :

مثال  یک : نحوه استفاده از پارامتر الگو

<XSD:simpleType name=”StudentGPA”   minOccurs=”1″   maxOccurs=”1″>
<XSD:restriction   base=”XSD:string”>
<XSD:length  value=”4″ />
<XSD:pattern value=”/d{1} . /d{2}” />
</XSD:restriction>
</XSD:simpleType>

مثال دوم : در مثال زیر نحوه استفاده از پارامتر الگو ، نشان داده شده است :

مثال  دو : نحوه استفاده از پارامتر الگو

<XSD:simpleType name=”StudentGPA”   minOccurs=”1″   maxOccurs=”1″>
<XSD:restriction   base=”XSD:string”>
<XSD:enumeration Value = “2.0″ />
<XSD:enumeration Value = “2.5″ />
<XSD:enumeration Value = “3.0″ />
<XSD:enumeration Value = “3.5″ />
<XSD:enumeration Value = “4.0″ />
</XSD:restriction>
</XSD:simpleType>

نکته : در مثال دوم، ارزش های مختلفی  که یک سند برای عنصر StudentGPA می تواند داشته باشد ۲٫۰ یا ۲٫۵ یا ۳٫۰ یا ۳٫۵ یا ۴٫۰ است . اما در مثال اول طول رشته باید چهار حرف بوده و الگوی آن نیز معادل الگوی تعریف شده در pattern باشد . حال سئوال اینجا است که در محدود سازی یک نوع داده ، جایگاه واقعی استفاده از  and و یا or چگونه است ؟. جواب این سئوال پیچیده نیست ، در واقع ، در مواردیکه از خصلت های enumoration و pattern استفاده می گردد ، واقعیت or حکمفرما بوده  و  در صورت استفاده از سایر خصلت ها ، واقعیت and حکم فرما خواهد بود.

در خصوص داده های عددی ، پارامترهای محدود سازی( Facets ) به شرح ذیل می باشد :

  • enumeration
  • fractionDigits
  • maxExclusive
  • minExclusive
  • maxInclusive
  • minInclusive
  • pattern
  • totalDigits
  • whiteSpace

مثال : در مثال زیر نحوه استفاده از پارامترهای محدودسازی در خصوص داده های عددی را نشان می دهد :

مثال : نحوه استفاده از پارامترهای محدودسازی در خصوص داده های عددی

<XSD:simpleType name=”courseNumber”   minOccurs=”0″   maxOccurs=”10″>
<XSD:restriction   base=”XSD:integer”>
<XSD:minInclusive  value=”1000″ />
<XSD:maxInclusive value=”3000″ />
</XSD:restriction>
</XSD:simpleType>

در این مثال نوع داده دلخواهی جهت توصیف عنصر شماره درس ایجاد شده است که طبق آن هر دانشجو میتواند تا ۱۰ درس را ثبت نام نموده و شماره هر درس نیز بین ۱۰۰۰ تا ۳۰۰۰ باید باشد . بنابر این در صورتیکه در یک سند XML   که از توصیف فوق استفاده نموده وعنصر course دارای مقدار ۴۰۰۰ و بصورت زیر باشد،پارسر XSD خطائی مبنی بر ایجاد مشکل در نوع داده ارائه و سند اعتبار سنجی نخواهد شد .

 

tala2207






تاریخ عضویت: مهر 1389 
سطح کاربری : کاربر جدید
تعداد پست ها: -1
محل سکونت :

XSLT چیست و چگونه کار می کند؟ ( قسمت اول )

چهارشنبه 19 اسفند 1388  9:51 AM




XSLT ، از کلمات eXtensible S tylesheet L anguage : T ransformation اقتباس و زبانی برای تبدیل یک سند XML به نوع دیگر است . تکنولوژی فوق توسط کنسرسیوم وب با  هدف  اولیه  تبدیل یک سند XML به نوع دیگر، طراحی شده است . XSLT ، دارای قابلیت های بمراتب بیشتری بمنظور تبدیل یک سند XML به HTML و سایر فرمت های مبتنی بر متن است . بدین ترتیب  می توان تعریف کامل تری در رابطه با تکنولوژی فوق را بصورت زیر ارائه داد :

تعریف XSLT

XSLT ، زبانی بمنظور تبدیل ساختار یک سند XML است .

جرا سندهای XML نیازمند تبدیل می باشند ؟
XML ، روشی ساده و استاندارد بمنظور مبادله داده های ساختیافته بین برنامه های متفاوت کامپیوتر است . بخشی از موفقیت XML جهت نیل به خواسته فوق ، به نحوه نوشتن و خواندن این نوع فایل ها بر می گردد . با استفاده از یک ادیتور متنی می توان بسادگی و بسرعت اقدام به نوشتن یک سند XML ،خواندن و اعمال تغییرات در آنان نمود. فراموش نکنیم که مهمترین هدف XML ، ارتباط بین سیتستم های متفاوت نرم افزاری بوده و در این راستا  به دو نیاز  حیاتی  بخوبی جواب داده است :
تفکیک داده از نمایش ( ارائه ) . نیاز به تفکیک اطلاعات از جزئیات نمایش بر روی یک دستگاه خاص همواره مورد نظر طراحان و پیاده کنندگان بوده است . خواسته  فوق ، بموازات رشد دستگاههای مبتنی بر اینترنت به یک ضرورت حیاتی تبدیل شده است . سازمان ها و موسسات ارائه دهنده اطلاعات باارزش  ، تمایل به عرضه اطلاعات خود بر  روی مرورگرهای وب و سایر دستگاهها  نظیر تلویزیون  و یا تلفن های مبتنی بر
WAP را دارند . بدین ترتیب دامنه استفاده از اطلاعات صرفا” به مرورگرهای وب محدوده نبوده و دستگاههای متفاوت مبتنی بر تکنولوژی اینترنت را  شامل می گردد .
ارسال داده بین برنامه ها . ارسال اطلاعات از  سازمانی  به سازمان دیگر بدون در گیر شدن در جزئیات ، همواره از آرزوهای بزرگ طراحان و پیاده کنندگان سیستم های نرم افزاری بوده است .

دو خواسته فوق هیچگونه تعارضی با یکدیگر ندارند ، مثلا” یک لیست قیمت کالا را می توان بر روی صفحه ، نمایش و در همان زمان از آن بعنوان ورودی در  سایر برنامه ها استفاده کرد . یکی دیگر از مزایای اساسی  XML ، یکپارچگی بین دنیای سندها و داده ها است . بدین ترتیب می توان از یک روش خاص بمنظور عرضه ساختار داده ها ( صرفنظر از اینکه اطلاعات توسط انسان و یا ماشین استفاده می گردد) ، بهره  گرفت  .  صرفنظر از اینکه داده های XML   سرانجام توسط انسان و یا یک برنامه نرم افزاری دیگر استفاده می گردند ، به این نکته مهم می بایست اشاره گردد  که بندرت داده ها به همان صورت که دریافت می گردند،  استفاده خواهند شد. در این راستا لازم است که داده ها در ابتدا به یک فرمت دیگر تبدیل گردند .  تبدیل XML    به Html   ، متداولترین کاربرد استفاده از XSLT است . پس از تبدیل داده ها  به فرمت Html ، امکان نمایش آنها در هر مرورگری فراهم خواهد شد  . بنابراین جایگاه “تبدیل ” در رابطه با ارائه و نمایش داده ها ، به تغییر فرمت سندهای XML به سایر فرمت های متداول نظیر Html   برمی گردد . XSLT در این رابطه بخوبی پاسخگو بوده و با استفاده از قوانین موجود قادر به تبدیل نوع یک سند به نوع دیگر با توجه به نیازهای مربوطه خواهد بود .

بمنظور ارسال اطلاعات بین برنامه های متفاوت، می بایست قادر به تبدیل داده ها از مدل استفاده شده توسط یک برنامه به مدل استفاده شده توسط برنامه دیگر باشیم . بمنظور تامین اطلاعات مورد نیاز یک برنامه ،از  فرمت های متفاوت استفاده می گردد . یک فایل حاوی داده های جداشده توسط ویرگول ، یک اسکریپت SQL   ، یک پیام HTTP و  یا مجموعه ای از توابع مربوط به یک اینترفیس خاص برنامه نویسی ، نمونه هائی در این زمینه می باشند . بموازات رشد تجارت الکترونیکی مبتنی بر XML ، نقش XSLT در تبدیل داده ها بین برنامه ها ی متفاوت  ، بسیار حائز اهمیت شده است .در این راستا استانداردهای متعددی وجود دارد . مثلا”  در صنعت روزنامه نگاری از یک فرمت خاص برای مبادله اطلاعات، نسبت  به صنعت تلویزیون استفاده می گردد .در برخی حالات دیگر ممکن است ، تمایل به استخراج   یک آدرس خاص  از یک لیست ثبت سفارش و الحاق آن به  لیست صورتحساب را داشته باشیم . بهرحال ، استخراج و ترکیب داده ها از یک مجموعه اسناد XML و ایجاد اطلاعات مورد نیاز برای سایر اسناد  XML   ، یک ضرورت بوده و XSLT در این راستا ابزاری مناسب  است .

XSLT چگونه یک سند XML را تبدیل می نماید ؟
برای تبدیل یک سند XML   و ایجاد خروجی مورد نظر، دو مرحله متفاوت را می بایست دنبال نمود  :

  • اولین مرحله ، شامل یک تبدیل ساختاری است . در این حالت داده ها از ساختار استفاده شده در یک سند XML ،  به ساختاری دیگر  که تامین کننده خروجی مورد نیاز است ، تبدیل خواهند شد .
  • دومین مرحله،  ایجاد فرمت مورد نیاز است . ساختار جدید  به فرمت مورد نظر نظیر Html و یا PDF تبدیل و در خروجی نمایش داده خواهد شد .

در رابطه با دومین مرحله ، در بخش قبل موارد لازم بیان  گردید  : ساختمان داده ئی که از اولین مرحله بدست می آید، می تواند بعنوان یک HTML  ، یک فایل متن و یا یک سند XML دیگر در خروجی ارائه گردد . خروجی Html ، امکان نمایش مستقیم اطلاعات در یک مرورگر و یا تغذیه به یک برنامه پیشرفته واژه پرداز را دارا است  . خروجی مبتنی بر متن ، امکان فرمت دهی داده ها را با یک روش قابل قبول بمنظور استفاده توسط سایر برنامه ها فراهم می نماید . با تبدیل یک سند XML به نوع دیگر که خود نیز از نوع  XML  خواهد بود ، امکان استفاده مستقیم آن برای سایر برنامه هائی که قادر به دریافت داده های خود بصورت XML می باشند ، فراهم می گردد . مثلا” یک تبدیل کننده XSLT ، ممکن است میزان فروش ماهیانه را بعنوان یک سند XML اخذ و یک منحنی هیستوگرام را بصورت XML در خروجی ایجاد نماید .

در  مرحله اول ( تبدیل ) ، عملیات لازم در خصوص ایجاد خروجی با فرمت مناسب انجام خواهد شد . در مرحله فوق عملیاتی نظیر : انتخاب داده ، گردآوری  و گروه بندی داده ها ، مرتب سازی داده ها و  انجام عملیات محاسباتی ( نظیر تبدیل اینچ به سانتیمتر ) صورت می پذیرد. نحوه انجام عملیات فوق به چه صورت است ؟ قبل از عرضه XSLT ،   امکان پردازش سندهای XML ، صرفا” از طریق نوشتن یک برنامه خاص میسر بود . برنامه ها با استفاده از یک رابط برنامه نویسی ( API ) ، پارسر را فراخوانده تا امکان اخذ اطلاعات دررابطه با سند و یا انجام عملیات مورد نظر فراهم گردد . در این راستا از دو رابط برنامه نویسی استفاده می گردد : SAX)Simple API for XML )  و DOM)Document object Model ) .

رابط برنامه نویسی SAX ، یک اینترفیس مبتنی بر رویداد بوده که پارسر در رابطه با هر یک از بخش های موجود در سند ، اطلاعات  لازم را در اختیار برنامه متقاضی  قرارخواهد داد. در صورتیکه از رابط برنامه نویسی DOM استفاده گردد، پارسر از طریق ایجاد یک ساختار شبه درختی در حافظه ، امکان ارتباط با آن را پیدا می نماید . در ادامه ، با نوشتن یک برنامه خاص ( مثلا” با استفاده از زبانهای برنامه نویسی نظیر VB ، جاوا ) امکان ارتباط با درخت بوجود می آمد . در مدل فوق ، برای پردازش هر نوع سند XML ، لازم است که یک برنامه خاص و اختصاصی نوشته شده تا با دنبال نمودن مراحل مورد نظر، عملیات لازم در  رابطه با یک سند XML صورت پذیرد.

چگونه می توان از XSLT بمنظور تبدیل یک سند XML در مقابل  نوشتن برنامه های اختصاصی استفاده کرد ؟ طراحی XSLT ، مبتنی بر این واقعیت بوده است که این نوع برنامه ها بسیار مشابه هم بوده و می توان بمنظور تشریح عملکرد مربوطه ، از یک زبان تعریفی سطح بالا ( در مقابل نوشتن هر یک از برنامه ها توسط زبانهائی نظیر VB و یا جاوا)  استفاده کرد . تبدیلات انجام شده ، از مجموعه ای قوانین نشات خواهد گرفت . قوانین فوق ،نحوه ایجاد خروجی را در صورت وجود یک الگوی خاص در سند ، مشخص می نمایند . زبان فوق تعریفی بوده و تبدیل مورد نیاز تشریح می گردد ( در مقابل ارائه دنباله ای از دستورالعمل های رویه ای برای عملیات تبدیل) . XSLT ، تبدیل مورد نیاز را تشریح و در ادامه با تاکید بر نقش پردازنده XSL ، مناسبترین و کارآمدترین روش برای عملیات انتخاب می گردد .

XSLT ، همچنان بر نقش پارسرها تاکید ( پارسر سازگار با DOM و یا پارسر سازگار با SAX ) ، و از آن برای تبدیل یک سند XML به یک ساختار درختی استفاده می نماید . در حقیقت ، پردازش برروی یک سند XML توسط XSLT   ، از طریق ساختار درختی  ارائه شده  از سند ، محقق می گردد . در  DOM ، هر آیتم در یک سند XML ( المان ها  ،خصلت ها  ، دستورالعمل های پردازش ) ، بعنوان یک گره در نظر گرفته می شود . با بکارگیری XSLT ، مجهز به یک زبان برنامه نویسی سطح بالا شده که قادر به حرکت در طول درخت و گره های موجود ، انتخاب گره ها و انجام عملیات پیچیده پردازش برروی گره ها ، خواهیم بود. مدل درخت XSLT ، در برخی مفاهیم مشابه DOM بوده ولی دقیقا” مشابه آن نیست .

مقایسه XSLT و SQL
در یک بانک اطلاعاتی رابطه ای ، داده ها شامل مجموعه ای از جداول می باشند . داده ها در فایل هائی تخت  با فرمت های مورد نظر ذخیره می گردند. قدرت یک بانک اطلاعاتی رابطه ای از ساختمان داده آن نبوده و به  زبانی  که قادر به پردازش داده ها است( SQL ) ، وابسته است . در روشی مشابه، XML  ، صرفا” یک ساختمان داده مناسب از اطلاعات را تعریف و با استفاده از یک زبان سطح بالا می توان عملیات دلخواه  در رابطه با ساختمان داده  را انجام داد ( XSLT ) .
SQL و XSLT دو زبان کاملا” متفاوت نسبت بیکدیگر می باشند .در حالتی خاص ، می توان این ادعا را داشت که آنان دارای شباهت هائی در برخی موارد عملیاتی هستند. مثلا” بمنظور پردازش داده های موجود در یک بانک اطلاعاتی رابطه ای و یا یک سند XML   ، زبان پردازش می بایست مبتنی بر یک گرامر مشخص باشد . در SQL از عبارت SELECT و در XSLT از عبارات XPath استفاده می گردد .

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

XSLT و SQL دارای شباهت های دیگری نیزمی باشند .  هر دو زبان ، دارای یک ویژگی مهم با نام closure می باشند. ویژگی فوق، بدین مفهوم است که خروجی ، دارای ساختمان داده مشابه ورودی است . مثلا” SQL خروجی خود را بصورت یک جدول و XSLT بصورت یک درخت ارائه خواهد داد . بدین ترتیب می توان خروجی یک عملیات را بعنوان ورودی در اختیار عملیات بعدی قرار داد. در SQL   این عملیات با استفاده از تعریف view و یا Subquery و در XSLT با ارسال داده از طریق مجموعه ای  stylesheet   انجام می گیرد .

در دنیای واقعی وچود  XSLT و SQL ضرورت داشته و  ارتباطات متعدددی بین آنها  وجود خواهد داشت  . داده ها  عموما” در بانک های اطلاعاتی رابطه ای ذخیره و با فرمت XML بین سیستم های متنوع ارسال خواهند  شد. مدل های داده در هر یک از سیستم های فوق با یکدیگر متفاوت بوده و XSLT   قادر به ایفای نقشی حساس در رابطه با تبدیل مدل های متفاوت داده است . تولیدکنندگان متفاوت بانک های اطلاعاتی در تلاش برای ارائه محصول خود بگونه ای هستند که امکان ارتباط XML و SQL را فراهم نماید . SQL Server 2000 امکان استفاده از پرس و جو های مبتنی بر XPath را حمایت می نماید.

پردازنده XSLT
مهمترین رسالت پردازنده
XSLT ، بکارگیری یک XML stylesheet در رابطه با یک سند XML و ایجاد( تولید ) خروجی مناسب است . لازم به یادآوری  است که هر یک از موارد اشاره شده ، بمنزله یک برنامه XML بوده و بدیهی است که ساختار هر یک از آنها یک درخت باشد . عملکرد پردازنده XSLT   وابسته به وجود درخت های فوق است. پردازنده های متعددی در رابطه با  XSLT نظیر Saxon, xt, MSXML3   وجود دارد . پردازنده های فوق را می توان بصورت رایگان تهیه نمود .

پردازنده saxon ، قادر به تبدیل سند XML به سایر مدل های دیگر است ( یک سند Html ) .  برای استفاده از برنامه فوق،می بایست برنامه Instan Saxon را از آدرس http://users.iclway.co.uk/mhkay/saxon/instant.html دریافت و بر روی سیستم  نصب کرد . برنامه فوق به زبان جاوا نوشته شده و می توان آن را مستقیما” از طریق خط دستور اجراء نمود ( ضرورتی به داشتن مرورگرهای وب و یا سرویس دهنده وب نخواهد بود ) . مرورگرها و سرویس دهندگان وب در این حالت با سند تبدیل یافته سروکار خواهند داشت .

xt ، یکی دیگر از پردازنده های XSLT است . برنامه فوق با زبان جاوا نوشته شده و امکان اجرای آن از طریق خط دستور وجود دارد . برای دریافت پردازنده فوق می توان به آدرس http://www.jclark.com/xml/xt.html مراجعه نمود. پردازنده فوق همانند saxon ، قادر به فعالیت با پارسر های مبتنی بر SAX می باشد .

امکان اجرای XSLT stylesheet بهمراه مرورگر IE نیز وجود دارد . بدین منظور می بایست  نسخه پنج مرورگر فوق و آخرین نسخه پردازنده MSXML مربوط به شرکت ماکروسافت ، بر روی سیستم نصب گردند. برای دریافت آخرین نسخه پردازنده فوق می توان به آدرس www.microsoft.com/xml مراجعه کرد .

مثال : در ادامه به بررسی مثالی خواهیم پرداخت که  نحوه استفاده از XSLT بمنظور تبدیل یک سند ساده XML را نشان خواهد داد . فرض کنید ، یک سند ساده XML مطابق زیر را داشته باشیم :

یک سند ساده XML

<?xml version=”1.0″ encoding=”iso-8859-1″?>
<greeting>Hello, world!</greeting>

خروجی مورد نظر سند XML یک فایل Html بصورت زیر خواهد بود .

خروجی Html

<html>
<head>
<title>Today’s greeting</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>

XSLT زیر بمنظور تبدیل سند XML و ایجاد خروجی Html استفاده می گردد .

XSLT   بمنظور تبدیل سند XML و ایجاد خروجی Html

<?xml version=”1.0″ encoding=”iso-8859-1″?>
<xsl:stylesheet  version=”1.0″  xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
<xsl:template match=”/”>
<html>
<head>
<title>Today’s greeting</title>
</head>
<body>
<p><xsl:value-of select=”greeting”/></p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

اجرای StyleSheet
برای اجرای stylesheet با استفاده از سه پردازنده اشاره شده در بخش قبل ، مراحل زیر را می بایست دنبال کرد.

استفاده از پردازنده saxon .بمنظور اجرای Stylesheet فوق با استفاده از پردازنده saxon ، عملیات زیر را می بایست انجام داد :

  • دریافت برنامه پردازنده ( آدرس مربوطه در بخش قبل اشاره گردید )
  • نصب برنامه saxon.exe در یک فولدر مناسب
  • با استفاده از برنامه notepad دو فایل اشاره شده را در فایل هائی با نام hello.xml و hello.xsl ذخیره نمائید.
  • خط دستور DOS را فعال نمائید .( start|programs|MSDOS prompt )
  • دستور saxon   hello.xml   hello.xsl   را در خط دستور تایپ نمائید .
  • خروجی html بر روی صفحه نمایش داده خواهد شد .

در صورتیکه قصد مشاهده خروجی را در مرورگر داشته باشید ، خروجی خط دستور را در یک فایل Html بصورت زیر ذخیره نمائید .

Saxon hello.xml hello.xsl > hello.html

استفاده از پردازنده xt .  برای اجرای پردازنده xt ، از روشی مشابه saxon استفاده شده با این تفاوت که در عوض استفاده از برنامه  saxon از برنامه  xt استفاده می گردد .

استفاده از پردازنده MSXML . بمنظور اجرای stylesheet بهمراه مرورگر IE ، می بایست تغییرات اندکی در سند XML بمنظور مراجعه به stylesheet ایجاد گردد :

<?xml version=”1.0″ encoding=”iso-8859-1″?>
<?xml-stylesheet type=”text/xsl” href=”hello.xsl”?>
<greeting>Hello, world!</greeting>

در ادامه می توان فایل hello.xml را در مرورگر IE ، فعال و مشاهده نمود . مرورگر فوق ، سند XML را خوانده و از وجود  یک stylesheet آگاه می گردد . در ادامه stylesheet مربوطه  فعال و بمنظور تبدیل سند XML و ایجاد خروجی Html ، آن را اجراء می نماید . در صورتیکه بر روی صفحه نمایشگر عبارت hello,world نمایش داده نشود و صرفا” سند XML مشاهده گردد، علت  عدم استفاده از آخرین نسخه MSXML بهمراه مرورگر بوده و می بایست آخرین نسخه را از آدرس اشاره شده دریافت و بر روی سیستم نصب نمود .

تشریح نحوه عملکرد XSLT   در رابطه با مثال فوق
اولین خط فایل stylesheet ، شامل دستور زیر است :

<?xml version=”1.0″ encoding=”iso-8859-1″?>

دستور فوق، اعلام می نماید که   یک XSLT stylesheet   ، خود بعنوان یک سند XML است . برای encoding کاراکترها ،می توان از استانداردهای متعدد موجود منجمله utf-8 استفاده کرد .
در ادامه با خط زیر مواجه می گردیم :

<xsl:stylesheet    xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”   version=”1.0″>

خط فوق، عنوان استاندارد XSLT است . یک المان شروع که نوع سند را بعنوان یک stylesheet معرفی می نماید . خصلت  xmlns:xsl تعریف یک namespace   بوده که مشخص می نماید پیشوند xsl در ادامه بمنظور مراجعه به  المان های تعریف شده ( استاندارد کنسرسیوم وب XSLT ) ، استفاده خواهد شد .
در ادامه با خط زیر مواجه می شویم :

<xsl:template match=”/”>

المان < xsl:template > ، یک قانون تمپلیت را تعریف که بر اساس آن نحوه برخورد با بخش های خاص سند مبداء در هنگام پردازش، تبین می گردد . خصلت “/” مشخص می نماید که قانون فوق از ابتدای سند مبداء اعمال خواهد شد . در حقیقت، عبارت فوق یک عبارت مبتنی بر XPath بوده و المان ریشه سند XML را مشخص می نماید . یک سند XML دارای یک ساختار سلسله مراتبی بوده و همانند یونیکس که از “/” برای مشخص نمودن ریشه استفاده می نماید، XPath نیز از “/” برای مشخص نمودن المان ریشه در یک سند XML   استفاده می نماید . در مدل DOM به عنصر فوق  ” Document object ” و در XPath به آن ریشه گفته می شود .
در ادامه با خطوط زیر مواجه می شویم :

<html>
<head>
<title>Today’s greeting</title>
</head>
<body>
<p><xsl:value-of select=”greeting”/></p>
</body>
</html>

بدنه تمپلیت،نحوه ایجاد خروجی را مشخص می نماید . اکثر بدنه تمپلیت در مثال فوق ، مجموعه ای از المان های Html   و متن مورد نظر را که  می بایست در فایل خروجی منعکس گردند  ، شامل می گردد . در دستورات فوق یک المان خاص با نام < xsl:valeu-of > وجود داشته  که یک دستورالعمل XSLT است( چون از namespace مربوطه با نام xsl استفاده می نماید ) . دستورالعمل فوق ، مقدار یک گره موجود در سند مبداء را در سند خروجی تکثیر می نماید . خصلت SELECT   مربوط به المان ، گره ای را که مقدار آن می بایست انتخاب شود  را مشخص می نماید . ( تمام المان های < greeting > که فرزند گره مربوطه می باشند ،انتخاب می گردند ) .
در ادامه با دستور زیر مواجه می گردیم :

</xsl:template>

برای یک تمپلیت ساده نظیر آنچه در مثال فوق وجود داشت ، می توان برخی از بخش ها را حذف نمود. با توجه به اینکه صرفا” از یک تمپلیت استفاده شده است المان < xsl:template > را می توان حذف نمود . در این حالت Stylesheet مربوطه بصورت زیر خواهد بود :

<html xsl:version=”1.0″
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
<head>
<title>Today’s greeting</title>
</head>
<body>
<p><xsl:value-of select=”greeting”/></p>
</body>
</html>

 

tala2207






تاریخ عضویت: مهر 1389 
سطح کاربری : کاربر جدید
تعداد پست ها: -1
محل سکونت :

بررسی جایگاه تکنولوژی XSLT در بین خانواده بزرگ تکنولوژی های مرتبط با XML

چهارشنبه 19 اسفند 1388  9:59 AM




همانگونه که قبلا” اشاره گردید ، XSLT ،توسط کنسرسیوم وب عرضه و بسرعت با استانداردهای موجود در خانواده بزرگ XML   همدست  گردید.  در ادامه به بررسی ارتباط موجود بین XSLT و سایر استانداردهای موجود در زمینه XML ، خواهیم پرداخت .
XSLT و XSL
آغاز حیات XSLT ، از یک زبان بزرگتر با نام XSL همراه بوده است . همانگونه که از نام زبان فوق مشخص است ، XSL ، با هدف تعریف نحوه فرمت  سندهای XML   ، بمنظور نمایش بر روی صفحه نمایشگر، کاغذ و سایر موارد ، طراحی و عرضه شده است . ارائه یک سند XML   مستلزم تحقق دو فرآیند متمایز است . در اولین فرآیند، می بایست  با انجام عملیات متفاوت نظیر انتخاب ، گروه بندی و ذخیره المان ها  ، یک تبدیل ساختاری در سند ایجاد گردد . در دومین فرآیند ، می بایست ماحصل عملیات انجام شده بر روی المان ها با  فرمت دلخواه در خروجی ( مثلا” نمایشگر ) نمایش داده شود . فرآیندهای فوق کاملا” از یکدیگر مستقل بوده و بر همین اساس XSL به دو بخش مجزاء تفسیم شده است: XSLT برای تعریف و انجام تبدیلات  و XSL بمنظور تعریف نحوه فرمت و قالب نمایش ( ارائه ) اطلاعات . ( ویژگی فوق را XSL-FO نیز می گویند ) .  ( XSL Formatting Objects ) . برای آگاهی از مشخصات و مستندات مربوط به XSL-FO می توان به آدرس http://www.w3.org/TR/xsl مراجعه کرد. XSLT می بایست دارای قابلیت ها ی خاصی بمنظور تولید خروجی مورد نظر  باشد . XSL-FO  ، امکانات متعدد و مناسبی در رابطه با ایجاد  خروجی با کیفیت بالا را فراهم می نماید. اغلب پیاده کنندگان نرم افزار صرفا” تمایل به تبدیل یک سند XML به Html را داشته  تا زمینه استفاده فراگیر نتایج در انواع مرورگرها فراهم گردد . در برخی حالات از امکانات CSS)Cascading style sheets ) نیز بهمراه XSLT استفاده می شود .

XSLT و XPath
در زمان پیاده سازی XSLT ، برخی تعارضات بین گرامر عبارات استفاده شده در XSLT (بمنظور انتخاب بخش های خاصی از یک سند)  و زبان XPointer ( بمنظور ارتباط یک سند با سند دیگر) بروزکرد . بمنظور ممانعت از داشتن دو زبان متفاوت عبارات که با یکدیگر overlap دارند  ، کمیته های  XSLT و XPointer   کنسرسیوم وب ، تصمیم به ترکیب  توان آنها با یکدیگر و تعریف یک زبان جدید با نام XPath   نمودند .  نسخه شماره یک XPath  ، همزمان با ارائه XSLT   نیز عرضه گردید ( شانزدهم نوامبر سال ۱۹۹۹ ) .
XPath  ،  بعنوان یک زبان زیرمجموعه در یک XSLT stylesheet ایفای وظیفه می نماید . یک عبارت XPath ، ممکن است بمنظور انجام یک محاسبات عددی و یا عملیات بر روی رشته ها  و یا بررسی شرایط منطقی استفاده گردد . ، XPath در اغلب حالات بمنظور مشخص نمودن بخش های متفاوت یک سند ورودی که قصد انجام پردازش بر روی آن وجود دارد استفاده می گردد . مثلا” دستورالعمل زیر  قیمت میانگین را برای تمام کتاب های موجود در یک سند ورودی محاسبه می نماید .

<xsl:value-of select=”sum(//book/@price) div count(//book)”/>

در مثال فوق ، المان < xsl:value-of > یک دستورالعمل تعریف شده در XSLT است . دستورالعمل فوق ، باعث نوشتن  یک مقدار در سند خروجی می گردد . خصلت select ، یک عبارت مبتنی بر XPath است . عبارت فوق، مسئول محاسبه مقداری است که می بایست در خروجی نمایش داده شود . در این مثال خاص ، مجموع خصلت های price مربوط به تمام المان های < book > محاسبه و بر تعداد المان های موجود < book >  تقسیم تا معدل مربوطه محاسبه گردد .
تفکیک
XPath و XSLT از یکدیگر منطقی بنظر می آید ولی در مواردی خاص تقسیم بندی و تمایز انجام شده باعث بروز مسائلی می گردد .در برخی حالات ، تشخیص اینکه کدام سند می بایست  خوانده شده تا پاسخ مناسب در رابطه با یک سوال خاص داده شود، مشکل خواهد بود . مثلا” یک عبارت XPath می تواند شامل یک مرجع  به  متغیری باشد ، ولی ایجاد  و مقدار دهی اولیه آن از وظایف XSLT است . جایگاه تعریف یک تابع در Xpath و XSLT   یکی دیگر از مسائل مربوط به تفکیک دو تکنولوژی فوق است . عبارات XPath قادر به فراخوانی توابع می باشند ( در این راستا مجموعه گسترده ای از توابع استادندارد تعریف شده است ) . برخی از آنان نظیر  string-lenght در عبارات XPath تعریف شده در صورتیکه  توابعی  دیگر که عملکرد  آنها  در ارتباط با تعاریف XSLT است (نظیر key ) ، در مشخصه XSLT تعریف می گردند . اغلب XSLT و XPath   در کنار یکدیگر استفاده می گردند . فراموش نکنیم که امکان استفاده از XPath  بصورت مستقل و بمنظور انجام عملیات متفاوتی نظیر تعریف ابرلینک های موجود در اسناد و …. نیز وجود دارد .

XSLT و XML
XSLT  ،  ابزاری برای تبدیل اسناد XML است . در بخش اول این مقاله ، به ضرورت های  تبدیل اشاره گردید. در این بخش لازم  است به بررسی ارتباط دو تکنولوژی فوق با نگرشی عمیق تر ، پرداخته گردد .  مفاهیم   XML namespace و XML information set از جمله مواردی می باشند که زمینه تعامل ارتباطی بین XML و XSLT را فراهم می نمایند  . در ادامه هر یک از موارد فوق توضیح داده می شود :
XML namespace
در طراحی XSLT   بر نقش مهم و کلیدی XML namespace در استاندارد XML   توجه جدی شده است . بنابراین زمانیکه استاندارد XSLT به یک سند XML مراجعه می نماید ، عملا” مشخصات XML namespace   نیز مورد توجه قرار گرفته شده است  . مشخصات و استانداردهای مربوط به namespace را می توان  در آدرس  http://www.w3.org/TR/REC-xml-names مشاهده نمود .
Namespace   دارای نقشی حیاتی در XSLT است . تکنولوژی فوق ،امکان ترکیب تگ هائی از سند های XML مشابه با معانی متفاوت را فراهم می نماید . مثلا” ممکن است در یک سند XML  ، المان < table > نشاندهنده یک بردار دو بعدی شامل  مقایر متفاوت داده بوده در صورتیکه در سند دیگر، المان < table > نشاندهنده بخشی از یک مبلمان باشد . Namespace توسط یک URI) Unique Resource Identifier ) مشخص می گردد. بدین منظور از روش های متفاوتی استفاده می گردد. مثلا” در یک مدل،  از آدرس  مشابه یک URL معمولی استفاده می گردد:( http://www.yourcomany.com  ) . در روش دیگر در برخی از اصطلاحات XML ( نظیر http://www.biztalk.org)  استفاده می گردد ، URN است . ( مثلا” urn:java:com:ic1.saxson  ) . جزئیات مربوط به  URI   مهم  نبوده ولی همواره می بایست به این مسئله توجه گردد که نام در نظر گرفته شده  منحصر بفرد باشد . یکی از روش های مناسب تحقق وضعیت فوق،  استفاده از URL مربوط به سایت خود می باشد . لازم به توضیح است  که موضوع فوق بدین معنی نخواهد بود که  می بایست بر روی وب سایت ، آیتمی  بمنظور اشاره کردن به آن ، وجود داشته باشد . URI در حقیقت رشته ای است که بمنظور تمایز با  تعاریف انجام شده  توسط سایر افراد انتخاب می گردد .
با توجه به اینکه رشته های 
URI اغلب طولانی و از کاراکترهای خاصی نظیر “/” استفاده می نمایند، از آنها  بصورت کامل همراه اسامی المان ها  و خصلت ها استفاده نمی گردد . بدین منظور اغلب از یک نام مستعار کوچک استفاده می شود . نام مستعار، بصورت  پیشوند در کنار اسامی المان ها و خصلت ها استفاده می شود . نام در نظرگرفته شده  برای پیشوند مهم نبوده و هر نامی را می توان انتخاب کرد . بدین ترتیب نام واقعی هر المان و یا خصلت ، از طریق URI مربوط به namespace و نام محلی آن ( آن بخش از نام که بعد از پیشوند قرار می گیرد )  مشخص خواهد شد . مثلا” می توان با استفاده از پیشوند xsl به namespace مربوط به http://www.w3.org/1999/XSLT/Transform اشاره  کرد . برای اسامی المان ها ، می توان یک URI پیش فرض را تعریف  و آن را به اسامی المان غیرپیشوندی مرتبط نمود . namespace پیش فرض URI  به اسامی خصلت های غیر پیشوندی نسبت داده نخواهد شد . تعریف یک پیشوند namespace   بصورت زیر است :

xmlns:prefix = “namespace-URI”

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

xmlns = “namespace-URI”

پردازش یک سند XML   توسط XSLT متاثر از واقعیت های موجود در  namespace  خواهد بود .

XML information set
XSLT بمنظور انجام پردازش های ضروری بر روی اطلاعات موجود در یک  سند XML ، طراحی  و با سند کاری نخواهد داشت . این بدان معنی است که ، یک برنامه نویس XSLT   قادر به دریافت یک  نمایش شبه درختی از یک سند مبداء بوده  که برخی از بخش های آن قابل مشاهد و برخی دیگر غیرقابل مشاهده خواهند بود. مثلا”می توان  اسامی و مقدار خصلت ها را مشاهده نمود  ولی امکان مشاهده اینکه یک خصلت در یک کوتیشن و یا دو کوتیشن استفاده شده ، وجود نخواهد داشت . همچنین امکان  مشاهده  نظم و اولویت خصلت ها و نحوه نگارش آنها وجود نخواهد داشت .تلاش های متعددی بمنظور تعریف اطلاعات مورد نیاز برای مشخص نمودن “خوش شکل ” بودن یک سند XML انجام شده است . در بیست و چهارم اکتبر ۲۰۰۱ ،کنسرسیوم وب محموعه اطلاعات مورد نیاز و تعریف شده در رابطه با یک سند XML را استاندارد و پیشنهاد داده است . مشخصات فوق را می توان از طریق آدرس http://www.w3.org/TR/xml-infoset مشاهده کرد .  این مشخصات  ، شامل  مجموعه ای از تعاریف مورد نیاز سایر تکنولوژی هائی است که نیازمند دستیابی به اطلاعات موجود در یک سند XML  می باشند . یک سند XML دارای مجموعه ای از اطلاعات ضروری بوده که “خوش شکل ” بودن آن را تضمین و سایر تکنولوژی های مربوطه با مراجعه به اطلاعات فوق قادر به برداشت مناسب از یک سند XML و انجام عملیات مربوط به خود خواهند بود . مجموعه اطلاعات یک سند XML شامل تعدادی از آیتم های اطلاعاتی است .  مجموعه اطلاعات مربوط به یک سند XML   ” خوش شکل “  ، حداقل دارای یک آیتم اطلاعاتی است . یک آیتم اطلاعاتی بخش خاصی از یک سند XML را تشریح و شامل مجموعه ای از خصلت های مربوط به خود است .

XSL و CSS
چرا دو زبان ( XSL و CSS )  مختص stylesheet وجود دارد؟ منظور از XSL   ، تکنولوژی XSLT بهمراه XSL Formating objects   است . مهمترین هدف  CSS  ، تبین قوانین لازم بمنظور نمایش عناصر موجود در یک سند  Html می باشد . در این راستا امکان استفاده از CSS بهمراه سندهای XML نیز وجود دارد . با توجه به  ویژگی های خاص  نمایش  در رابطه با یک سند  XML ، بکارگیری تکنولوژی CSS   محدودیت های خاصی را بدنبال خواهد داشت  . در این زمینه می توان به موارد زیر اشاره کرد :

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

CSS ، صرفا” در زمانیکه ساختار سند مبداء شباهت زیادی به شکل نهائی نمایش دارد ، مفید و قابل استفاده است . صرفنظر از محدودیت های فوق ، استفاده از CSS   ساده بوده و منابع زیادی را بر روی ماشین بخود اختصاص نخواهد داد . ( مقرون بصرفه از بعد در اختیار گرفتن منابع ) . با توجه به عدم ذخیره سازی سند ، ضرورتی به ایجاد یک مدل شبه درختی برای نمایش و ارائه سند در حافظه نبوده و بلافاصله پس از دریافت اولین متون موجود ، فرآیند نمایش آنها آغاز می گردد .
در برخی حالات ، مناسب است که از
XSLT و CSS در کنار یکدیگر استفاده نمود. مثلا” با استفاده از XSLT می توان یک مدل قابل قبول از سند مورد نظر را که قصد نمایش نهائی آن را داریم ، ( در مدل فوق متن ها بدرستی و با اولویت مناسب مستقر شده اند) ایجاد  و در ادامه  با استفاده از CSS  ، عملیات لازم در رابطه با انتخاب نوع فونت ، اندازه فونت ، رنگ ها و … را انجام داد . در این راستا  امکان پردازش XSLT بر روی سرویس دهنده و پردازش CSS ، بر روی سرویس گیرنده وجود خواهد داشت . یکی  از مزایای رویکرد فوق ، کاهش حجم داده های ارسالی از طریق خط ارتباطی بوده و بدین ترتیب مدت زمان پاسخ به کاربران، بهبود پیدا خواهد کرد .
در بخش سوم این مقاله به نحوه شکل گیری و طراحی
XSLT   اشاره  و جایگاه آن بعنوان یک زبان برنامه نویسی تبین خواهد شد

 

tala2207






تاریخ عضویت: مهر 1389 
سطح کاربری : کاربر جدید
تعداد پست ها: -1
محل سکونت :

بررسی روند شکل گیری XSLT و جایگاه آن بعنوان یک زبان برنامه نویسی

چهارشنبه 19 اسفند 1388  10:00 AM




روند شکل گیری XSLT
XSLT ، نظیر سایر اعضاء خانواده بزرگ استاندارهای XML ، توسط کنسرسیوم وب پیاده سازی شده است. جزئیات مربوط به شکل گیری استاندارد فوق، در آدرس http://www.w3.org/style/History قابل استفاده است. پیشنهاد اولیه ، برای استاندارد فوق در تاریخ بیست ویکم اگوست سال ۱۹۹۷ ارائه گردید  ( http://www.w3.org/TR/NOTE-XSL.html ) . برای ارائه استاندارد فوق، از وجود یازده متخصص استفاده گردید .   ( پنج نفر از شرکت ماکروسافت ، سه نفر از شرکت Inso  ، یک نفر از شرکت ArborText ، یک نفر از دانشگاه ادینبورگ و James Clark ، که برای خود کار می کرد) .
XSL ، یک زبان Stylesheet است که توسط کمیته وب طراحی شده است . قابلیت های استاندارد فوق ، بمراتب بیشتر از CSS است ( مثلا” قابلیت ذخیره سازی المان ها ) . همانگونه که قبلا” اشاره گردید، CSS بمنظور نمایش سندهای XML با ساختار ساده مناسب می باشد. XSL  ، دارای قابلیت های بمراتب بیشتری در رابطه با فرمت مورد نیاز برای قالب دهی اطلاعات ساختیافته ، (نظیر یک ساختمان داده XML )  می باشد . پیاده کنندگان استاندارد XSL ، در زمان طراحی تکنولوژی فوق ، سه محور اساسی را مورد توجه قراردادند :

·         یک زبان نشانه گذاری با تاکید بر یک گرامر تعریفی

·         امکان استفاده از اسکریپت های خاص بمنظور انجام عملیات پیچیده

·         امکان استفاده  بعنوان یک زبان برنامه نویسی کامل

اهداف طراحی XSL بشرح زیر است :

·         XSL ، می بایست براحتی از طریق اینترنت قابل استفاده باشد.

·         XSL ، می بایست همراه با گرامر XML   ارائه  شود

·         XSL ، می بایست یک زبان تعریفی بمنظور انجام عملیات رایج در رابطه با  فرمت دهی باشد.

·         XSL ، می بایست امکان استفاده از یک زبان اسکریپت را بمنظور افزایش توان عملیاتی فراهم نماید .

·         XSL ، می بایست امکان تطبیق یک CSS  را به یک XSL stylesheet فراهم نماید .

·         قابلیت استفاده آسان از XSL ، برای کاربرانی که دارای تجربه لازم در رابطه با زبان FOSI می باشند .

·         تعداد ویژگی انتخابی در XSL ، می بایست حداقل مقدارممکن را دارا باشد .

·         Stylesheet های نوشته شده بکمک XSL ، می بایست خوانائی مطلوبی را داشته باشند .

·         طراحی XSL ، می بایست بسرعت انجام شود .

·         ایجاد stylesheet بکمک XSL ، می بایست بسادگی انجام شود .

زبان ارائه شده  در اولین پیشنهاد ، دارای اغلب مفاهیم کلیدی XSLT است ، که در نهایت ارائه گردید . بمنظور طراحی گرامر زبان فوق از رویکرد مبتنی بر تمپلیت استفاده گردید . بدین ترتیب امکان برخورد با  گره ها ی موجود در سند مبداء و تطبیق آنها با یک الگوی تعریف شده ، فراهم می گردد . عدم وجود اثرات جانبی  و امکان تفسیر و برخورد با سندهای با حجم بالا ، از دیگر مواردی است که در زمان طراحی XSL به آنها توجه جدی گردید . برآیند  تمام تلاش های فوق، عرضه اولین نسخه پیشنهادی XSLT در سال ۱۹۹۸ بود . زبان پیشنهادی در سال   ۱۹۹۹ ،بصورت حرفه ای مطرح و مورد استفاده  قرار گرفت .
XSLT بعنوان یک زبان
XSLT ، دارای چه ویژگی منحصربفردی است که آن را بعنوان یک زبان برنامه نویسی از سایر زبان ها متمایز می نماید ؟ در این بخش به سه مورد اساسی اشاره خواهد گردید : استفاده از گرامر مبتنی بر XML   ، عدم وجود تاثیرات جانبی و  پردازش مبتنی بر  مجموعه ای از قوانین
استفاده از گرامر مبتنی بر
XML
همانگونه که قبلا” اشاره گردید ، استفاده از گرامر SGML برای Stylesheet از سال ۱۹۹۴ مطرح شده بود . ایده استفاده از SGML در این زمینه ، دارای مشکلات خاص خود است . بمنظور عرضه stylesheet در XSLT ، از گرامر مبتنی بر XML استفاده می شود . رویکرد فوق دارای مزایای زیر است :

·         از مزیت وجود یک پارسر XML در مرورگرها ، استفاده خواهد کرد .

·         اغلب افراد از عدم وجود یک گرامر همگن و سازگار بین HTML   ، XML و CSS گلایه داشته و تمایلی به تکرار آن با یک گرامر جدید ندارند .

·         اکثر زبان های مبتنی بر تمپلیت در حا ل حاضر، بعنوان یک outline از  سند خروجی  بوده که با دستورالعمل هائی نیز همراه می باشند  و از این نظر مفهوم فوق ، کاملا” شناخته شده است .

·         با استفاده از ابزارهای ویژوال موجود ، امکان ایجاد این نوع سندها براحتی وجود داشته و نیازی به تایپ نخواهد بود .

·         حمایت از  یونیکد

·         ضرورت استفاده از یک Stylesheet بعنوان ورودی و یا خروجی در زمان تبدیل ، بدفعات احساس خواهد شد( سیستم تبدیل ) . این ویژگی  که یک stylesheet  قادر به خواندن و نوشتن سایر Stylesheet ها  باشد ، یک مزیت تلقی می گردد .

اثرات جانبی
یکی از اهداف اولیه  در رابطه با طراحی XSLT ، عدم بروز اثرات جانبی در زمان استفاده از آن است . یک تابع و یا برنامه جانبی در صورتیکه باعث ایجاد تغییرات در محیط مربوط بخود شوند ، دارای اثرات جانبی خواهند بود. مثلا” تابعی که باعث تغییر مقدار یک متغیر سراسری مورد استفاده سایر توابع می گردد ، دارای اثرات جانبی بوده و می تواند در عملکرد سایر توابعی که از مقدار متغیر فوق استفاده می نمایند ، تاثیری منفی را بدنبال داشته باشد. بدیهی است توابعی که دارای اثرات جانبی می باشند، می بایست بدفعات مشخص و با یک نظم و اولویت خاص بخدمت گرفته شوند ( فراخوانی ). مثلا” در صورتیکه تابعی برای محاسبه محیط یک مثلث نوشته شده باشد که دارای اثرات جانبی نیست ، می توان با خیال آسوده تابع فوق را بدفعات استفاده و همواره انتظار عملکرد یکسانی را نیز از آن داشته باشیم ( محاسبه محیط مثلث با توجه به پارامترهای مربوطه ) . در صورتیکه تابع فوق دارای اثرات جانبی باشد ، (مثلا” تغییر اندازه  اضلاع مثلث)  استفاده از آن  بدفعات بسیار محدود ( یک مرتبه)  منطقی بوده و در صورت تکرار در استفاده از چنین تابعی ،  نباید انتظارعملکردی مثبت از آن را داشته باشیم . در صورتیکه زبانی دارای اثرات جانبی باشد، اولویت اجرای دستورالعمل ها در آن می بایست، بدرستی مشخص شود .در زبان هائی که دارای اثرات جانبی نمی باشند  ، امکان اجرای دستورالعمل ها  با هر اولویتی وجود خواهد داشت . این بدان  معنی است که می توان بخش هائی از یک Stylesheet  انتخابی را بصورت مستقل اجراء نمود . XSLT زبانی مناسب در این رابطه بوده و با توجه به انتظارات موجود در رابطه با اسناد ورودی ،  پتانسیل های لازم را بدون وجود اثرات جانبی ،  در اختیار استفاده کنندگان قرار می دهد .
زبان انتخابی ، می بایست برای استفاده در موارد
batch و محاوره ای مناسب باشد . زمانیکه یک سند XML   با ظرفیت بالا ، از  سرویس دهنده ای اخذ می گردد ، مادامیکه آخرین بایت آن از سرویس دهنده دریافت نگردد، امکان  مشاهده هیچ چیزی وجود نخواهد داشت . در صورت اعمال  تغییرات اندک در یک سند XML ، انتظار داریم که اثر تغییرات انجام شده  در رابطه با نمایش سند را سریعا” مشاهده نمائیم . . در این رابطه لازم است به این نکته نیز اشاره گردد که  تعیین بخشی از سند خروجی که متاثر از تغییرات اندکی در یک بخش از سند ورودی است ، عملی ساده نخواهد بود . تمام پردازنده های XSLT ، نیازمند استقرار کامل سند XML در حافظه ، قبل از انجام هر گونه عملیاتی می باشند .  مورد فوق یکی از چالش های اصلی XSLT در مواجهه با سندهای XML با حجم بالا است .
XSLT مبتنی بر قوانین است
یک XSLT Stylesheet ، شامل مجموعه ای از قوانین مبتنی بر  تمپلیت است . هر یک از تمپلیت ها ، نحوه پردازش یک المان خاص را مشخص خواهند کرد . قوانین با یک نظم و اولویت خاص سازماندهی نشده و ضرورتی به رعایت اولویت و نظم در ورودی و یا خروجی نخواهند بود . زمانیکه XSLT   ، بعنوان یک زبان تعریفی در نظر گرفته می شود، می توان گفت که :  ” زمانیکه الگوهای خاصی در سند مبداء پیدا گردید ، چه نوع  اطلاعاتی و به چه صورت می بایست در خروجی ارائه شود.”
ساختار مبتنی بر قوانین ، بسیار مشابه
CSS است . نحوه برخورد با الگوها  در CSS و XSLT کاملا” متفاوت است  . مثلا” در CSS عنوان می شود که  قانون تعریف شده در رابطه با کدام گره می بایست اعمال گردد ، در صورتیکه در XSLT مشخص می شود که در زمان یافتن یک الگوی  مشخص شده در سند مبداء ، چه عملیاتی می بایست انجام شود.

چه زمانی می بایست از
XSLT استفاده کرد ؟

استفاده از
XSLT در موارد زیر پیشنهاد می گردد :

·         برنامه های تبدیل داده . زمانیکه قصد تبدیل یک مجموعه داده مبتنی بر XML را به فرمت دیگر XML داشته باشیم ، XSLT   گزینه ای مناسب خواهد بود . با استفاده از XSLT ، می توان عملیات متفاوتی نظیر انتخاب داده هائی خاص  از یک سند XML   ، ذخیره سازی داده های مورد نظر و موارد متنوع دیگری  را انجام داد . از XSLT   می توان بمنظور معتبر سازی داده ها نیز استفاده کرد . XSLT ، بعنوان یک زبان برنامه نویسی، گزینه ای مناسب برای انجام پردازش های لازم در خصوص ساختار اطلاعاتی است که از محتویات مربوط جدا شده اند . از XSLT می توان در رابطه با تبدیل یک سند XML به فرمت های مبتنی بر متن نیز استفاده کرد . ( مثلا” اطلاعات متنی که توسط ویرگول از هم جدا شده اند ) . یکی دیگر از ویژگی های جالب XSLT ، امکان استفاده از آن در رابطه با تبدیل یک سند غیره XML به یک سند XML و یا سایر فرمت های دلخواه دیگر است . در این مورد خاص، لازم است که یک نوع  پارسر بمنظور تشخیص فرمت داده های ورودی نوشته گردد . پس از نوشتن پارسر، عملیات تبدیل ، توسط یک زبان سطح بالا میسر می گردد .

·         نشر اطلاعات . تفاوت بین تبدیل و نشر اطلاعات به مقصد داده ها بر می گردد . در مواردیکه تبدیل صورت می پذیرد، مقصد داده های تبدیل شده یک نرم افزار دیگر بوده در صورتیکه در زمان  نشر ، کاربران (انسان)  مقصد نهائی اطلاعات می باشند. تبدیل با نمایش و تبدیل بدون نمایش گزینه هائی  متفاوت بمنظور شناخت مفهوم نشر اطلاعات  است . در زمان  نشر اطلاعات، نیاز به ارائه  آنان بر روی کاغذ ( چاپ ) و یا وب خواهد بود . نشر اطلاعات بر روی کاغذ، مستلزم عملیات بمراتب پیچیده تری خواهد بود . در این حالت خاص ، کاربران دارای انتظار بالائی در رابطه با کیفیت می باشند. XSL FO ، امکانی بمنظور تعریف یک مدل مبتنی بر XML از یک فایل چاپی بمنظور نمایش با کیفیت بالا بر روی صفحات نمایشگر و یا کاعذ است . نشر اطلاعات بر روی وب دارای چالش های بمراتب کمتری نسبت به کاغذ است . در این مدل خاص، صرفا” می بایست داده ها به Html تبدیل و در ادامه مرورگرها  مسئولیت ارائه اطلاعات را با فرمت تعریف شده بر عهده خواهند گرفت . تبدیل یک سند XML به Html ، یکی از متداولترین کاربردهای XSLT در حال حاضر است . در این رابطه دو مرحله عملیات دنبال خواهد شد : در اولین مرحله، داده ها به یک مدل مبتنی بر XML که از لحاظ ساختاری شباهت زیادی را با سند Html مقصد دارد ، تبدیل و در دومین مرحله ، ساختار مشخص شده ، با تاکید بر امکانات Html نمایش داده خواهد شد .

 

tala2207






تاریخ عضویت: مهر 1389 
سطح کاربری : کاربر جدید
تعداد پست ها: -1
محل سکونت :


 1
   پاسخ
دسترسی سریع:
ارسال به دوستان

پست الکترونیکی:

 مقالات اسطوره ها