XML   

از دانشنامه جوملا فارسی - مامبو فارسی
پرش به: ناوبری، جستجو

محتویات

XML چيست و چرا دارای اهميت فراوان است ؟

مقدمه

تاکنون مقالات فراوانی در باره XML نوشته شده است، اغلب مطالب عنوان شده صرفاً بر روی يک موضوع خاص تمرکز داشته و از زاويه‌ای کاملاً اختصاصی و در عين حال محدود به بررسی تکنولوژی XML پرداخته و بندرت به موارد اساسی و خانواده بزرگ استاندارهای XML اشاره شده است. در اين مقاله عناصر کليدی مرتبط با تکنولوژی XML تشريح و ارتباط آنها تبين و جايگاه هر يک از آنها برای پياده کنندگان و طراحان برنامه‌های اطلاعاتی تشريح می‌گردد. پس از مطالعه اين مقاله، خوانندگان با استانداردهای کليدی: XML,XSL,XML-Schema,DOM,SAX,Namespace,XLink بهمراه تکنولوژی‌های مربوطه آشنا خواهند شد.

تعريف اصطلاحات و واژه‌ها

در ابتدا لازم است با کلمات تشکيل دهنده XML يعنی Extensible ، Markup و Language آشنا شويم.Markup ، واژه‌ئی برای متاديتا است. متاديتا، اطلاعاتی در رابطه با اطلاعات است. قدمت استفاده از Markup به قبل از کامپيوتر بر می‌گردد. مثلاً در دنيای نشر از علائم خاصی در متن‌های ويرايش شده استفاده تا به پردازنده متن (انسان و يا ماشين) اعلام شود، چه نوع عملياتی را در رابطه با اطلاعات می‌بايست انجام دهد. HTML يکی از زبان‌های کلاسيک نشانه گذاری است. مثلاً با افزودن تگ "Bold" به مرورگر اعلام می‌شود که به چه صورت می‌بايست اطلاعات نمايش داده شوند.

زبان (Language) ، به مجموعه‌ای از کلمات معنی دار و با مفهوم که عده‌ای از آنها برای بيان خواسته‌های خود استفاده می‌نمايند، اطلاق می‌گردد. (مثلاً زبان فارسی و يا انگليسی)

با کنار هم قرار دادن دو واژه اشاره شده، با زبان نشانه گذاری مواجه خواهيم شد. زبان نشانه گذاری، به مجموعه‌ای از کلمات معنی دار و با مفهوم که توسط عده‌ای (با آگاهی لازم انتخاب) استفاده می‌گردد، اطلاق می‌گردد. HTML، نمونه‌ای مناسب در اين زمينه است. تمام افرادی که از تگ‌های HTML استفاده می‌نمايند، بدرستی نسبت به مفهوم و جايگاه هر يک از تگ‌ها آشنائی داشته و با آگاهی کامل آنها را برای بيان خواسته‌های خود استفاده می‌نمايند. مثلاً مشخص است که استفاده از تگ "H1" چه نوع پيامدهائی را بدنبال خواهد داشت. تگ فوق، توسط مولفين صفحات وب آگاهانه انتخاب می‌گردد و مرورگرها نيز متناسب با تعاريف از قبل مشخص شده، واکنش مناسب خود را در رابطه با نحوه نمايش انجام خواهند داد. يک زبان بسط پذير (Extensible)، زبانی است که دارای مکانيزم لازم برای افزودن کلمات بگونه‌ای است که توسط ساير استفاده کنندگان نيز قابل فهم باشد. در دنيای واقعی و در ارتباط با زبان‌های طبيعی ما هرگز شاهد چنين وضعيتی نخواهيم بود. (افزودن يک واژه با معنی مورد نظر خود و استفاده از واژه با همان معنی توسط ساير استفاده کنندگان) با توجه به تعاريف ارائه شده، يک زبان نشانه گذاری بسط پذير، می‌بايست يک زبان نشانه گذاری با قابليت افزودن کلماتی بيشتر باشد. در عمل زبان نشانه گذاری بسط پذير، به سيستمی برای تعريف تمام زبان‌های نشانه گذاری با قابليت توسعه وضعيت موجود، اطلاق می‌گردد.

SGML HTML و XML

سرچشمه XML : Standard Generalize Markup Language (GML)- بوده و در سال 1988 استاندارد شده است.

HTML- زبانی است که در ابتدا با استفاده از SGML تعريف گرديد. HTML يک زبان نشانه گذاری است، بنابراين انتظار داريم شامل مجموعه‌ای از تگ‌ها بمنظور کنترل قالب و رفتار اطلاعات در مستندات باشد. XML ، يک زبان نشانه گذاری مشابه HTML نمی‌باشد. XML، زيرمجموعه‌ای از SGML است (مکانيزمی برای تعريف زبان‌های نشانه گذاری).

XML همانند SGML يک زبان نشانه گذاری بسط پذير بوده اما بر خلاف SGML برای استفاده بر روی وب بهينه شده است.

مفاهيم اساسی

لازم است که مجدداً به اين نکته مهم اشاره گردد که XML، يک زبان نشانه گذاری نبوده و در مقابل مکانيزمی برای ايجاد زبان‌های نشانه گذاری اختصاصی است. XML، شامل مجموعه‌ای از استانداردهای متنوع با کاربردهای خاص است.

