عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
XSLT چيست ؟ ( بخش دوم ) |
مديريت وب |
14119 |
63 |
5 |
با توجه به جایگاه داده در عصر حاضر و لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و خدمات خود را از طریق سایت www.fabak.ir به مخاطبان محترم عرضه می نماید
 |
XSLT چيست
XSLT چيست ؟ (
بخش دوم )
در
بخش اول
اين مقاله، مفاهيم اوليه
XSLT و ضرورت های تبديل نوع يک سند XML
به نوع ديگر اشاره و از اين رهگذر جايگاه XSLT تبين
گرديد . در بخش دوم ، به بررسی جايگاه
تکنولوژی XSLT در بين خانواده بزرگ تکنولوژی های مرتبط با
XML خواهيم پرداخت . همانگونه که قبلا" اشاره گرديد
،XSLT
،توسط کنسرسيوم
وب عرضه و بسرعت با استانداردهای موجود در خانواده بزرگ XML
همدست گرديد. در ادامه به بررسی ارتباط موجود بين XSLT
و ساير استانداردهای موجود در زمينه XML
، خواهيم پرداخت .
XSLT و XSL
آغاز حيات XSLT ،
از يک زبان بزرگتر با نام XSL همراه بوده است . همانگونه که
از نام زبان فوق مشخص است ، XSL
، با هدف تعريف نحوه فرمت سندهای
XML ، بمنظور نمايش بر
روی صفحه نمايشگر،
کاغذ و ساير موارد
، طراحی و عرضه شده است .
ارائه يک سند XML مستلزم تحقق دو فرآيند متمايز است .
در اولين فرآيند، می بايست با
انجام عمليات متفاوت نظير انتخاب ، گروه بندی
و ذخيره المان ها ، يک تبديل ساختاری در سند
ايجاد گردد . در دومين فرآيند ، می بايست ماحصل عمليات انجام شده بر روی المان ها
با فرمت دلخواه در خروجی ( مثلا" نمايشگر ) نمايش
داده شود . فرآيندهای فوق
کاملا" از يکديگر مستقل بوده و بر همين اساس
XSL به دو بخش مجزاء تفسيم شده است:
XSLT برای تعريف و انجام تبديلات و XSL
بمنظور تعريف نحوه فرمت و قالب نمايش ( ارائه ) اطلاعات . ( ويژگی فوق را
XSL-FO نيز می گويند ) .
(XSL Formatting Objects)
. برای آگاهی از مشخصات و مستندات مربوط به XSL-FO
می توان به آدرس http://www.w3.org/TR/xsl
مراجعه کرد. XSLT می بايست دارای قابليت ها ی خاصی
بمنظور توليد خروجی مورد نظر باشد . XSL-FO ،
امکانات متعدد و مناسبی در رابطه با ايجاد خروجی با کيفيت بالا را فراهم می
نمايد. اغلب پياده کنندگان نرم افزار صرفا" تمايل به تبديل يک سند XML
به Html را داشته تا زمينه استفاده فراگير نتايج در
انواع مرورگرها فراهم گردد . در برخی حالات از امکانات CSS)Cascading
style sheets) نيز بهمراه XSLT استفاده می
شود .
XSLT و XPath
در زمان پياده سازی XSLT
، برخی تعارضات بين گرامر عبارات
استفاده شده در XSLT (بمنظور انتخاب بخش های خاصی از يک سند)
و زبان XPointer ( بمنظور ارتباط يک سند با سند ديگر)
بروزکرد
. بمنظور
ممانعت از داشتن دو زبان متفاوت
عبارات که با يکديگر overlap
دارند ، کميته های
XSLT و XPointer
کنسرسيوم وب ، تصميم به
ترکيب توان
آنها با يکديگر و تعريف يک زبان جديد با نام XPath
نمودند . نسخه شماره يک XPath ،
همزمان با ارائه XSLT
نيز عرضه گرديد ( شانزدهم نوامبر سال 1999
) .
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.w3.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: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 پيش فرض که برای المان ها استفاده می گردد نيازی
به داشتن پيشوند
نداشته ( مورد فوق در رابطه با خصلت ها صدق نمی کند )
و بصورت زير تعريف می گردد :
پردازش يک سند XML
توسط XSLT متاثر از واقعيت های موجود در namespace
خواهد بود .
XML information set
XSLT بمنظور
انجام پردازش های ضروری بر روی اطلاعات
موجود در يک سند
XML ، طراحی و با سند کاری نخواهد داشت . اين بدان
معنی است که
، يک برنامه نويس XSLT
قادر به دريافت يک نمايش
شبه درختی از يک سند مبداء
بوده که برخی از بخش های آن قابل مشاهد و برخی ديگر
غيرقابل مشاهده
خواهند بود. مثلا"می توان اسامی و مقدار خصلت ها را مشاهده
نمود ولی امکان مشاهده اينکه يک خصلت در يک کوتيشن و يا دو کوتيشن استفاده شده
،
وجود نخواهد داشت .
همچنين امکان مشاهده نظم و اولويت خصلت ها
و نحوه نگارش آنها وجود نخواهد داشت .تلاش های متعددی بمنظور
تعريف اطلاعات مورد نياز برای مشخص نمودن "خوش شکل " بودن يک سند XML
انجام شده است . در بيست و چهارم اکتبر 2001
،کنسرسيوم وب محموعه اطلاعات مورد نياز و تعريف شده در رابطه با
يک سند XML را استاندارد و
پيشنهاد داده است . مشخصات فوق را می توان از طريق آدرس
http://www.w3.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
، بر روی سرويس گيرنده وجود
خواهد داشت . يکی از مزايای رويکرد فوق
، کاهش حجم داده های ارسالی از طريق خط
ارتباطی بوده و بدين ترتيب مدت زمان پاسخ به کاربران،
بهبود پيدا خواهد کرد .
در بخش سوم اين مقاله
به نحوه شکل گيری و طراحی
XSLT اشاره و جايگاه آن بعنوان يک زبان برنامه نويسی
تبين خواهد شد .