XSLT چيست ؟ (2)
بررسی جايگاه تکنولوژی XSLT در بين خانواده بزرگ تکنولوژی های مرتبط با XML
XSLT و XSL
XSLT و XPath
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
XML namespace
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:ic1.saxson) . جزئيات مربوط به URI مهم نبوده ولی همواره می بايست به اين مسئله توجه گردد که نام در نظر گرفته شده منحصر بفرد باشد . يکی از روش های مناسب تحقق وضعيت فوق، استفاده از URL مربوط به سايت خود می باشد . لازم به توضيح است که موضوع فوق بدين معنی نخواهد بود که می بايست بر روی وب سايت ، آيتمی بمنظور اشاره کردن به آن ، وجود داشته باشد . URI در حقيقت رشته ای است که بمنظور تمايز با تعاريف انجام شده توسط ساير افراد انتخاب می گردد .
با توجه به اينکه رشته های URI اغلب طولانی و از کاراکترهای خاصی نظير "/" استفاده می نمايند، از آنها بصورت کامل همراه اسامی المان ها و خصلت ها استفاده نمی گردد . بدين منظور اغلب از يک نام مستعار کوچک استفاده می شود . نام مستعار، بصورت پيشوند در کنار اسامی المان ها و خصلت ها استفاده می شود . نام در نظرگرفته شده برای پيشوند مهم نبوده و هر نامی را می توان انتخاب کرد . بدين ترتيب نام واقعی هر المان و يا خصلت ، از طريق URI مربوط به namespace و نام محلی آن ( آن بخش از نام که بعد از پيشوند قرار می گيرد ) مشخص خواهد شد . مثلا" می توان با استفاده از پيشوند xsl به namespace مربوط به http://www.w3.org/1999/XSLT/Transform اشاره کرد . برای اسامی المان ها ، می توان يک URI پيش فرض را تعريف و آن را به اسامی المان غيرپيشوندی مرتبط نمود . namespace پيش فرض URI به اسامی خصلت های غير پيشوندی نسبت داده نخواهد شد . تعريف يک پيشوند namespace بصورت زير است :
xmlns:prefix = "namespace-URI" |
عبارت فوق، يک پيشوند namespace را تعريف ، که می توان آن را بهمراه نام المان مربوطه و يا نام خصلت موجود در المان استفاده کرد . namespace پيش فرض که برای المان ها استفاده می گردد نيازی به داشتن پيشوند نداشته ( مورد فوق در رابطه با خصلت ها صدق نمی کند ) و بصورت زير تعريف می گردد :
xmlns = "namespace-URI" |
پردازش يک سند XML توسط XSLT متاثر از واقعيت های موجود در namespace خواهد بود .
XML information set
XSL و CSS
• CSS ، قادر به ثبت ( ذخيره ) المان های موجود در يک سند XML نمی باشد .
• CSS ، قادر به افزودن متن و يا تصاوير نمی باشد .
• CSS ، قادر به تصميم گيری در رابطه با اينکه چه المانی می بايست نمايش داده شده و يا اينکه چه المانی می بايست حذف گردد،نخواهد بود .
• CSS ، قادر به محاسبه مجموع و يا معدل دنباله ای از اعداد نمی باشد .
CSS ، صرفا" در زمانيکه ساختار سند مبداء شباهت زيادی به شکل نهائی نمايش دارد ، مفيد و قابل استفاده است .صرفنظر از محدوديت های فوق ، استفاده از CSS ساده بوده و منابع زيادی را بر روی ماشين بخود اختصاص نخواهد داد . ( مقرون بصرفه از بعد در اختيار گرفتن منابع ) . با توجه به عدم ذخيره سازی سند ، ضرورتی به ايجاد يک مدل شبه درختی برای نمايش و ارائه سند در حافظه نبوده و بلافاصله پس از دريافت اولين متون موجود ، فرآيند نمايش آنها آغاز می گردد .
در برخی حالات ، مناسب است که از XSLT و CSS در کنار يکديگر استفاده نمود. مثلا" با استفاده از XSLT می توان يک مدل قابل قبول از سند مورد نظر را که قصد نمايش نهائی آن را داريم ، ( در مدل فوق متن ها بدرستی و با اولويت مناسب مستقر شده اند) ايجاد و در ادامه با استفاده از CSS، عمليات لازم در رابطه با انتخاب نوع فونت ، اندازه فونت ، رنگ ها و ... را انجام داد . در اين راستا امکان پردازش XSLT بر روی سرويس دهنده و پردازش CSS ، بر روی سرويس گيرنده وجود خواهد داشت . يکی از مزايای رويکرد فوق ، کاهش حجم داده های ارسالی از طريق خط ارتباطی بوده و بدين ترتيب مدت زمان پاسخ به کاربران، بهبود پيدا خواهد کرد .
منبع:http://article.mjsoft.ir
/س