XML، يک زبان نشانه گذاری نبوده و در عين حال يک زبان برنامه نويسی هم نيست. از XML برای ارائه اطلاعات استفاده شده و بمنظور پردازش اطلاعات، می‌بايست برنامه‌هائی نوشته گردد.

از XML در موارد زير می‌توان استفاده کرد :

  • مبادله اطلاعات بين برنامه‌های نامتجانس، بنگاه‌های تجاری و بانک‌های اطلاعاتی
  • امکان فعال نمودن مدلی برای نمايش اطلاعات يکسان بر روی دستگاه‌های متفاوت با اهداف و خوانندگان گوناگون
  • يک قالب ذخيره سازی مناسب برای داده‌ها

استانداردهای خانواده بزرگ XML

از واژه XML اغلب برای بيان يک استاندارد بين المللی استفاده می‌گردد. در برخی حالات واژه فوق برای بيان تمام استانداردهای مرتبط با XML نيز استفاده می‌گردد. اکثر کاربران با استانداردهای XML سرو کار ندارند. استانداردهای موجود اغلب توسط افراديکه نرم افزار توليد و يا بر روی سندهای XML پردازشی را انجام می‌دهند، استفاده می‌گردد. شناخت استانداردهای موجود در اين زمينه مهم بوده و لازم است با جايگاه هر يک آشنا شويم. يکی از روش‌هائی که می‌توان استانداردهای موجود را بدرستی سازماندهی و بخاطر سپرد، توجه و تمرکز بر اهدافی است که آنها دنبال می‌نمايند. جدول زير استانداردهای موجود بهمراه اهداف و قابليت‌های هر يک را نشان می‌دهد.

تعريف يک زبان XML

XML

Namespaces

XML-Schemas

فرمت و نمايش سندهای XML

CSS (Cascading Style Sheets)

XSL (Extensible Style Language)

XSLT (XSL Transformations)

پياده سازی برنامه

DOM (Document Object Model)

SAX (Simple API for XML)

XSLT

مبادله اطلاعات بين سيستم‌ها

Such as:

SOAP (Simple Object Access Protocol)

SVG (Scalable Vector Graphics)

WML (Wireless Markup Language)

XCBL (XML Common Business Library)


تعريف زبان‌های XML

با استفاده از XML، می‌توان تگ‌های نشانه گذاری را تعريف که توسط مجموعه‌ای از مستندات که خصايص مشابهی را به اشتراک می‌گذارند، استفاده گردد. مثلاً مجموعه‌ای از پيام‌های تجارت الکترونيکی. مورد فوق اصطلاحاً document type ناميده می‌گردد. (مشابه يک کلاس در طراحی شی گراء).

يک Document instance، نوع خاصی از يک سند است. مثلاً يک ليست فروش خاص.

در پروژه‌های XML، در ابتدا Document types با توجه به اطلاعاتی که می‌بايست بر روی آنها عملياتی صورت پذيرد، طراحی و در ادامه با ايجاد نرم افزارهای لازم، اقدام به ايجاد و پردازش نمونه‌هائی از سند می‌گردد. XML مجموعه‌ای قدرتمند از بلاک‌های ساختمانی سطح پايين بمنظور طراحی Document types را ارائه می‌نمايد.

نمونه سند زير، شامل مجموعه‌ای اطلاعات از يک بانک اطلاعاتی شخصی است.

مثال : يک سند XML شامل اطلاعات شخصی

<source lang="php">

<personnel-data> <person ID="PE1"> <name> <first-name>Webmaster</first-name> <last-name>Admin</last-name> </name> <working-location office-id="OF1"/> <title>Web master and administrator</title> </person> <office ID="OF1"> <name>Head Office</name> <address>Iran Avenue</address> </office> </personnel-data>

</source>


سند فوق شامل چندين بلاک ساختمان اساسی XML است.

  • سند فوق، دارای المان‌هائی است که قابل مقايسه با اشياء در سيتستم شی گراء و يا فيلد در بانک‌های اطلاعاتی رابطه‌ای است. يک المان با تگ شروع، آغاز و با تگ پايان، خاتمه می‌يابد. بين دو تگ شروع و پايان هر نوع اطلاعاتی می‌تواند قرار گيرد.
  • يک المان می‌تواند دارای محتويات باشد. محتويات، متن موجود بين تگ‌های شروع و پايان است. مثلاً Webmaster و Admin بعنوان محتويات المان در مثال فوق مشاهده می‌گردند.
  • يک المان دارای خصلت است. خصلت، شامل اطلاعات تکميلی بوده که در بخش تگ شروع مربوط به المان بصورت: نام و مقدار قرار می‌گيرند. در مثال فوق ID و office-id ، بعنوان خصلت مطرح بوده و محتويات آنها PE1 و OF1 ، بعنوان مقادير خصلت در نظر گرفته می‌شوند.

يک المان می‌تواند تهی (Empty) باشد. در مثال فوق "Working-location" يک المان تهی است. معمولاً المان‌های تهی، بعنوان فضا نگهدارنده‌هائی برای خصلت‌ها می‌باشند.

  • المان‌ها می‌توانند شامل ساير المان‌ها باشند.

