ضرورت استفاده از XSLT و تبديل يک سنداز فرمتي به فرمت ديگر از کلمات 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 و 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> ، يک قانون تمپليت را تعريف که بر اساس آن نحوه برخورد با بخش هاي خاص سند مبداء در هنگام پردازش، تبين مي گردد . خصلت "/" مشخص مي نمايد که قانون فوق از ابتداي سند مبداء اعمال خواهد شد . در حقيقت، عبارت فوق يک عبارت مبتني بر 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> را مي توان حذف نمود . در اين حالت 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> |
منبع:http://article.mjsoft.ir
/س