XML که مخفف Extensible Markup Language به معنای زبان نشانه گذاری توسعه پذیر است، یک زبانی برای ساخت قالب و فرمت بندی داده ها میباشد. XML یک استاندارد تعیین کرده است تا به وسیلهی آن بتوان دادهها و اطلاعات را به شکل خاصی فرمت دهی کرد و دادهی ساختار یافتهی نهایی را در اینترنت و یا بین شبکهی شرکتها به اشتراک گذاشت.
XML یک زبان نشانه گذاری بر اساس استاندارد Standard Generalized Markup Language یا به اختصار SGML است. این ارگان کارش تعریف کردن زبانهای نشانه گذاری میباشد. هدف اصلی XML، فرمت بندی داده ها و تبدیل اطلاعات در قالب این فرمت میباشد. از این دادهها در موارد مختلفی از جمله در رکوردهای پایگاه داده، انتقال این دادهها در بستر وب و خیلی موارد دیگر استفاده میشود. دادههای ثبت شده درون این قالبها میتوانند متفاوت باشند و در پلتفرمهای مختلف برای کارهای مختلف مورد استفاده قرار گیرند. به عنوان مثال استفاده در زمینهی وب، پرینت کردن، محتواهای داخل موبایل که همگی توسط اطلاعاتی در فرمتهای XML ساخته شدهاند.
همانند HTML یا Hypertext Markup Language، که بر پایهی SGML است، فایلها و اسناد XML توسط سیستم کد استاندارد آمریکایی برای تبادل اطلاعات یا American Standard Code for Information Interchange (ASCII) (بخوانید اسکی) ذخیره میشوند. فایلهای XML توسط هر ادیتور یا ویرایشگر متنی قابل ویرایش است.
XML برای چه کاری استفاده می شود؟
طبق گفتهی کنسرسیوم وب جهانی یا W3C، وظیفه ی XML، ارائهی یک قالب سادهی مبتنی بر متن (Simple Text-Based Format) برای نمایش اطلاعات است. استاندارد اصلی بدنهی وب نیز بر پایهی این استاندارد است که در موارد زیر مورد استفاده قرار میگیرد:
- فرمت دادههای اصلی در نرم افزارهایی نظیر سری نرم افزارهای آفیس (Microsoft Office) مانند اکسل و...
- اسناد و فایلهای فنی
- تنظیمات پیکربندی داخل نرم افزارها
- کتابها
- تراکنشها
- فاکتورها
همچنین به وسیلهی XML، میتوان داده های ساختار یافته را بین موارد مختلفی به اشتراک گذاشت. به عنوان مثال:
- اشتراک گذاری از یک نرم افزار به نرم افزار دیگر
- از نرم افزار به کاربران
- در شبکه
W3C استفاده از XML را برای محتواهای تحت وب توصیه کرده است. دو فرمت XML و HTML بر اساس SGML ساخته شدهاند. همچنین W3C دو فرمت XHTML و XHTML5 را نیز تعریف کرده تا فرمت اسناد HTML و HTML5 را برای محتوای وب منعکس کند.
XML چگونه کار می کند؟
XML بر اساس یک فرمت و قالب از پیش تعریف شده کار میکند و رعایت این قالب خیلی مهم است. اگر کوچکترین تغییری در قالب و فرمت XML به وجود بیاید، پردازش و نمایش اطلاعات و دادههای ثبت شده با مشکل مواجه میشود و به طور کلی سیستم نهایی یک خطا یا Error بر میگرداند.
برای اینکه یک سند XML بتواند توسط پارسرهای XML یا همان XML Parserها خوانده و فهمیده شود، کدهای XML میبایست از یک سری اصول خاصی پیروی کرده و دادهها در فرمت از پیش تعریف شده ذخیره شوند. تمامی اسناد و فایلهای XML از یکسری عناصر یا المانهایی بوجود آمدهاند. این عناصر نقش همان دادههای ثبت شده را دارند. هر عنصر در XML توسط یک تگ (Tag) شروع میشود و با یک تگ نیز پایان مییابد. دادهها و اطلاعات اصلی که قصد ذخیرهی آن را داریم، بین این دو تگ قرار میگیرند.
گفتیم که XML با یکسری فرمتهای از پیش تعریف شده کار میکند. به عنوان مثال ممکن است سندی دارای یک تگی به نام <warning> باشد. به عنوان مثال، نمونهی زیر را در نظر بگیرید.
<warning>
<para>
<emphasis type="bold">May cause serious injury</emphasis>
Exercise extreme caution as this procedure could result in serious injury or death if precautions are not taken.
</para>
</warning>
در این مثال دادهها خوانده و تفسیر میشوند و در شکل دیگری نمایش داده میشوند. با توجه به سایت و یا نرم افزاری که قرار است این سند را به نمایش بگذارد. ممکن است نتیجهی نهایی کد XML بالا، متنی شبیه به متن زیر باشد:
WARNING: Exercise extreme caution as this procedure could result in serious injury or death if precautions are not taken.
همین کد XML ممکن است در یک نرم افزار و برنامه ی دیگر، یا در User Interface موبایل و یا هنگام پرینت کردن، طور دیگری نمایش داده شود که این به پیاده سازی فنی آن پلتفرم بستگی دارد. به عنوان مثال این کد در یک نرم افزار موبایلی ممکن است فرق کند و تگ <emphasis> مثلا با رنگ قرمز نمایش داده شود.
در اسناد XML، به طور پیش فرض، هیچ تگی وجود ندارد. تگها و اطلاعات داخل آنها و همچنین نوع تفسیر و نمایش آنها نیز توسط برنامهی مورد نظر ساخته میشود. به عنوان مثال برای ساخت یک دکمه در واسط کاربری سیستم عامل Android، میتوان از تگ <button> استفاده کرد و همین مورد ممکن است در یک پلتفرم دیگر با <btn> ساخته شود. تمامی این موارد به برنامه ی نهایی و پیاده سازی آن بستگی دارد. بنابراین XML تنها یک استاندارد برای قالب بندی داده است.
مثال های از XML
در زیر یک مثال نسبتا ساده از یک فایل XML را مشاهده میکنید:
<?xml version="1.0" encoding="UTF-8"?>
<library>
<book>
<title>The Fire Next Time</title>
<author>Baldwin, James</author>
</book>
<book>
<title>Beloved</title>
<author>Morris, Toni</author>
</book>
<book>
<title>The Messiah of Stockholm</title>
<author>Ozick, Cynthia</author>
</book>
</library>
به خط اول مثال بالا اصطلاحا مقدمه (Prolog) یا اعلام (Declaration) میگویند. در این خط، نسخه ی XML استفاده شده و الگوی کد گذاری مشخص میشود. اگر در کد XML، این خط کد وجود داشته باشد (در صورت نبودن این خط، مقدار پیشفرض در نظر گرفته میشود)، میبایست در اول خط نوشته شود.
در مثال بالا، نسخهی XML استفاده شده، نسخهی 1.0 میباشد. همچنین از الگوی کدگذاری UTF-8 یا Unicode Transformation Format 8 که مشابه کد ASCII است استفاده شده است. این الگو برای کاراکترهای زبان انگلیسی آمریکایی مورد استفاده قرار میگیرد. از الگوهای دیگر میتوان برای کاراکتر زبانهای دیگر استفاده کرد. نکتهی حائز اهمیت در تعیین الگوی کد گذاری این است که الگوی نوشته شده باید از کاراکتر های Unicode تشکیل شده باشد. تمامی کاراکتر های Unicode میتوانند در قالب XML به صورت الگوی عددی زیر فرمت دهی شوند:
&#xXXXX;
در قالب بالا، مقدار XXXX با یک کد Unicode هگزا دسیمال (Hexadecimal) معتبر جایگزین میشود.
عناصر XML
ساختار منطقی یک فایل XML به این صورت است که تمامی دادههای موجود در یک المان یا عنصر XML، باید درون یک عنصر پایهای یا ریشه (Root) قرار گیرند. به این عنصر اصطلاحا Root Element یا Document Element میگویند. این، عنصر است که میگوید چه دادهای باید درون فایل ذخیره شود. در مثالی که بالاتر دیدیم، عنصر ریشه، <library> بود.
عناصر یا المانهای دیگری در داخل عنصر ریشه وجود دارد و قسمتهای مختلف یک فایل XML را بوجود میآورند. در مثال بالا عنصر ریشه <library> بود که خود از عنصری به نام <book> تشکیل شده است. عنصر <book> هم به همین ترتیب از دو عنصر <title> و <author> تشکیل شده است. این نکته را به یاد داشته باشید که عناصر قابل استفاده در یک تگ، با یکدیگر متفاوت هستند. به عنوان مثال تگ <author> داخل یک عنصر <book> قابل استفاده است. اما همین تگ ممکن است درون یک عنصر دیگر با نام <student>، بی معنا باشد و با Error مفسر مواجه شود. تمامی این موارد به دست سازندهی برنامهها مشخص میشود.
تمامی تگ های XML در پایان باید بسته شوند تا اشکالی در تفسیر فایل XML بوجود نیاید. بنابراین هر تگی که باز میشود، در پایان نیز باید تگی برای بسته شدن آن وجود داشته باشد. در اولین مثال این مقاله، کد زیر را مشاهده کردید:
<para>This is an example of an XML tag for a paragraph.</para>
همانطور که میبینید یک پاراگراف با تگ <para> باز شده است و در پایان با تگ </para> خاتمه پیدا کرده است. در XML میتوان از تگ خالی هم استفاده کرد. برای کار با این تگها نیاز به تگ شروع و پایان نداریم و تنها با یک تگ میتوانیم هردو قسمت شروع و پایان را مشخص کنیم. برای این کار نیاز است از علامت / در پایان نام تگ استفاده کنیم. تگ خالی زیر را در نظر بگیرید:
<para>This is an example of an XML tag for a paragraph.</para>
این تگ میتواند به عنوان یک پاراگراف خالی جهت فاصله گذاری در یک متن مورد استفاده قرار گیرد.
XML این اختیار را به کاربران داده است تا بتوانند عناصر خود را در صورت نیاز تعریف کنند و از آن استفاده کنند. در مثال بالا فرض کنید کاربر بخواهد تا علاوه بر author و title مثلا کد ISBN کتاب، ناشر آن و یا موارد دیگری را اضافه کند. تمامی اینها در XML امکانپذیر است. همچنین میتوان قوانینی برای نحوهی تعریف عناصر نیز وضع کرد. به عنوان مثال یک قانون میتواند این باشد که وقتی یک عنصر <book> میسازیم، عنصر <title> میبایست داخل آن وجود داشته باشد. اما وجود عنصر <author> اختیاری باشد.
موجودیت های XML
عناصر XML میتوانند از موجودیتها یا Entityهای از پیش تعریف شده استفاده کنند. موجودها در واقع کاراکترهای رزرو شدهی XML هستند. البته امکان تعریف موجویتهای دیگر نیز وجود دارد.
5 تا از موجودیتهای از پیش تعریف شده در XML به قرار زیر است:
- ;lt& : این موجودیت برای علامت کوچکتر یا > استفاده میشود. این علامت در XML برای باز کردن یک تگ مورد استفاده قرار میگیرد. اگر بخواهیم از این علامت در بدنهی محتوای داخل تگ استفاده کنیم، میبایست از این موجودیت به جای علامت کوچکتر استفاده کنیم. زیرا در غیر این صورت مفسر XML آن را به عنوان یک سینتکس XML در نظر خواهد گرفت.
- ;gh& : این موجودیت برای علامت بزرگتر یا < استفاده میشود. این علامت در XML برای خاتمهی یک تگ استفاده میشود. همانند مورد اول، اگر این علامت را داخل محتوا استفاده کنیم، مفسر آن را به عنوان سینتکس XML در نظر میگیرد. بنابراین اگر قصد ما استفاده از این علامت در محتوای داخل تگ باشد، میبایست از این موجودیت استفاده کنیم.
- ;amp& : کد اسکی نماد آمپرسند یا &، در XML رزرو شده است. ابتدای تمامی موجودیتهای XML با & شروع میشود. بنابراین برای استفاده از & در محتوای تگها، میبایست از این موجودیت استفاده کنیم.
- :qout& : علامت کوتیشن دوتایی یا "، در XML برای مشخص کردن صفتهای اضافی یک تگ مورد استفاده قرار میگیرد. به عنوان مثال اگر تگ <emphasis> را در مثالهای بالا مشاهده کنید، یک صفت یا ویژگی type را خواهید دید که مقدارش برابر با bold است و داخل دو علامت (") قرار گرفته. همچنین این صفت میتواند مقادیر مختلفی از قبیل Italic یا Underline نیز بگیرد. بنابراین برای استفاده از علامت کوتیشن دوتایی داخل محتوای یک تگ، میبایست از این موجودیت استفاده کنیم.
- ;apos& : همانند علامت کوتیشین دوتایی، تک کوتیشن یا (') نیز در xml رزرو شده است. در XML برای مشخص کردن صفتهای یک تگ، به جای کوتیشن دوتایی میتوان از تک کوتیشن هم استفاده کرد. بنابراین برای استفاده از تک کوتیشن داخل محتوا نیز میبایست از این موجودیت استفاده کنیم.
فرمت موجودیت یا Entity، در XML به فرم ;name& میباشد. با یک & شروع میشود و با ; خاتمه مییابد و نام موجودیت به جای name قرار میگیرد. امکان ساخت موجودیتهای دلخواه نیز ممکن است. موجودیتهای ساخته شده میتوانند یک کاراکتر باشند و یا کدهای طولانی و پیچیده ی XML باشند که از عناصر مختلف و زیادی تشکیل شدهاند. به عنوان مثال کدهای تکراری XML را که قصد داریم در جاهای زیادی استفاده کنیم، میتوانیم در یک موجودیت خلاصهاش کنیم.
آیا XML یک زبان برنامه نویسی است؟
در جواب کوتاه باید گفت خیر، XML یک زبان برنامه نویسی نیست. بلکه یک زبان نشانه گذاری است و برای قالب بندی داده ها توسط تگها به کار میرود. زبان های برنامه نویسی از دستورالعملها و ساختارهایی تشکیل شدهاند که به وسیلهی آنها امکان پیاده سازی الگوریتمالگوریتم چیست به زبان ساده و با مثال های فراواندر این مقاله به زبان بسیار ساده و با مثال های متعدد توضیح داده شده که الگوریتم چیست و چه کاربردهایی دارد وجود دارد. در حالی که در زبان های نشانه گذاری تنها دادهها قالب بندی میشوند تا توسط برنامهها و اجرای الگوریتمها، این دادهها خوانده و تفسیر شوند.
تگهای زبان نشانه گذاری، به عنوان کد کامپیوتری در نظر گرفته میشوند. به این خاطر که عناصر مختلف نشانه گذاری را تعریف میکنند و همچنین قوانین دقیق و منظمی برای ترکیب این عناصر وجود دارد.
یک فایل XML چیست و از چه چیزی تشکیل شده است؟
فایل XML، یک فایل متنی ساده یا Plaintext است که فرمت آن xml. میباشد. فایل XML از تعدادی متن Unicode تشکیل شده است. همچنین این فایلها توسط تمامی نرم افزارهایی که قادر به خواندن فایل هستند، باز میشوند.
فایلهای XML را میتوان به وسیلهی یک ویرایشگر متن ساده، ویرایش کرد (مانند Notepad). همچنین نرم افزارهایی نیز وجود دارند که مخصوص ویرایش XML ساخته شدهاند و قابلیتهای بیشتر و منحصر به فرد XML را دارا هستند. به عنوان مثال یک ویرایشگر مخصوص فایل XML توانایی های زیر را ممکن است داشته باشد:
- کدهای XML را بخواند و تفسیر کند و آن را به شکل نهایی نمایش دهد.
- تگهایی که باز شدهاند اما بسته نشدهاند را نشان دهد.
- تگهایی که دارای فرمت نادرستی هستند را مشخص کند.
محتواهای مختلفی را میتوان در داخل فایلهای XML قرار داد. به عنوان مثال علاوه بر متن و عدد، میتوان فایلهای صوتی و تصویری را به نحوی داخل فایلهای XML قرار داد. مثلا از طریق مشخص کردن محلی که فایل صوتی در آن قرار دارد (Path) و یا لینک یک تصویر در اینترنت و...
چگونه یک فایل XML را باز کنیم و بخوانیم؟
به وسیلهی هر ویرایشگر متنی میتوانیم فایلهای XML را ویرایش کنیم. ویرایشگرهای معمولی ممکن است برای فایلهای سادهی XML مناسب باشند. اما برای ویرایش حرفهای و کارای XML، نرم افزارهای مخصوصی وجود دارد که این نرم افزارها امکانات ویژهای را برای فایلهای XML فراهم کرده اند. از جمله این ویژگیها میتوان به موارد زیر اشاره کرد:
- هایلایت کردن تگها برای تشخیص تگهای تو در تو و پیچیده.
- داشتن یک پارسر جهت تفسیر کدهای XML، بررسی درست بودن و در نهایت نمایش آن.
- باز و بسته کردن تگها و محتوای داخل آن جهت خوانایی بیشتر حین کد نویسی.
- داشتن رابط کاربری پیشرفته برای ویرایش کردن چند فایل به صورت همزمان.
- داشت UI جهت نمایش ارتباط بین عناصر XML و نمایش ساده شده ی عنصر های پیچیده ی XML مانند جدولها و...
- داشتن ابزارهای مفید جهت سهولت ویرایش فایل XML، به عنوان مثال ماکروها، ساخت عناصر سفارشی، جستجو و جایگزین کردن عملکردها، تگها و...
کدهای XML مانند بقیهی کدهای برنامه نویسی، دارای ساختار میباشند. مثلا دارای Header برای تعریف محتوا هستند. یا در کدهای آن، بین عناصر تو در تو، فاصله و تو رفتگی وجود دارد.
در زیر لیستی از نرم افزارهای معروف جهت ویرایش کد XML آورده شده است:
- Oxygen XML Editor
- XML Notepad
- Adobe FrameMaker
- MadCap Flare
- Quark Author
- Liquid XML Studio
تفاوت بین XML و HTML چیست؟
در حالی که جفت زبانهای XML و HTML تحت استاندارد SGML ساخته شدهاند. اما رویکرد و کاربرد آنها مستقل از هم میباشند.
بزرگترین تفاوت بین XML و HTML این است که از XML برای ذخیره ی داده به صورت ساختار یافته استفاده میشود. در حالی که از HTML برای پیکربندی محتوا (مثلا صفحهی یک وبسایت) استفاده میشود. از آنجایی که XML دادهها را ذخیره میکند و قوانین سفت و سختی دارد، در نتیجه محتوای XML به طور قابل اعتماد و دقیقی میتواند توسط برنامههای کاربردی، پردازش و استفاده شود. به همین دلیل است که اغلت از XML برای ساخت فایلهایی استفاده میشود که قرار است از آن فایلها در محتوای فایل HTML استفاده شود.
منظور از قوانین سفت و سخت در XML این است که اگر کوچک ترین خطایی در کد آن وجود داشته باشد، مثلا اگر یک علامت < جا افتاده باشد، پردازشگر، موقع پردازش این فایل یک خطا یا Error بر میگرداند. بنابراین کاربر باید خطای این فایل را برطرف کند تا پردازش با موفقیت انجام شود و هیچ خطایی رخ ندهد. این امر برای محتواهای HTML که بر اساس فایل XML ساخته شده است، امری مهم محسوب میشود. همچنین از XML برای پیکربندی و تنظیمات نرم افزارها استفاده میشود. به همین جهت نباید کوچکترین خطایی در نوشتن آن وجود داشته باشد تا به درستی پردازش شود (به عنوان مثال پیکربندی مربوط به فونت یک نرم افزار، اندازه ی متن، و دیگر موارد در اندرود، میتواند در فایل XML ذخیره شود).
مزایای استفاده از XML در ساخت داکیومنت یا اسناد چیست؟
XML به طور گستردهای برای ساخت داکیومنت یا اسناد فنی مورد استفاده قرار میگیرد. علت استفاده از آن، این است که دادهها در قالب ساختار یافتهای ذخیره میشوند و مفسرها میتوانند آن را بخوانند و در خروجی به کاربران نمایش دهند.
در HTML، کاربر میتواند داده های مختلفی بسازد. مانند لیستهایی از اعداد یا رشتهها، اما هیچ راهی برای ارائهی محتوا در قالب تگ برای یک روند خاص به وسیلهی HTML وجود ندارد. در واقع هدف تنها نمایش دادهها است. اما در XML کاربران میتوانند به تگها هویت بدهند. مثلا برای استفاده از یک عنصر در XML، یک قانون تعریف کنند که بگوید یک عنصر حتما باید تعدادی از ویژگیها و صفتها را داشته باشد و یا حتما باید تعدادی عنصر به عنوان زیر مجموعه بپذیرد.
در HTML، یک رشته میتواند به عنوان Heading ها (یا عنوانها) در درجات مختلفی در یک تگ قرار گیرند تا به عنوان Headline یا Title و... استفاده شود. به عنوان مثال تگ <h1> در HTML برای تیتر اصلی یک صفحه و تگ <h2> برای موضوعات مختلف برای همان صفحه و به همین ترتیب تا تگ <h6> که برای کوچکترین تیتر یک صفحه به کار میرود. اما در XML، میتوان به صراحت یک تگ را به هر حالتی که دلمان خواست نمایش دهیم. از Title گرفته تا Subtitle، Headline و Subheadline. این امر باعث میشود تا نرم افزارهای متفاوت، محتواهای XML را به صورتهای متفاوتی نمایش دهد.
فرضا اگر قرار باشد که محتوایمان به عنوان یک کتاب به چاپ برسد، Title ایجاد شده میتواند در Header یا Footer کتاب قرار بگیرد. همین محتوای XML اگر قرار باشد به عنوان یک صفحهی وب نمایش داده شود، Title میتواند به عنوان سرفصل و تیتر صفحه، نمایش داده شود. تمامی اینها بستگی به پیاده سازی برنامههای کاربردی مورد نظر دارد.
XML چیست؟
XML یا Extensible Markup Language یک زبان نشانه گذاری است که میتواند دادهها را در ساختاری خاص ذخیره کند. به وسیلهی XML میتوان دادههای وبسایتها، پایگاه دادهها، پیکربندی نرم افزار و... را ذخیره کرد. همچنین امکان به اشتراک گذاری این فایلها در وبسایتها و نرم افزارها نیز وجود دارد. برنامههای کاربردی، فایلهای XML که فرمت .xml دارند را میخوانند و تفسیر میکنند و به طور خاص که خود آن را پیاده سازی کردهاند، نمایش میدهند.
XML چه کاربرد هایی دارد؟
XML به طور گسترده برای ذخیرهی دادهها به فرمت خاص استفاده میشود. این دادههای ساختار یافته میتوانند بین کامپیوترها، برنامههای کاربردی و افراد، به صورت محلی و در سرتاسر شبکهی اینترنت به اشتراک گذاشته و استفاده شوند.
تفاوت XML و HTML چیست؟
XML و HTML هردو بر پایهی استاندارد SGML هستند. بنابراین نوع کد آنها شبیه به هم میباشد. اما تفاوتهای عمدهای دارند. بیشتر تفاوت آنها در کاربرد آنهاست. از XML برای ذخیرهی دادهها و انتقال آنها استفاده میشود در حالی که از HTML برای ساخت محتوا مانند صفحات وبسایتها استفاده میشود.