المان‌های تودرتو: از المان‌های تودر تو برای ارائه اطلاعات سريال (مجموعه‌ای از اشياء، سطرهائی از داده و يا ساير اطلاعات مورد نظر) استفاده گردد.

  • خصلت می‌تواند شامل ساير خصلت‌ها ويا المان‌ها باشد.
  • محتويات المان‌ها و يا مقادير خصلت‌ها، می‌توانند بعنوان يک اشاره گر به ساير آيتم‌های موجود در سند نيز ايفای وظيفه نمايند. بمنظور نيل به هدف فوق XML روش‌های متعددی را ارائه نموده است. مثلاً خصلت office-id با مقدار OF1 ، درون "working-location" به خصلت ID المان "office" اشاره می‌نمايد. اشاره گره‌های فوق مشخص می‌نمايند که محل کار شخص PE1 در OF1 است.

بلاک‌های ايجاد يک سند XMl در عين سادگی، دارای انعطاف و قدرت لازم بمنظور حمايت از روش‌های متفاوت مدل سازی اطلاعات می‌باشند: اشياء، شبکه‌ای، سلسله مراتبی، رابطه‌ای و ... خوش شکل (Well-Formed) و معتبر (Valid)

با استفاده از XML، می‌توان اقدام به ايجاد سندهای رسمی و غيررسمی نمود. در پروژه‌های کوچک و يا زمانيکه قصد نمونه سازی وجود داشته باشد، می‌توان با سرعت اقدام به ايجاد سندهای "خوش شکل" نمود. در پروژه‌های بزرگ و يا پروژه‌هائی که شامل سيستم‌های متعددی می‌باشند، سندهای معتبر ايجاد می‌گردد.

قوانين يک سند خوش شکل

● وجود صرفاً يک المان ريشه.

● هر المان غيرتهی دارای تگ‌های شروع و پايان است.

● تمام المان‌های می‌بايست با نظم خاصی تودرتو شده و هيچگونه تقابلی بين آنها وجود نداشته باشد. يک سند XML زمانی معتبر است که اولاً خوش شکل بوده و ثانياً: دارای يک Schema (پيش نويس) و يا DTD)Document Type Definition) باشد.

● سازگار با قوانين موجود در Schema.

پيش نويس‌ها (Schemas) باعث اعتبار و صحت يک سند XML می‌گردند.

واژه Schema، به قوانينی اطلاق می‌گردد که به مجموعه‌ای از سندهای با ساختار مشابه، نسبت داده می‌شود. واژه فوق مختص XML نبوده و در ساير موارد از واژه فوق نيز استفاده می‌گردد. در رابطه با XML قوانين موجود به موارد زير اشاره خواهند داشت:

● از چه المان‌ها و خصلت‌هائی استفاده شده است؟

● نحوه استقرار المان‌ها و خصلت‌ها به چه صورت است؟

● هر يک از المان‌ها و يا خصلت‌ها شامل چه نوع اطلاعاتی می‌توانند باشند.

XML استفاده از دو زبان

XML برای تعريف پيش نويس‌ها (Schemas) از دو زبان استفاده می‌نمايد: DTD و XML-Schema

DTD ، مکانيزمی برای تعريف پيش نويس‌ها بوده که در ابتدا بمنظور استفاده در SGML طراحی و در ادامه XML نيز از آن استفاده کرد. محوريت DTD بر سند استوار بوده و دارای امکانات و ويژگی‌های لازم نظير: نوع داده‌ها، دامنه‌ها و ... نمی‌باشد.

گرامر استفاده شده در DTD کاملاً اختصاصی بوده و ابزارهای اندکی بمنظور پردازش آنها وجود دارد.

XML-Schema ، يک استاندارد جديد بوده که مختص XML طراحی شده است. گرامر استفاده شده مبتنی بر XML است. تکنولوژی فوق بدرستی محدوديت‌های DTD را برطرف نموده و اکثر ابزارهای توليد شده توسط عرضه کنندگان معتبر، مجهز به تکنولوژی فوق می‌باشند. به افراديکه جديداً به دنيای XML وارد شده‌اند، توصيه می‌گردد که در صورت امکان گرامر DTD را فراموش و خود را با استاندارد XML-Schema وفق نمايند.

چه زمان اعتبار لازم است؟

سندهای "خوش شکل"، بسرعت آماده شده و بسادگی استفاده می‌گردند. تاکنون نرم افزارهای متعددی نوشته شده که در آنها از سندهای " خوش شکل"، استفاده شده است. با اين اوصاف، چه زمان می‌بايست از يک پيش نويس (Schema) رسمی استفاده کرد؟ در پاسخ به سوال فوق می‌توان گفت که "پيش نويس‌ها باعث ارائه صلاحيت لازم بمنظور پردازش‌های مبتنی بر داده‌ها می‌باشند. بدين ترتيب و در زمانيکه اطلاعات موجود در يک سند XML ، توسط يک پردازنده Schema ، پردازش می‌گردد، اطلاعاتی حذف و يا ناديده گرفته نخواهند شد. در اين راستا از پيش نويس‌های نوشته شده بمنظور : بررسی صحت محتويات، مقادير پيش فرض برای المان‌ها، ارائه کمک در زمان ويرايش يک سند XML ، ترجمه از يک فرمت XML به فرمت ديگر، استفاده می‌گردد.

در اين راستا، می‌توان کدهائی را نوشت که تمام عمليات فوق را انجام دهند ولی کدهای نوشته شده محدود به يک نوع سند خاص خواهند بود. اطلاعات موجود در پيش نويس اين امکان را فراهم می‌آورند، که با نوشتن يک پردازنده پيش نويس از آن در سندهای متفاوت بدون نياز به برنامه نويسی مجدد استفاده کرد. سندهای شامل پيش نويس، با يک فرمت استاندارد ايجاد و بسادگی امکان اشتراک آنها فراهم می‌گردد.

