samanvilli
16-01-2008, 01:27
از کلمات eXtensible Stylesheet Language :Transformation اقتباس و زبانی برای تبديل يک سند 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
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 بوده ولی دقيقا" مشابه آن نيست .