بررسي روند شکل گيري XSLT و جايگاه آن بعنوان يک زبان برنامه نويسي
روند شکل گيري XSLT
XSLT ، نظير ساير اعضاء خانواده بزرگ استاندارهاي XML، توسط کنسرسيوم وب پياده سازي شده است. جزئيات مربوط به شکل گيري استاندارد فوق، در آدرس http://www.w3.org/style/History قابل استفاده است. پيشنهاد اوليه ، براي استاندارد فوق در تاريخ بيست ويکم اگوست سال 1997 ارائه گرديد ( 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 در سال 1998 بود . زبان پيشنهادي در سال 1999 ،بصورت حرفه اي مطرح و مورد استفاده قرار گرفت .
XSLT بعنوان يک زبان
XSLT ، داراي چه ويژگي منحصربفردي است که آن را بعنوان يک زبان برنامه نويسي از ساير زبان ها متمايزمي نمايد ؟ در اين بخش به سه مورد اساسي اشاره خواهد گرديد : استفاده از گرامر مبتني بر XML ، عدم وجود تاثيرات جانبي و پردازش مبتني بر مجموعه اي از قوانين
استفاده از گرامر مبتني بر XML
همانگونه که قبلا" اشاره گرديد ، استفاده از گرامر SGML براي Stylesheet از سال 1994 مطرح شده بود . ايده استفاده از 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 نمايش داده خواهد شد .
منبع:http://article.mjsoft.ir
/س