Namespace مشکل تصادم اسامی را برطرف می‌نمايند

در زمان عمليات بر روی سندها و برنامه‌های مبتنی بر XML ، بدفعات نياز به ترکيب دو سند مجزا و ايجاد سند جديد احساس خواهد شد. با انجام هدف فوق، با چالش‌های جدی در رابطه با تصادم (Conflict) اسامی برخورد خواهيم کرد : المان‌هائی که دارای تگ‌های يکسان ولی معانی متفاوت می‌باشند.

مثلاً فرض نمائيد، بخواهيم سندی که دارای يک تگ "title" (تگ فوق به عنوان شغلی يک فرد اشاره دارد) است را با سند ديگر که او هم دارای يک تگ "title" (تگ فوق به عنوان يک فيلم اشاره دارد) است را بايکديگر ترکيب نمائيم. زمانيکه تگ‌های فوق در سند‌های مجزا بوده و يا حتی در يک سند يکسان قرار داشته باشند با مشکلاتی مواجه نخواهيم شد (در اين حالت قصد پردازش اتوماتيک بر روی المان‌های "title" را نداريم) مشکل از زمانی شروع می‌گردد، که کدهائی بمنظور پردازش اتوماتيک بر روی المان‌های "title" نوشته گردد. در چنين حالتی لازم است از نوع تگ آگاهی لازم را پيدا کرد.

بمنظور حل مشکل فوق از XML Namespace استفاده می‌گردد. Namespace ،مکانيزمی است که بهمراه يک سند تعريف، تا ارتباط مفهمومی مجموعه‌ای از عناصر با يکديگر را مشخص نمايد. بدين ترتيب برای هر المان محدوده و يا فضائی تعريف و بر همين اساس با آنها برخورد عملياتی خواهد شد. برای هر Namespace می‌توان يک شناسه تعريف و در ادامه با استفاده از شناسه تعريف شده بصورت پيشوند در کنار نام المان تکليف عملياتی المان را مشخص کرد. مثلاً می‌توان يک NameSpace بصورت زير تعريف کرد :


<source lang="php">

Xmlns:Tehran=www.yourc ompany.com/test1

</source>


در ادامه می‌توان در سند مربوطه، بصورت : "Tehran:Test1" به آن مراجعه کرد. بدين ترتيب شما و يا برنامه مورد نظر، برای پردازش آگاهی لازم را پيدا خواهد کرد. (تگ مورد نظر از Namespace تعريف شده مشتق می‌گردد)

بررسی نحوه انتشار سندهای XML

HTML بعنوان اسنانداردی جهت نمايش اطلاعات در عرصه وب، سالها است که مطرح و استفاده می‌گردد. تگ‌های HTML مسئوليت تبين نحوه نمايش اطلاعات را بر عهده خواهند گرفت. تکنولوژی فوق برای انجام وظايف محوله از پيش فرض‌های تعريف شده و ثابت (ايستا) استفاده می‌نمايد. مثلاً با مشاهده تگ "B" دقيقاً مشخص شده است که می‌بايست چه نوع واکنشی صورت پذيرد. (پر رنگ نمودن متن مورد نظر).

نبايد انتظار داشته باشيم که با درج تگ "B" عملياتی غير از آنچه از قبل تعريف شده است صورت پذيرد. مفسر تگ‌های HTML پس از انجام تفسير مربوطه، واکنش از قبل تعريف شده‌ای را از خود نشان خواهد داد. مرورگرها بکمک مفسر‌های مربوطه همواره شرايط يکسانی را برای نمايش فراهم و شرايط خود را بر همه چيز منجمله سليقه و نقطه نظرات طراح و... ترجيج می‌دهند. خودخواهی در نمايش و تحميل شرايط مربوطه از نکات قابل تامل در تکنولوژی فوق است. HTML محدوده و مرزی را برای تفکيک داده‌ها از نمايش قائل نگرديده و با تلفيق دو مقوله فوق همواره از يک روش ثابت برای نمايش داده‌ها استفاده می‌نمايد. فرض کنيد که يک فايل HTML داشته و بخواهيم زمانيکه برای کاربر ارسال می‌گردد در مرورگر مربوطه، به دو صورت کاملاً متمايز نمايش داده شود.

برای نيل به خواسته فوق چاره‌ای نيست مگر اينکه دو فايل مجزای HTML را ايجاد که هر يک دارای خروجی اختصاصی خود باشند. در مثال فوق قصد ما نمايش داده‌های يکسان با فرمت‌های متفاوت از بعد نمايش است. ما بدنبال روش و يا روش‌هائی هستيم که قادر به تفکيک بين داده و نمايش باشد. قطعاً HTML در اين راستا گزينه‌ای مناسب نخواهد بود. سندهای HTML از تگ‌هائی نظير "H1" و "P" بمنظور ايجاد ساختار و از تگ‌هائی نظير "I" و "Font" بمنظور ايجاد فرمت نمايش اطلاعات استفاده می‌نمايند. در اين راستا عملاً هيچگونه تگی که نشاندهنده نوع اطلاعات و محتويات سند باشد، وجود ندارد. بدين ترتيب مفسر قادر به تفسير تگ‌های فوق صرفاً در حد نمايش اطلاعات بوده و امکان انجام هيچگونه پردازشی وجود نخواهد داشت.

حل مشکل با استفاده از XML

