جمعه, ۲۰ مهر, ۱۴۰۳ / 11 October, 2024
مجله ویستا

XSLT چیست ؟


XSLT  چیست ؟
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 ۲۰۰۰ امکان استفاده از پرس و جو های مبتنی بر XPath را حمایت می نماید.●پردازنده XSLT
مهمترین رسالت پردازنده XSLT ، بکارگیری یک XML stylesheet در رابطه با یک سند XML و ایجاد( تولید ) خروجی مناسب است . لازم به یادآوری است که هر یک از موارد اشاره شده ، بمنزله یک برنامه XML بوده و بدیهی است که ساختار هر یک از آنها یک درخت باشد . عملکرد پردازنده XSLTوابسته به وجود درخت های فوق است. پردازنده های متعددی در رابطه با XSLT نظیر Saxon, xt, MSXML۳ وجود دارد . پردازنده های فوق را می توان بصورت رایگان تهیه نمود .
▪پردازنده saxo قادر به تبدیل سند 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، از کلمات 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 ۲۰۰۰ امکان استفاده از پرس و جو های مبتنی بر XPath را حمایت می نماید.
●پردازنده XSLT
مهمترین رسالت پردازنده XSLT ، بکارگیری یک XML stylesheet در رابطه با یک سند XML و ایجاد( تولید ) خروجی مناسب است . لازم به یادآوری است که هر یک از موارد اشاره شده ، بمنزله یک برنامه XML بوده و بدیهی است که ساختار هر یک از آنها یک درخت باشد . عملکرد پردازنده XSLTوابسته به وجود درخت های فوق است. پردازنده های متعددی در رابطه با XSLT نظیر Saxon, xt, MSXML۳ وجود دارد . پردازنده های فوق را می توان بصورت رایگان تهیه نمود .
▪پردازنده saxo قادر به تبدیل سند 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 و XSL
آغاز حیات XSLT ، از یک زبان بزرگتر با نام XSL همراه بوده است . همانگونه که از نام زبان فوق مشخص است ، XSL ، با هدف تعریف نحوه فرمت سندهای XML ، بمنظور نمایش بر روی صفحه نمایشگر، کاغذ و سایر موارد ، طراحی و عرضه شده است . ارائه یک سند XML مستلزم تحقق دو فرآیند متمایز است . در اولین فرآیند، می بایست با انجام عملیات متفاوت نظیر انتخاب ، گروه بندی و ذخیره المان ها ، یک تبدیل ساختاری در سند ایجاد گردد . در دومین فرآیند ، می بایست ماحصل عملیات انجام شده بر روی المان ها با فرمت دلخواه در خروجی ( مثلا" نمایشگر ) نمایش داده شود . فرآیندهای فوق کاملا" از یکدیگر مستقل بوده و بر همین اساس XSL به دو بخش مجزاء تفسیم شده است: XSLT برای تعریف و انجام تبدیلات و XSL بمنظور تعریف نحوه فرمت و قالب نمایش ( ارائه ) اطلاعات . ( ویژگی فوق را XSL-FO نیز می گویند ) . (XSL Formatting Objects) . برای آگاهی از مشخصات و مستندات مربوط به XSL-FO می توان به آدرس http://www.w۳.org/TR/xsl مراجعه کرد. XSLT می بایست دارای قابلیت ها ی خاصی بمنظور تولید خروجی مورد نظر باشد . XSL-FO ، امکانات متعدد و مناسبی در رابطه با ایجاد خروجی با کیفیت بالا را فراهم می نماید. اغلب پیاده کنندگان نرم افزار صرفا" تمایل به تبدیل یک سند XML به Html را داشته تا زمینه استفاده فراگیر نتایج در انواع مرورگرها فراهم گردد . در برخی حالات از امکانات CSS)Cascading style sheets) نیز بهمراه XSLT استفاده می شود .
●XSLT و XPath
در زمان پیاده سازی XSLT ، برخی تعارضات بین گرامر عبارات استفاده شده در XSLT (بمنظور انتخاب بخش های خاصی از یک سند) و زبان XPointer ( بمنظور ارتباط یک سند با سند دیگر) بروزکرد . بمنظور ممانعت از داشتن دو زبان متفاوت عبارات که با یکدیگر overlap دارند ، کمیته های XSLT و XPointer کنسرسیوم وب ، تصمیم به ترکیب توان آنها با یکدیگر و تعریف یک زبان جدید با نام XPath نمودند . نسخه شماره یک XPath ، همزمان با ارائه XSLT نیز عرضه گردید ( شانزدهم نوامبر سال ۱۹۹۹ ) .
XPath ، بعنوان یک زبان زیرمجموعه در یک XSLT stylesheet ایفای وظیفه می نماید . یک عبارت XPath ، ممکن است بمنظور انجام یک محاسبات عددی و یا عملیات بر روی رشته ها و یا بررسی شرایط منطقی استفاده گردد . ،XPath در اغلب حالات بمنظور مشخص نمودن بخش های متفاوت یک سند ورودی که قصد انجام پردازش بر روی آن وجود دارد استفاده می گردد . مثلا" دستورالعمل زیر قیمت میانگین را برای تمام کتاب های موجود در یک سند ورودی محاسبه می نماید .
<xsl:value-of select="sum(//book/@price) div count(//book)"/>
در مثال فوق ، المان <xsl:value-of> یک دستورالعمل تعریف شده در XSLT است . دستورالعمل فوق ، باعث نوشتن یک مقدار در سند خروجی می گردد . خصلت select ، یک عبارت مبتنی بر XPath است . عبارت فوق، مسئول محاسبه مقداری است که می بایست در خروجی نمایش داده شود . در این مثال خاص ، مجموع خصلت های price مربوط به تمام المان های <book> محاسبه و بر تعداد المان های موجود <book> تقسیم تا معدل مربوطه محاسبه گردد .
تفکیک XPath و XSLT از یکدیگر منطقی بنظر می آید ولی در مواردی خاص تقسیم بندی و تمایز انجام شده باعث بروز مسائلی می گردد .در برخی حالات ، تشخیص اینکه کدام سند می بایست خوانده شده تا پاسخ مناسب در رابطه با یک سوال خاص داده شود، مشکل خواهد بود . مثلا" یک عبارت XPath می تواند شامل یک مرجع به متغیری باشد ، ولی ایجاد و مقدار دهی اولیه آن از وظایف XSLT است . جایگاه تعریف یک تابع در Xpath و XSLT یکی دیگر از مسائل مربوط به تفکیک دو تکنولوژی فوق است . عبارات XPath قادر به فراخوانی توابع می باشند ( در این راستا مجموعه گسترده ای از توابع استادندارد تعریف شده است ) . برخی از آنان نظیر string-lenght در عبارات XPath تعریف شده در صورتیکه توابعی دیگر که عملکرد آنها در ارتباط با تعاریف XSLT است (نظیر key ) ، در مشخصه XSLT تعریف می گردند . اغلب XSLT و XPath در کنار یکدیگر استفاده می گردند . فراموش نکنیم که امکان استفاده از XPath بصورت مستقل و بمنظور انجام عملیات متفاوتی نظیر تعریف ابرلینک های موجود در اسناد و .... نیز وجود دارد .
●XSLT و XML
XSLT ، ابزاری برای تبدیل اسناد XML است . در بخش اول این مقاله ، به ضرورت های تبدیل اشاره گردید. در این بخش لازم است به بررسی ارتباط دو تکنولوژی فوق با نگرشی عمیق تر ، پرداخته گردد . مفاهیم XML namespace و XML information set از جمله مواردی می باشند که زمینه تعامل ارتباطی بین XML و XSLT را فراهم می نمایند . در ادامه هر یک از موارد فوق توضیح داده می شود :
●XML namespace
در طراحی XSLT بر نقش مهم و کلیدی XML namespace در استاندارد XML توجه جدی شده است . بنابراین زمانیکه استاندارد XSLT به یک سند XML مراجعه می نماید ، عملا" مشخصات XML namespace نیز مورد توجه قرار گرفته شده است . مشخصات و استانداردهای مربوط به namespace را می توان در آدرس http://www.w۳.org/TR/REC-xml-names مشاهده نمود .
Namespace دارای نقشی حیاتی در XSLT است . تکنولوژی فوق ،امکان ترکیب تگ هائی از سند های XML مشابه با معانی متفاوت را فراهم می نماید . مثلا" ممکن است در یک سند XML ، المان <table> نشاندهنده یک بردار دو بعدی شامل مقایر متفاوت داده بوده در صورتیکه در سند دیگر، المان <table> نشاندهنده بخشی از یک مبلمان باشد . Namespace توسط یک URI) Unique Resource Identifier) مشخص می گردد. بدین منظور از روش های متفاوتی استفاده می گردد. مثلا" در یک مدل، از آدرس مشابه یک URL معمولی استفاده می گردد:(http://www.yourcomany.com ) . در روش دیگر در برخی از اصطلاحات XML ( نظیر http://www.biztalk.org) استفاده می گردد ، URN است . ( مثلا" urn:java:com:ic۱.saxson ) . جزئیات مربوط به URI مهم نبوده ولی همواره می بایست به این مسئله توجه گردد که نام در نظر گرفته شده منحصر بفرد باشد . یکی از روش های مناسب تحقق وضعیت فوق، استفاده از URL مربوط به سایت خود می باشد . لازم به توضیح است که موضوع فوق بدین معنی نخواهد بود که می بایست بر روی وب سایت ، آیتمی بمنظور اشاره کردن به آن ، وجود داشته باشد . URI در حقیقت رشته ای است که بمنظور تمایز با تعاریف انجام شده توسط سایر افراد انتخاب می گردد .
با توجه به اینکه رشته های URI اغلب طولانی و از کاراکترهای خاصی نظیر "/" استفاده می نمایند، از آنها بصورت کامل همراه اسامی المان ها و خصلت ها استفاده نمی گردد . بدین منظور اغلب از یک نام مستعار کوچک استفاده می شود . نام مستعار، بصورت پیشوند در کنار اسامی المان ها و خصلت ها استفاده می شود . نام در نظرگرفته شده برای پیشوند مهم نبوده و هر نامی را می توان انتخاب کرد . بدین ترتیب نام واقعی هر المان و یا خصلت ، از طریق URI مربوط به namespace و نام محلی آن ( آن بخش از نام که بعد از پیشوند قرار می گیرد ) مشخص خواهد شد . مثلا" می توان با استفاده از پیشوند xsl به namespace مربوط به http://www.w۳.org/۱۹۹۹/XSLT/Transform اشاره کرد . برای اسامی المان ها ، می توان یک URI پیش فرض را تعریف و آن را به اسامی المان غیرپیشوندی مرتبط نمود . namespace پیش فرض URI به اسامی خصلت های غیر پیشوندی نسبت داده نخواهد شد . تعریف یک پیشوند namespace بصورت زیر است :
xmlns:prefix = "namespace-URI"
عبارت فوق، یک پیشوند namespace را تعریف ، که می توان آن را بهمراه نام المان مربوطه و یا نام خصلت موجود در المان استفاده کرد . namespace پیش فرض که برای المان ها استفاده می گردد نیازی به داشتن پیشوند نداشته ( مورد فوق در رابطه با خصلت ها صدق نمی کند ) و بصورت زیر تعریف می گردد :
xmlns = "namespace-URI"
پردازش یک سند XML توسط XSLT متاثر از واقعیت های موجود در namespace خواهد بود .
●XML information set
XSLT بمنظور انجام پردازش های ضروری بر روی اطلاعات موجود در یک سند XML ، طراحی و با سند کاری نخواهد داشت . این بدان معنی است که ، یک برنامه نویس XSLT قادر به دریافت یک نمایش شبه درختی از یک سند مبداء بوده که برخی از بخش های آن قابل مشاهد و برخی دیگر غیرقابل مشاهده خواهند بود. مثلا"می توان اسامی و مقدار خصلت ها را مشاهده نمود ولی امکان مشاهده اینکه یک خصلت در یک کوتیشن و یا دو کوتیشن استفاده شده ، وجود نخواهد داشت . همچنین امکان مشاهده نظم و اولویت خصلت ها و نحوه نگارش آنها وجود نخواهد داشت .تلاش های متعددی بمنظور تعریف اطلاعات مورد نیاز برای مشخص نمودن "خوش شکل " بودن یک سند XML انجام شده است . در بیست و چهارم اکتبر ۲۰۰۱ ،کنسرسیوم وب محموعه اطلاعات مورد نیاز و تعریف شده در رابطه با یک سند XML را استاندارد و پیشنهاد داده است . مشخصات فوق را می توان از طریق آدرس http://www.w۳.org/TR/xml-infoset مشاهده کرد . این مشخصات ، شامل مجموعه ای از تعاریف مورد نیاز سایر تکنولوژی هائی است که نیازمند دستیابی به اطلاعات موجود در یک سند XML می باشند . یک سند XML دارای مجموعه ای از اطلاعات ضروری بوده که "خوش شکل " بودن آن را تضمین و سایر تکنولوژی های مربوطه با مراجعه به اطلاعات فوق قادر به برداشت مناسب از یک سند XML و انجام عملیات مربوط به خود خواهند بود . مجموعه اطلاعات یک سند XML شامل تعدادی از آیتم های اطلاعاتی است . مجموعه اطلاعات مربوط به یک سند XML " خوش شکل " ، حداقل دارای یک آیتم اطلاعاتی است . یک آیتم اطلاعاتی بخش خاصی از یک سند XML را تشریح و شامل مجموعه ای از خصلت های مربوط به خود است .
●XSL و CSS
چرا دو زبان ( XSL و CSS ) مختص stylesheet وجود دارد؟ منظور از XSL ، تکنولوژی XSLT بهمراه XSL Formating objects است . مهمترین هدف CSS ، تبین قوانین لازم بمنظور نمایش عناصر موجود در یک سند Html می باشد . در این راستا امکان استفاده از CSS بهمراه سندهای XML نیز وجود دارد . با توجه به ویژگی های خاص نمایش در رابطه با یک سند XML ، بکارگیری تکنولوژی CSS محدودیت های خاصی را بدنبال خواهد داشت . در این زمینه می توان به موارد زیر اشاره کرد :
▪CSS ، قادر به ثبت ( ذخیره ) المان های موجود در یک سند XML نمی باشد .
▪CSS ، قادر به افزودن متن و یا تصاویر نمی باشد .
▪CSS ، قادر به تصمیم گیری در رابطه با اینکه چه المانی می بایست نمایش داده شده و یا اینکه چه المانی می بایست حذف گردد،نخواهد بود .
▪CSS ، قادر به محاسبه مجموع و یا معدل دنباله ای از اعداد نمی باشد .
▪CSS ، صرفا" در زمانیکه ساختار سند مبداء شباهت زیادی به شکل نهائی نمایش دارد ، مفید و قابل استفاده است . صرفنظر از محدودیت های فوق ، استفاده از CSS ساده بوده و منابع زیادی را بر روی ماشین بخود اختصاص نخواهد داد . ( مقرون بصرفه از بعد در اختیار گرفتن منابع ) . با توجه به عدم ذخیره سازی سند ، ضرورتی به ایجاد یک مدل شبه درختی برای نمایش و ارائه سند در حافظه نبوده و بلافاصله پس از دریافت اولین متون موجود ، فرآیند نمایش آنها آغاز می گردد .
در برخی حالات ، مناسب است که از XSLT و CSS در کنار یکدیگر استفاده نمود. مثلا" با استفاده از XSLT می توان یک مدل قابل قبول از سند مورد نظر را که قصد نمایش نهائی آن را داریم ، ( در مدل فوق متن ها بدرستی و با اولویت مناسب مستقر شده اند) ایجاد و در ادامه با استفاده از CSS ، عملیات لازم در رابطه با انتخاب نوع فونت ، اندازه فونت ، رنگ ها و ... را انجام داد . در این راستا امکان پردازش XSLT بر روی سرویس دهنده و پردازش CSS ، بر روی سرویس گیرنده وجود خواهد داشت . یکی از مزایای رویکرد فوق ، کاهش حجم داده های ارسالی از طریق خط ارتباطی بوده و بدین ترتیب مدت زمان پاسخ به کاربران، بهبود پیدا خواهد کرد .
منبع : شرکت سخاروش