شاید برای شما نیز پیش آمده باشد، که در پوشه دانلود های خود، با فایل هایی با پسوند .xml مواجه شده باشید. XML یا Extensible Markup Language یکی از زبان های نشانه گذاری است که به منظور نگهداری و انتقال داده ها در پلتفرم های مختلفی مورد استفاده قرار می گیرد، و عملکردی شبیه به JSON دارد. در ادامه مقاله، توضیحات بیشتر در خصوص کاربرد آن، نحوه عملکرد و تفاوت هایی که با HTML دارد، بررسی خواهد شد.
XML چیست و چه کاربردی دارد؟
XML مخفف Extensible Markup Language یک زبان نشانه گذاری قابل گسترش است، که راهکاری برای جابجایی اسناد در برنامه های مختلف می باشد. پسوند فایل های آن .xml می باشند، و کاربردی مشابه کد های HTML دارند. به طور دقیق تر می توان گفت کار اصلی کد های xml انتقال داده ها و نه نمایش آن ها می باشد و تمرکز اصلی این زبان نشانه گذاری بر سادگی است. این زبان در دهه 90 توسط کنسرسیوم شبکه جهانی وب یا W3C ایجاد گردیده است. XML همه چیز را ساده می کند:
- اشتراک گذاری داده ها
- انتقال داده ها
- تغییرات پلتفرم
- دسترسی داده ها
علاوه بر تمام این موارد، با استفاده از زبان XML می توانیم، داده ها را بین انواع سیستم عامل ها، فارق از نوع سخت افزار و نرم افزار، حمل و اشتراک گذاری کنیم.
تفاوت XML و HTML
XML و HTML هر کدام برای اهداف مشخصی طراحی شده اند، بدین صورت که از XML برای تمرکز بر نوع داده ها و حمل داده ها، و از HTML برای تمرکز بر نحوه نمایش داده ها استفاده می شود. کد های زبان XML از پیش تعریف شده نمی باشند، بنابراین برنامه نویس می تواند، بسته به نیاز خود، کد های مورد نیاز را بنویسد. HTML یا Hypertext Markup Language به منظور ایجاد صفحات وب و نمایش در مرورگر ها طراحی شده است. تگ ها در این زبان از پیش تعریف شده هستند، و برنامه نویس از همان کدها استفاده می کند. این در حالی است، که در زبان xml هیچ کد از پیش تعریف شده ای وجود ندارد.
اصلی ترین تفاوت ها:
- HTML ایستا و XML کاملاً پویا است.
- XML تکمیل کننده HTML است.
- کد های XML با وجود حتی یک خطا اجرا نمی شوند، اما کد های HTML با وجود خطاهای کوچک اجرا می شود.
- XML فقط برای حمل داده ها استفاده می شود، HTML برای نمایش و طراحی استفاده می شود.
- تگ ها در HTML از پیش تعریف شده اند، در XML باید تگ ها نوشته شوند.
- در HTML تعداد محدودی تگ برای استفاده تعریف شده اند، در XML محدودیتی وجود ندارد.
- در XML حتماً تگ انتها باید درج شود، در HTML اگر تگ انتها نباشد، مشکلی ندارد.
- فضاهای سفید در XML حفظ می شوند، در حالیکه در HTML حفظ نمی شود.
قوانین XML چه هستند؟
زبان XML مبتنی بر سادگی می باشد، بنابراین قوانین آن نیز بسیار ساده می باشند. تمامی تگ ها بسیار ساده، و دارای تگ انتهایی نیز می باشند. تمامی حروف کد ها در زبان XML با حروف کوچک انگلیسی نوشته می شوند، تا سادگی مورد انتظار آن حفظ گردد. کد های XML هیچ کاری انجام نمی دهند، چرا که این زبان کاملاً توصیفی است، و برای نگهداری داده ها استفاده می شود:
- دارای اطلاعات فرستنده
- دارای اطلاعات گیرنده
- دارای هدر یا عنوان
- دارای بدنه پیام
در واقع می توان گفت، XML اطلاعاتی است، که در قالب تگ ها نهفته شده است. تگ ها در هیچ کجای زبان XML تعریف نشده اند، و سازنده سند آن ها را خود می سازد.
اسناد XML در یک ساختار درختی شکل می گیرند. یک درخت XML از یک عنصر ریشه شروع می شود و از ریشه به عناصر فرزند انشعاب پیدا می کند. هر عنصر می تواند یک عنصر فرعی دیگر (عناصر فرزند) داشته باشد.
چطور یک فایل با پسوند xml را باز کنیم؟
فایل های XML را می توانیم با برنامه های متنوعی باز کنیم. برای باز کردن اینگونه فایل ها مراحل زیر را انجام می دهیم:
- بر روی فایل ایکس ام ال خود راست کلیک می کنیم، از منوی باز شده زیرمنوی Open With را انتخاب می کنیم.
- برنامه ای که می خواهیم را از لیست انتخاب می کنیم. این فایل ها با انواع ویرایشگر های متنی مثل Notepad یا Notepad++ یا انواع مرورگر های وب مثل Chrome یا Firefox قابل باز شدن می باشند.
کاربردهای واقعی XML در وب و برنامهنویسی
XML فقط یک فرمت فایل نیست؛ پایه و اساس بسیاری از فناوریهای وب مدرن است که احتمالاً هر روز با آنها سروکار دارید، حتی اگر ندانید.
RSS و Atom Feed
وقتی یک سایت فید خبری یا بلاگ دارد که میتوانید آن را در نرمافزار خواندن خبر مثل Feedly دنبال کنید، این فید معمولاً یک فایل XML است. هر مطلب جدید بهصورت یک آیتم در این فایل XML ذخیره میشود. ساختار RSS کاملاً مبتنی بر XML است.
Sitemap
فایل sitemap.xml که برای موتورهای جستجو مثل گوگل میسازید، نمونهای عملی از XML است. این فایل لیستی از تمام صفحات سایت شما را در قالب XML به موتور جستجو معرفی میکند تا بهتر ایندکس شوند. اگر وردپرس دارید، پلاگینهای سئو مثل Yoast بهصورت خودکار این فایل را میسازند.
Web Services و SOAP
پروتکل SOAP که برای ارتباط بین سیستمهای مختلف استفاده میشود، کاملاً مبتنی بر XML است. بسیاری از سرویسهای بانکی، سیستمهای دولتی و نرمافزارهای سازمانی از این روش برای تبادل داده استفاده میکنند. اگر با API های قدیمیتر کار کرده باشید، احتمالاً با پیامهای SOAP که در قالب XML هستند مواجه شدهاید.
فایلهای تنظیمات نرمافزارها
بسیاری از نرمافزارها تنظیمات خود را در فایلهای XML ذخیره میکنند. فایلهای pom.xml در پروژههای Java Maven، فایل AndroidManifest.xml در اپلیکیشنهای اندروید، و فایلهای تنظیمات Apache همه از XML استفاده میکنند.
فرمتهای اسناد آفیس
فایلهای docx، xlsx و pptx که ساخته مایکروسافت آفیس هستند، در واقع آرشیوهای ZIP هستند که داخل آنها پر از فایل XML است. اگر پسوند یک فایل docx را به zip تغییر دهید و آن را باز کنید، ساختار XML داخلش را خواهید دید.
ساختار و نحو پایه XML
برای اینکه XML را بهتر بفهمیم، بیایید یک مثال ساده بنویسیم. فرض کنید میخواهیم اطلاعات یک کتاب را در XML ذخیره کنیم:
<?xml version="1.0" encoding="UTF-8"?>
<library>
<book>
<title>آموزش برنامهنویسی</title>
<author>علی احمدی</author>
<year>1402</year>
</book>
</library>
چند نکته مهم در این مثال وجود دارد. اولین خط declaration است که نسخه XML و encoding فایل را مشخص میکند. encoding برای فایلهای فارسی باید UTF-8 باشد تا کاراکترهای فارسی درست ذخیره شوند. هر تگ باز باید یک تگ بستن متناظر داشته باشد — این یکی از سختگیرانهترین قوانین XML است. عنصر library عنصر ریشه یا root است و هر سند XML دقیقاً یک عنصر ریشه دارد.
میتوانید به عناصر XML صفت یا attribute هم اضافه کنید. مثلاً <book id="1" lang="fa"> — اینجا id و lang صفتهای عنصر book هستند. انتخاب اینکه اطلاعات را در صفت بگذارید یا در عنصر فرزند، معمولاً یک تصمیم طراحی است.
XML در مقابل JSON: کدام یک بهتر است؟
این سوالی است که خیلی از توسعهدهندگان میپرسند. پاسخ صادقانه این است که بستگی دارد.
JSON در چند سال اخیر به استاندارد غالب برای API های وب تبدیل شده است. دلایل اصلی آن سادهتر بودن خواندن برای انسان، حجم کمتر، و سرعت پارسکردن بیشتر است. اکثر API های مدرن مثل REST APIs دادههایشان را با JSON میفرستند.
XML هنوز در جاهایی پیشتاز است: وقتی به namespace برای جلوگیری از تداخل نامها نیاز دارید، وقتی اسناد پیچیده با metadata زیاد دارید، یا وقتی با سیستمهای قدیمی (legacy systems) کار میکنید که از XML استفاده میکنند. همچنین XML ابزارهای اعتبارسنجی قویتری (مثل XSD Schema) دارد که برای سیستمهای بانکی و دولتی که دقت بالا میطلبند مزیت مهمی است.
راهکار صباهاست
در صورتیکه می خواهید برای وب سایت وردپرسی خود یک هاست مناسب انتخاب کنید و یا به یک سیستم عامل منبع باز نیاز دارید که از زبان php هم پشتیبانی کند، می توانید از هاست لینوکس صباهاست استفاده نمایید. از مزیت های دیگر هاست لینوکس صباهاست امنیت بالای آن و آپ تایم 100% است. هاست لینوکسی نسبت به هاست ویندوزی هزینه پایین تری دارد.
ابزارهای کار با XML
چندین ابزار مفید برای کار با فایلهای XML وجود دارد که دانستن آنها میتواند کار شما را راحتتر کند:
- XMLSpy: یکی از قدرتمندترین ویرایشگرهای تجاری XML است که ویرایش بصری، اعتبارسنجی Schema و تبدیل XSLT را پشتیبانی میکند.
- Visual Studio Code: با نصب extension های مناسب مثل XML Tools، یک ویرایشگر رایگان و قابل استفاده برای XML میشود. highlighting، بستن خودکار تگها و اعتبارسنجی ساختار را دارد.
- Notepad++: ویرایشگر متنی رایگان که XML را با رنگبندی نشان میدهد و با پلاگین XML Tools میتوانید فایلهای XML را فرمتبندی (pretty print) کنید.
- آنلاین: سایتهایی مثل xmlvalidation.com یا jsonformatter.org بخش XML هم دارند که بدون نصب هیچ نرمافزاری میتوانید فایل XML را اعتبارسنجی و فرمت کنید.
اگر با PHP کار میکنید، توابع simplexml_load_file() و simplexml_load_string() آسانترین راه پارس کردن XML هستند. برای پروژههای پیچیدهتر، کلاس DOMDocument انعطافپذیری بیشتری میدهد.
سوالات متداول
آیا XML هنوز هم استفاده میشود یا منسوخ شده؟
XML هرگز منسوخ نشده است. در API های REST جدید، JSON جای آن را گرفته اما در سیستمهای سازمانی، اسناد دولتی، فایلهای تنظیمات، sitemap و فرمتهای اسناد آفیس هنوز XML استاندارد اول است.
آیا XML فایلهای بزرگ را هم میتواند مدیریت کند؟
بله، اما برای فایلهای بسیار بزرگ باید از پارسرهای SAX (رویداد-محور) به جای DOM (درخت-محور) استفاده کنید. پارسر DOM کل فایل را در حافظه بارگذاری میکند که برای فایلهای گیگابایتی عملی نیست، اما SAX خط به خط پردازش میکند.
آیا میتوانم XML را در پایگاه داده ذخیره کنم؟
بله. اکثر پایگاهدادههای مدرن از جمله MySQL، PostgreSQL و SQL Server نوع داده XML را بهصورت بومی پشتیبانی میکنند و میتوانید مستقیماً روی محتوای XML کوئری بزنید.
تفاوت XML و XHTML چیست؟
XHTML نسخهای از HTML است که قوانین سختگیرانه XML را رعایت میکند. در XHTML همه تگها باید بسته شوند، همه attributeها باید در گیومه باشند، و اسم تگها باید با حروف کوچک نوشته شود. امروزه HTML5 جایگزین XHTML شده است.
جمعبندی
XML یک زبان نشانه گذاری قابل گسترش است، که هدف از ایجاد آن ساده سازی فایل ها و تبدیل داده ها به فرمت های متنی ساده می باشد. زبان های جایگزینی مثل JSON این روز ها با قابلیت های بیشتری در دسترس هستند، اما به دلیل سادگی بالایی که در XML نهفته و توانایی آن در نگهداری حجم بسیار بالایی از داده در قالب یک سند و انتقال در انواع سیستم ها، هنوز این زبان جایگاه خود را دارد. XML هیچ تگ از پیش تعریف شده ای ندارد، و برنامه نویس بدون محدودیت می تواند، اقدام به تگ نویسی کند. به طور کلی، با XML می توانیم داده ها را انتقال دهیم، و در HTML نحوه نمایش آن ها در صفحات وب را تعریف کنیم.
امیدواریم این مقاله برایتان مفید واقع شده باشد. اگر سوالی دارید که در این مقاله پاسخش را پیدا نکردید، در قسمت کامنت ها سوال خود را مطرح کنید، کارشناسان ما در کمتر از چند دقیقه به سوالات پاسخ خواهند داد.
این مقاله را با دوستان خود به اشتراک بگذارید.
موفق باشید.