Xml بين دو مقوله داده و نمايش تفکيک قائل شده است. در تکنولوژی فوق بدليل عدم وجود تگ‌های از پيش تعريف شده برای نمايش اطلاعات می‌توان سناريوی مربوط به نحوه نمايش اطلاعات را بکمک يک تکنولوژی ديگر تعريف و تبين نمود. اطلاعات ذخيره شده بصورت Xml را می‌توان با حالات متفاوت و اعمال سناريو‌های متفاوت نمايش داد. برخلاف HTML تکتولوژی Xml دارای اطلاعات از قبل تعريف شده و مشخصی برای نحوه نمايش اطلاعات نيست. تگ‌های تعريف شده در يک سند XML ، بصراحت ساختار و محتويات را ارائه خواهند داد.

در اين حالت می‌توان نرم افزارهائی را طراحی نمود که قادر به انجام عمليات دلخواه بر روی اطلاعات موجود در سند XML باشند. هنوز يک مسئله وجود دارد : در تگ‌های تعريف شده در سند XML ، آيتمی وجود ندارد که به کامپيوتر اعلام نمايد به چه صورت می‌بايست اطلاعات مربوط به هر يک از المان‌ها فرمت، تا خوانندگان قادر به خواندن آنان باشند. ما به چيزی بيشتر بمنظور تدوين استراتژی نمايش اطلاعات نياز داريم.

زبان‌های تعريف سبک XML

بمنظور حل مشکل اشاره شده می‌توان اطلاعات مربوط به نحوه نمايش اطلاعات را در يک فايل مجزا قرار داده و در ادامه با استفاده از يک پردازنده Stylesheet فايل فوق را با سند XML ترکيب نمود. Stylesheet توسط زبان‌های Style نوشته می‌گردند. هر شخص می‌تواند زبان اختصاصی خود را در اين زمينه پياده سازی و استفاده نمايد ولی XML با دو زبان استاندارد ارائه شده است.

CSS)Cascading Style Sheets)

CSS يک زبان Style بوده که بمنظور استفاده در سندهای HTML ابداع گرديده ولی بخوبی قادر به فعاليت در کنار سندهای XML نيز می‌باشد. CSS مکانيزمی مناسب برای نمايش يک سند XML در مرورگر‌ها است. اکثر ابزارهای توليد صفحات وب دارای امکانات لازم برای توليد اسکريپت‌های CSS می‌باشند. CSS دارای دو محدوديت عمده است. اولاً، قادر به توليد خروجی مناسب و با کيفيت بالا نمی‌باشد. ثانياً، صرفاً باعث تزئين سند شده و قابليت تغيير در دنباله اطلاعات موجود در سند را نخواهد داشت. محتويات يک سند XML در اغلب حالات دارای يک نطم متفاوت نسبت به حالتی است که قصد نمايش آنها را داريم. در اين راستا لازم است قبل از استفاده از CSS بمنظور نشر يک سند، سند مورد نظر به حالتی که تمايل به نمايش آن را در خروجی داريم، تبديل گردد. بدين ترتيب يک مرحله پردازش ديگر به حجم عمليات اضافه خواهد گرديد.

XSL)Extensible Style Language)

XSL يک زبان مبتنی بر XML است که دارای محدوديت‌های اشاره شده در رابطه با CSS نمی‌باشد. متاسفانه در حال حاضر ابزارهای لازم برای ايجاد اسکريپت‌های XSL محدود بوده و در برخی حالات ممکن است نوشتن اسکريپت‌ها بصورت دستی انجام گيرد. XSL دارای سه ويژگی منحصر بفرد بوده که هر کدام دارای استاندارد اختصاصی خود می‌باشند.

- Tranformation)XSLT) . ويژگی فوق باعث انتقال يک سند XML به فرمت ديگر می‌شود. فرمت فوق می‌تواند يک سند XML ديگر و يا يک سند DHTML باشد.

- Pointing)XPath) . ويژگی فوق امکان مشخص نمودن هر مکان در يک سند XML را فراهم می‌نمايد. پتانسيل فوق بعنوان هسته اساسی پردازش Style Sheet مطرح بوده و مکانيزم لازم در خصوص اعمال قوانين نمايش در خصوص اطلاعات موجود در سند XML را بدون نياز به استفاده از تگ‌های مربوط به Style در بطن و همراه سند، فراهم می‌نمايد.

- Formating)XSL) ، فرآيندی است که بر اساس آن امکان اعمال فرمت مورد نظر به اطلاعات، بدون نياز به نوشتن دستورالعمل‌هائی که مختص يک دستگاه خروجی خاص می‌باشند، را فراهم می‌نمايد. مثلاً می‌توان قوانينی مشابه : " تمام عناوين می‌بايست بصورت پررنگ، فونت تايمز، در وسط قرار گرفته، و دور آنها يک کادر کشيده شده که دارای پهنای N باشد " را بسادگی تعريف کرد. ويژگی فوق يک تحول چشمگير نسبت به وضعيت فعلی است. در اين راستا الزامی به نوشتن قوانين متعدد برای هر يک از دستگاههائی که قصد حمايت از آنان را داريم، وجود نخواهد داشت.

StyleSheets چگونه کار می‌کند ؟

