روند شکل گیری 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 در موارد زیر پیشنهاد می گردد :

<li dir="rtl"> برنامه های تبدیل داده . زمانیکه قصد تبدیل یک مجموعه داده مبتنی بر XML را به فرمت دیگر XML داشته باشیم ، XSLT گزینه ای مناسب خواهد بود . با استفاده از XSLT ، می توان عملیات متفاوتی نظیر انتخاب داده هائی خاص از یک سند XML ، ذخیره سازی داده های مورد نظر و موارد متنوع دیگری را انجام داد . از XSLT می توان بمنظور معتبر سازی داده ها نیز استفاده کرد . XSLT ، بعنوان یک زبان برنامه نویسی، گزینه ای مناسب برای انجام پردازش های لازم در خصوص ساختار اطلاعاتی است که از محتویات مربوط جدا شده اند . از XSLT می توان در رابطه با تبدیل یک سند XML به فرمت های مبتنی بر متن نیز استفاده کرد . ( مثلا” اطلاعات متنی که توسط ویرگول از هم جدا شده اند ) . یکی دیگر از ویژگی های جالب XSLT ، امکان استفاده از آن در رابطه با تبدیل یک سند غیره XML به یک سند XML و یا سایر فرمت های دلخواه دیگر است . در این مورد خاص، لازم است که یک نوع پارسر بمنظور تشخیص فرمت داده های ورودی نوشته گردد . پس از نوشتن پارسر، عملیات تبدیل ، توسط یک زبان سطح بالا میسر می گردد .
<li dir="rtl"> نشر اطلاعات . تفاوت بین تبدیل و نشر اطلاعات به مقصد داده ها بر می گردد . در مواردیکه تبدیل صورت می پذیرد، مقصد داده های تبدیل شده یک نرم افزار دیگر بوده در صورتیکه در زمان نشر ، کاربران (انسان) مقصد نهائی اطلاعات می باشند. تبدیل با نمایش و تبدیل بدون نمایش گزینه هائی متفاوت بمنظور شناخت مفهوم نشر اطلاعات است . در زمان نشر اطلاعات، نیاز به ارائه آنان بر روی کاغذ ( چاپ ) و یا وب خواهد بود . نشر اطلاعات بر روی کاغذ، مستلزم عملیات بمراتب پیچیده تری خواهد بود . در این حالت خاص ، کاربران دارای انتظار بالائی در رابطه با کیفیت می باشند. XSL FO ، امکانی بمنظور تعریف یک مدل مبتنی بر XML از یک فایل چاپی بمنظور نمایش با کیفیت بالا بر روی صفحات نمایشگر و یا کاعذ است . نشر اطلاعات بر روی وب دارای چالش های بمراتب کمتری نسبت به کاغذ است . در این مدل خاص، صرفا” می بایست داده ها به Html تبدیل و در ادامه مرورگرها مسئولیت ارائه اطلاعات را با فرمت تعریف شده بر عهده خواهند گرفت . تبدیل یک سند XML به Html ، یکی از متداولترین کاربردهای XSLT در حال حاضر است . در این رابطه دو مرحله عملیات دنبال خواهد شد : در اولین مرحله، داده ها به یک مدل مبتنی بر XML که از لحاظ ساختاری شباهت زیادی را با سند Html مقصد دارد ، تبدیل و در دومین مرحله ، ساختار مشخص شده ، با تاکید بر امکانات Html نمایش داده خواهد شد .