ده نکته در رابطه با XSL





تکنولوژی XSL ، از CSS)Cascading Style Sheets) اقتباس شده است . CSS از يک Stylesheet بمنظور فرمت يک فايل HTML استفاده می نمايد .XSL و CSS در موارد متعددی با يکديگر تفاوت دارند. CSS ، امکان تعريف رنگ ها ، مشخص نمودن زمينه ها ، نوع فونت ها و ... را برای فايل های مبتنی بر Html فراهم می نمايد. XSL امکان تبديل يک فايل XML را به يک فايل Html ( و يا ساير فرمت های دلخواه نظير متن ) فراهم می نمايد. در اين مقاله ده نکته مهم در رابطه با تکنولوژی XSL بيان می گردد .

نکته اول:

همزمان با ارائه تکنولوژی XML توسط کنسرسيوم وب ، تکنولوژی XSLT)Extensible StyleSheet Language for Transformation )، برای تبديل يک سند به نوع ديگر ، مطرح گرديد. در زمان پياده سازی XSLT ، تکنولوژی ديگر و مرتبط با XML با نام XPointer نيز ارائه گرديد. XPointer ، مکانيزمی برای اشاره به بخش های متفاوت يک سند XML است . يکی ديگر از تکنولوژی های مرتبط با XML ، با نام XPath مطرح و ارائه گرديد. XSLT,XPointer و XPath جملگی تکنولوژی های مبتنی بر XML می باشند .

نکته دوم :

تکنولوژی XSLT ، مشابه يک زبان برنامه نويسی بوده و دارای توابع و متدهای فراوانی است که نمونه آنها را می توان در ساير زبان های برنامه نويسی مشاهده نمود. مثلا" XSLT دارای يک حلقه تکرار با نام for-each است .<XSL:for-each> .تکنولوژی فوق دارای برخی امکانات خاص ديگر است که نمونه آنها در ساير زبانهای برنامه نويسی وجود ندارد . مثلا" با استفاده از المان <XSL:script> ، می توان در هر مکان دلخواه ، اقدام به درج اسکريپت های مورد نظر نمود. برای درج محتويات يک فايل نيز می توان از المان <XSL:include> استفاده کرد . در صورتيکه XML را بمنزله داده ها در نظر بگيريم ، XSL ، زبان برنامه نويسی مناسب ، بمنظور انجام عمليات دلخواه بر روی داده ها است .

نکته سوم :

با اينکه XSLT مشابه يک زبان برنامه نويسی است ولی دارای يک تفاوت اساسی با زبانهای برنامه نويسی است . زبان XSLT مبتنی بر تمپليت ها می باشد . با استفاده از تمپليت ها می توان نحوه پردازش يک المان را مشخص نمود. قوانين تمپليت می توانند با اولويت های متفاوت و بصورت دلخواه تعريف و استفاده گردند. XSLT يک زبان تعريفی است . (در صورت مواجه شدن با يک الگو ، خروجی به چه صورت توليد می گردد ) . روش برنامه نويسی در XSLT ، مشابه زبانهای VB و يا جاوا نمی باشد . زبانهای فوق بصورت "رويه ای " می باشند . ( XSLT زبانی تعريفی است )

نکته چهارم :

در تمام فايل های XSL ، می بايست XSL namespace مشخص گردد. بدين ترتيب پارسر از نوع نسخه XSLT آگاهی پيدا خواهد کرد . برای مشخص نمودن namespace ، عموما" از عبارت زير استفاده می گردد. با معرفی namespace مربوطه ، می توان يک XSLT را بگونه ای طراحی و پياده سازی کرد که هم با نسخه های قبلی و هم با نسخه های بعدی ، سازگار باشد .

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

نکته پنجم :

همانگونه که اشاره گرديد ، XSLT يک زبان مبتنی بر تمپليت است . با تعريف يک تمپليت خاص و دلخواه ، عمليات تطبيق آن با اطلاعات موجود در فايل XML انجام خواهد شد. با توجه به اينکه تکنولوژی XSLT از تمپليت ها استفاده می نمايد ، هر فايل XSL می بايست دارای حداقل يک تمپليت تعريف شده باشد . تمپليت تعريف شده عموما" بصورت زير است :

< xsl:template match ="/" >

ريشه تمپليت شامل عبارت "/" = match می باشد ( ريشه سند XML است ) . در صورتيکه المان ريشه در سند XML با نام PEOPLE باشد ، عبارت فوق بصورت " match="PEPOLE ، خواهد بود . تعداد تمپليت های موجود در XSLT دارای محدوديت نمی باشد .

نکته ششم :

در زمان انجام عمليات در XSLT ، محدوده مورد نظر برای يک پرسو جو (query) ، گره (node ) در حال پردازش است . بنابراين در تمپليت "/" = xsl:template match،محدوده عملياتی ريشه سند XML است . زمانيکه با استفاده از xsl:for-each در يک حلقه تکرار مستقر می گرديم ،محدوده عملياتی شامل هر يک از گره هائی خواهد بود که در حلقه ايجاد می گردند . " محدوه عملياتی " (Context) ، يکی از مشخصه ها ی مهم تکنولوژی XPath است . يک برنامه XSLT بسيار مشابه برنامه ای خود بازگشتی بوده ( دارای چندين حلقه تکرار است ) و بدفعات از کدهای موجود در تمپليت استفاده خواهد شد .

نکته هفتم:

" مکان " (Location) ، يکی از مشخصه های مهم XPath است . مثلا" / ، بمنظور انتخاب المان ريشه در سند جاری و يا گره موجود در محدوده عملياتی است . article/ ، باعث انتخاب المان "article" که خود فرزند ريشه است ، می گردد . x/article ، باعث انتخاب تمام المان های "article" که فرزند x می باشند ، خواهد شد . آدرس PERSON/PEOPLE ، باعث انتخاب تمام المان های PEPOLE که ريشه آنان PERSON است ، می گردد .

نکته هشتم :

آدرس دهی مبتنی بر مکان ، امکان استقرار بر روی گره های مورد نظر برای پردازش را فراهم می نمايد .مثلا" با معرفی آدرس PEPOLE/PERSON امکان يافتن تمام المان های PERSON در المان PEPOLE فراهم می گردد . با استفاده از مسيريابی مبتنی بر مکان ، می توان موقعيت خود را در سند XML تغيير و بسمت بالا و يا پائين حرکت کرد . برای يافتن تمام المان های PERSON با عمق دلخواه ( فاصله المان تا ريشه ) و ريشه PEOPLE از آدرسی مشابه PERSON//PEOPLE / استفاده می گردد .

نکته نهم :

تکنولوژی XPath ، الگوهای مناسب برای فيلتر نمودن داده ها را با استفاده از امکاناتی نظير AND, + - > <=, mod ، فراهم می نمايد . مثلا" [" article[author="Ali" and author="Reza، گره های article را که نام author آنان Ali و Reza است برمی گرداند . XPath دارای توابعی نظير : Count,position,substring و sum است . مثلا" عبارت زير ،باعث برگرداندن مقدار Total Price می گردد . در مثال فوق از تابع sum برای محاسبه مجموع قيمت های ذخيره شده توسط المان price ، استفاده شده است .. تکنولوژی XSLT و XPath عموما" در کنار يکديگر استفاده می گردند .

<p>Total Price = <xsl:value-of select="sum(//price)"/></p>

نکته دهم :

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