مهمترين اصل تمام زبانهای XML Style ، کمک به طراحان بمنظور ايجاد قوانين، نسبت دهی و دستورالعمل‌های پردازش برای انواع اطلاعات موجود در يک سند است. قوانين در يک Stylesheet در تمپليت‌ها قرار گرفته و به المان‌ها و الگوهای اطلاعاتی موجود، اشاره خواهند کرد.در زمان اجراء، يک نرم افزار کوچک که پردازنده StyleSheet ناميده می‌شود، سند XML و يک StyleSheet را بعنوان ورودی اخذ خواهد کرد ( پردازنده Stylesheet ، درون هر برنامه‌ای که Stylesheet را به XML اعمال می‌نمايد، نظير مرورگرها و يا ابزارهای طراحی صفحات وب وجود دارد).

پردازنده بر اساس دستورالعمل‌های موجود در Stylesheet عمليات مورد نظر را انجام و بر اساس تمپليت تعريف شده اطلاعات ذيربط را در آن درج و باعث ايجاد يک خروجی جديد بعنوان ماحصل کار می‌نمايد. روش فوق برنامه نويسی تعريفی در مقابل رويه‌ای ناميده می‌شود ( در اين حالت قوانين مربوط به نحوه نمايش تعريف شده اند، نه اينکه دستورالعمل‌های رويه‌ای در متن کدها استفاده شده باشد ). نمونه کدهای زير، يک تمپليت XSLT را ايجاد که در آن المان <title> در زمان ايجاد تگ‌های HTML ، درشت نوشته شده خواهند شد.

مثال : يک تمپليت ساده XSLT


<source lang="php">

<xsl:template match="title">

<xsl:apply-templates/>

</xsl:template>

</source>


در تمپليت فوق، خصلت match دارای مقدار title بوده و اين بدين معنی است که قانون می‌بايست به هر المان موجود در "<title>" که پردازنده Stylesheet آن را در سند XML پيدا خواهد کرد، اعمال خواهد شد. قانون موجود در تمپليت به اين نکته اشاره دارد که محتويات المان "title" در سند XML ، می‌بايست در فايل HTML که ايجاد خواهد شد، درج و قبل از آن تگ "H1" و بدنبال آن تگ "<H1/>" آورده شود. فرض کنيد فايل XML مشابه زير باشد :

مثال : سند XML که فايل XSLT بر روی آن اعمال می‌گردد


<source lang="php">

<title>This text will be very large</title> [/code:1] نتيجه فايل HTML پس از اعمال تمپليت تعريف شده : [code:1]

This text will be very large

</source>


مثال فوق نمونه ساده‌ای در اين زمينه بوده و در عمل می‌توان با استفاده از امکانات موجود، تمپليت‌های بمراتب پيچيده تر و قدرتمندتری را ايجاد نمود.

StyleSheet و افزايش انعطاف پذيری

با تفکيک دستورالعمل‌های فرمت اطلاعات از محتويات اطلاعات و در ادامه استفاده از مکانيزم Stylesheet بمنظور ترکيب آنها با يکديگر، قابليت‌های فراوانی در اختيار علاقه مندان به اين تکنولوژی قرار خواهد گرفت :

می‌توان StyleSheetهای متفاوتی را برای دستگاه‌های متفاوت ( مرورگرها، PDA ، تلفن ) بر روی محيط‌های اطلاعاتی متفاوت ( online ، چاپ ، CD ) و با اهداف متفاوت ( نمايش مديريتی، نمايش تکنيکی ) ايجاد نمود.

می‌توان يک Stylesheet ايجاد و آن را بر روی سندهای متعددی اعمال نمود.

می‌توان اطلاعات را ويرايش و StyleSheet آنها را يکديگر تفکيک خواهد کرد.

می‌توان تمام اطلاعات موجود را، صرفاً با فشردن با يک کليد، منتشر کرد.

نحوه پردازش سندهای XML و دلايل توجه جدی به اين تکنولوژی

پياده کنندگان نرم افزار در زمان استفاده از XML علاقه مند به کار در دو سطح متفاوت می‌باشند : پردازش‌های سطح پائين و پردازش‌های سطح بالا. در پردازش‌های سطح پائين، تمام سند خوانده شده و به بخش‌های مورد نظر برای پردازش، تقسيم می‌گردد. در پردازش‌های سطح بالا، از ابزارهای لازم برای انجام فعاليت‌های سطح پائين استفاده شده و در برخی حالات نيز لازم است که کدها و اسکريپت‌های خاصی نوشته شده تا پردازش‌های لازم بر روی يک سند XML صورت پذيرد. برای پردازش‌های سطح پائين، می‌بايست از استانداردهای موجود در رابطه با Parsing استفاده کرد. در پردازش‌های سطح بالا، می‌بايست از استاندارد تبديل XML استفاده کرد.

پارسر (Parser)

هر پردازنده XML ( مرورگرها، پردازنده‌های Schema ، ويرايشگرها، پردازنده‌های Stylesheet ) دارای يک پارسر می‌باشند. پارسر يک سند XML را خوانده و آن را به بخش‌های متفاوت تقسيم و در حافظه مستقر می‌نمايد.( معيار تقسيم بندی می‌تواند بر اساس المان و يا خصلت باشد ). پس از استقرار بخش‌های متفاوت يک سند XML در حافظه، امکان انجام عمليات بر روی هر يک از بخش‌های موجود توسط پردازنده فراهم می‌گردد. ( نظير داده‌های موجود در يک بانک اطلاعاتی ) :

انتقال يک سند از يک فرمت به فرمت ديگر

بازسازی مجدد يک سند XML با توجه به اولويت‌های اطلاعاتی مورد نظر

اعمال فرمت‌های دلخواه بمنظور چاپ و يا نمايش

اکثر پياده کنندگان نرم افزار‌های مبتنی بر XML ، ضرورتی به فراگيری جزئيات مربوط به نحوه پارسينگ، نداشته و می‌توانند آن را به ابزارهای ارائه شده توسط توليدکنندگان واگذار نمايند. (در محيط‌های پياده سازی امکانات مربوطه در اين زمينه پيش بينی می‌گردد). با مطالعه پارسر‌های XML ، شناخت مناسبی نسبت به امکانات و ويژگی‌های موجود، ايجاد خواهد شد. XML دارای دو اينترفيس برنامه نويسی DOM و SAX است.

DOM)Document Object Model) بر خلاف نام خود يک مدل واقعی نيست. DOM يک API ( اينترفيس برنامه نويسی ) برای نوشتن کدهای لازم بمنظور انجام عمليات دلخواه بر روی بخش‌هائی از يک سند XML پس از استقرار آن در حافظه است. رفتار استاندارد فوق با اطلاعات موجود در يک سند XML ، استفاده از يک ساختار درختی برای ذخيره سازی اطلاعات، بهمراه دستوراتی برای حرکت در طول درخت و بازيابی اطلاعات مورد نظر است. دستورات بر اساس يک مدل شی گراء عمل می‌نمايند. مهمترين مزيت پارسرهای سازگار با DOM ، ارائه استانداردهای لازم API بمنظور انجام عمليات دلخواه در رابطه با اطلاعات است.

SAX)Simple API for XML) ، بر اساس يک مدل شی گراء رفتار نمی‌نمايد. در اينترفيس فوق، از مجموعه‌ای رويداد استفاده می‌گردد. رويدادها، پس از خواند ن يک سند XML توسط پارسر‌های سازگار با SAX ، با توجه به شرايط مربوطه، فعال خواهند شد. يکی از دلايل مطرح شدن SAX با توجه به وجود DOM ، عدم امکان استفاده از دستورات DOM تا زمانی است که تمام سند در حافظه مستقر گردد. استفاده و بکارگيری از دستورات DOM صرفاً پس از استقرار تمام سند XML در حافظه امکان پذير خواهد بود. بديهی است با توجه به رويکرد عملياتی فوق، حجم بالای سندهای XML می‌تواند باعث بروز مسائل و مشکلاتی در اين رابطه گردد. مثلاً بمنظور دستيابی به يک المان خاص می‌بايست در انتظار استقرار تمام سند XML در حافظه گرديد.( از دست دادن زمان و مصرف بيهوده حافظه ). با استفاده از تکنولوژی SAX می‌توان بسرعت يک سند را فعال و در ادامه المان‌های موجود را بمنظور استفاده از محتويات مورد نظر جستجو کرد.

قابليت SAX ، يک پيش نياز برای پارسرهای سازگار با DOM است، چون يک پارسر DOM می‌بايست در ابتدا سند را خوانده و در ادامه از رويدادهای مشابه SAX بمنظورتشخيص المان‌ها استفاده و آنها را در حافظه ايجاد نمايد. بعنوان جمع بندی می‌بايست به اين نکته اشاره گردد که اغلب پارسرها امکانات مربوط به DOM و SAX را حمايت کرده و می‌توان از پارسر‌های مشابه بمنظور انجام هر يک از حالات پردازش استفاده کرد.

Transformation XSLT – تبديل

تبديل، فرآيندی است که با استفاده از XSLT ، يک سند XML به يک فرمت ديگر ( XML و يا غير XML) تغيير می‌گردد. تبديلات، بمنزله بلاک‌های ايجاد برنامه‌های مبتنی بر XML مطرح می‌باشند. با استفاده از تبديلات، امکان انجام عمليات دلخواه در رابطه با اطلاعات بصورت بهينه فراهم می‌گردد.

يک XSLT stylsheet ، شامل تمپليت‌ها و الگوها است. تمپليت ساختار تبديل مورد نياز را مشخص و الگوها، تمپليت را به ساختار موجود در سند، نسبت دهی خواهند کرد. مدل پردازش XSLT ، بصورت تعريفی و خود بازگشتی است. پردازنده StyleSheet ، بر روی سند XML پارس شده، حرکت و در هر گره، تمپليت را بکارگرفته تا بر اساس آن الگوهائی که واجد شرايط هستند، انتخاب گردند. دستورالعمل‌های موجود در تمپليت‌ها،قادر به مرتب سازی، سازماندهی مجدد و ساير عمليات مورد نياز بمنظور ايجاد خروجی مورد نظر می‌باشند. برنامه زير يک تمپليت ساده را نشان می‌دهد. فرض کنيد سند XML دارای دو المان <author> مشابه زير باشد.

مثال : يک سند ساده XML بهمراه دو المان


<source lang="php">

<author> <firstname>Ali</firstname><lastname>Irani</surname> </author> <author> <firstname>Reza</firstname><lastname>Tehrani</surname> </author>

</source>


فرض کنيد StyleSheet ، شامل تمپليتی با الگوی مورد نظر برای تطبيق المان‌های <author> بصورت زير باشد :

مثال : تمپليت برای تطبيق المان‌های <author>


<source lang="php">

<xsl:template match="author"> <xsl:value-of select="lastname"/>, <xsl:value-of select="firstname"/>
</xsl:template>

</source>


زمانيکه پردازنده stylesheet بر روی سند حرکت می‌نمايد، هر زمان که با يک المان جديد برخورد نمايد، بررسی آن بمنظور تطبيق با شرايط موجود در تمپليت انجام خواهد شد. پردازنده در مواجه با المان "author" متوجه می‌گردد، که يک مورد مطابقت وجود دارد. بدين ترتيب با تاکيد بر تمپليت تعريف شده، خروجی مورد نظر ايجاد خواهد شد. بدين ترتيب خروجی بصورت زير خواهد بود. ( ترکيب عبارات موجود در تمپليت، دو المان "xsl:value-of" بهمراه تگ "
"


<source lang="php">

Irani, Ali
Tehrani, Reza

</source>


پردازش XSLT ، يک مدل قدرتمند و بسيار مفيد برای استفاده در برنامه‌های XML B2B است. در برنامه‌های فوق، تبديلات متعددی صورت می‌پذيرد ( از يک فرمت XSLT به فرمت ديگر). XSLT ابزاری مناسب بمنظور انجام عمليات فوق است.

دليل اول : مبادله اطلاعاتی فراگير

مبادله اطلاعاتی فراگير، فرايندی بمنظور تبادل اطلاعات بين سيستم‌ها ويا عناصر با استفاده از فرمت‌های از قبل تعريف شده پيام، بدون آگاهی از جزئيات ساير سيستم‌ها است. مفهوم تعريف فوق بدين منزله است که : " اگر شما يک پيام مشابه اين را به آدرس من ارسال نمائی،من نيز يک پيام مشابه آن را به آدرس شما ارسال خواهم کرد." بدين ترتيب مشکلی که طراحان و برنامه نويسان ساليان متمادی است با آن درگير بوده و همواره بدنبال حل اين مسئله مهم بوده‌اند، برطرف می‌گردد.سيستم‌ها با استفاده از يک فرمت قابل قبول اطلاعاتی، بيکديگر مرتبط خواهند شد. پيام‌های مبتنی بر XML ، مستقل از نرم افزار پردازش کننده بوده و بدين ترتيب می‌توان سيستم‌های بيشتری را در شبکه درگير و ماهيت اين نوع از سيستم‌ها را تغيير داد.( بدون نياز به اعمال تغيير در مکانيزم پيام‌ها )

XML ، بسرعت و در مقياسی گسترده بعنوان گزينه‌ای مناسب برای فعاليت‌های : B2B ، پيام شی به شی، مطرح شده است. در سراسر دنيا، سازمانهائی که نيازمند مبادله اطلاعاتی با يکديگر می‌باشند، بهم ملحق وکميته‌های تجاری را ايجاد نموده اند. در کميته‌های فوق زبانهای XML تعريف و بر اساس آنها داده‌ها مبادله می‌گردند. در چنين مواردی Schema مربوطه، بمنظور نشر بر روی وب سايت‌های اصلی و مرکزی قرار گرفته است. برای آگاهی بيشتر در رابطه با مفاهيم و کميته‌های مربوطه می‌توانيد سايت‌های http://www.xml.org و http://www.biztalk.org را مشاهده نمائيد.

دليل دوم : تشريح خودکار داده‌ها

يک سند XML شامل اسامی مربوط به اشياء/ ستون / المان‌ها بوده و بصورت اختياری ممکن است شامل Schema و يا مراجعه به آن باشد. بدين ترتيب يک سند XML بنوعی خود را تشريح می‌نمايد، روشی که تاکنون در اين سطح استفاده نشده است. بدين ترتيب امکان پردازش‌های سمت سرويس گيرنده بر روی سندهای XML فراهم خواهد شد. زمانيکه يک سند XML برای يک دستگاه ارسال می‌گردد، نرم افزار موجود بر روی دستگاه قادر به نمايش و پردازش اطلاعات خواهد بود. با ترکيب داده‌هائی که خود را تشريح می‌نمايند و پردازش‌های سمت سرويس گيرنده، می‌توان برنامه‌های قدرتمندی را ايجاد و شاهد نسل جديدی از سندهای هوشمند با برنامه نويسی اندک، باشيم.

دليل سوم : استاندارد جهانی

XML يک استاندارد جهانی بوده و بدين ترتيب صلابت و گسترش آن تضمين شده است. بدين ترتيب می‌توان : بسادگی اطلاعات مورد نظر را بين سيستم‌های ناهمگن مبادله کرد. ابزارهای توليده شده رقابتی را بر اساس نياز انتخاب کرد. روتين‌هائی را با قابليت استفاده مجدد ايجاد کرد. ويژگی جديدی را بدون درگير شدن با مسائل سازگاری اضافه کرد.

دليل چهارم : ابزاری مناسب برای ارائه اطلاعات

دليل نهائی در رابطه با اهميت XML ، قابليت استفاده XML برای انواع متفاوت اطلاعات با اهداف گوناگون است. XML در ابتدا از SGML بمنظور استفاده در وب طراحی گرديد ولی هم اکنون، زمينه استفاده از آن در وب و ساير برنامه‌هائی که تحت وب نمی‌باشند، نيز فراهم شده است. مبادله اطلاعات، پيوستگی سيستم‌ها، پردازش‌های توزيع شده، ذخيره سازی محلی متاديتا، نمونه‌هائی از ميدان وسيع استفاده از XML می‌باشند. علاوه بر موارد فوق، لازم است به اين نکته مهم نيز توجه گردد که XML ، امکان استفاده از Unicode را نيز فراهم می‌نمايد ( بيش از 64.000 کارکتر


منبع: srco.ir

8.pngاستفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.