life is what you choose it to be ...
اکس ام ال (XML) چیست؟

توضیح اولیه
یکی از مشتقات زبان SGML است و مخفف Extensible Markup Language هست.
اول از همه باید بدونیم که این فرمت برای ذخیره سازی و انتقاال اطلاعات بین برنامه ها استفاده میشه.
الگو و استفاده این فرمت رو خیلی جاها میتونید ببینید. مثل صفحات HTML، فید RSS، فرمت SVG، فایل های config (تنظیمات) برنامه ها و... - بنابراین دونستن مفاهیم پایه اش برای برنامه نویسا ی امر واجبه
از ویژگی ها مهم اش میشه به موارد زیر اشاره کرد
- ساختار XML به قدری انعطاف پذیره که شما میتونید به راحتی اون رو با برنامه تون وفق بدید. (Extensible )
- ا XML میتونه اطلاعات رو همراه با metadata ( اطلاعات جزئی تر که در مورد خود ی سری اطلاعات هستن رو meta data میگن ) ذخیره کنه ( ویژگی زبون های markup )
- ا XML یک فرمت جهانی و شناخته شدس که خیلی جاها ازش استفاده میشه
ساختار فایل
ا XML Declaration
خب معمولا اول فایل های XML ی قسمت داریم که بهش میگن XML Declaration و توش اطلاعات کلی در مورد اون فایل مثل ورژن خود xml ( اره xml هم ورژن بندی داره) و نوع encoding اش رو مینویسن ( مثلا utf-8 یا utf-16) ( بعدا باید ی مقاله در مورد utf-8 بنویسم )
ی چیزی شبیه به این
<?xml version = "1.0" encoding = "UTF-8"?>که با <?xml شروع میشه و با <؟ هم تموم میشه. ی سری attribute هم داره که اون اطلاعات کلی رو مشخص میکنن. ( جلو تر در مورد attribute توضیح دادم )
تگ - tag
به چیزایی میگن که بین علامت بزرگتر و کوچیکتر میاد که دو نوع داره:
- تگ باز
<tag>- تگ بسته
</tag>همون طور که میبینید توی تگ بسته، بعد از علامت کوچیکتر، ی اسلش ( / ) هم داره
برای اسم تگ میشه از کاراکتر های خط فاصله ( - )، و دو نقطه ( : ) ، نقطه ( . ) حروف انگلیسی و عدد هم استفاده کرد. ولی نمیشه از کلمه های رزور شده مثل خود xml استفاده کرد و اسم تگ حتما باید با حروف انگلیسی یا زیرخط ( _ ) شروع بشه.
مثلا چنین چیزی هم قبوله:
<strange-tag_name:what>المان - Element
به جفت تگ باز و بسته میگن المان. مثل این:
<tag> </tag>
حالا بین این جفت میتونه المان های دیگه یا حتی متن خالی بیاد ( که بهش میگن بدنه اون المان) مثلا:
<wrapper>
<my-tag> just a sentence </my-tag>
</wrapper>( فقط برای اطلاعات عمومی بدونید معنی wrapper میشه دربردارنده - که من اینجا به عنوان ی دربردارنده المان my-tag ازش استفاده کردم که اسمش به کارش بخوره D: )
اگر المان تون بدنه نداشته باشه مثل:
<no-body></no-body>میتونه به صورت یکسره هم نوشته بشه:
<no-body />ویژگی یا خاصیت - Attribute
یک attribute یک جفت "نام" و "مقدار" هست که بعد از اسم تگ باز نوشته میشه و ی سری اطلاعات جزئی تر رو مشخص میکنه. قاعده نوشتن قسمت "نام" مثال قاعده tag هست. مقدارش بعد از یک علامت تساوی ( = ) توی کوتیشن دوتایی میاد.
<person name = "Hamid" age = "20">اینجا ی تگ به نام person دارم که دوتا attribute داره:
- اولی که name هست و مقدارش Hamid هست
- دومی که age هست و مقدارش 20 هست
کامنت یا نظر - Comment
کامنت به تیکه کد یا متنی میگن که برنامه نویس یا سازنده اون فایل برای خودش یا بقیه مینویسه و عملا برنامه کامپیوتری که ازش استفاده میکنه هیچ کاری باهاش نداره.
کامنت ها با --!> شروع میشن و با <-- تموم میشن. هر چیزی که بین این دوتا علامت بیاد، توسط برنامه هدف نادیده گرفته میشه.
<!-- Your comment -->آیا XML ی زبون برنامه نویسیه؟
زبون برنامه نویسی به زبونی میگن که قواعد نوشتاری و واژه نامه خاص خودش رو داره و برای این استفاده میشه که علمیات خاصی رو توی کامپیوتر اجرا کنه و نحوه اجرای اون رو توضیح داده باشه. از اونجایی که XML هیچ الگوریتم یا نحوه اجرایی رو بیان نمیکنه، پس زبون برنامه نویسی محسوب نمیشه
ا XML یک زبون markup هست
همونطور که بالاتر گفتم، XML اطلاعات شما رو میتونه همراه meta-data ذخیره کنه. به همین دلیل بهش میگیم یک زبون markup. ا attribute ها meta-data های المان های شما رو مشخص میکنن.
مثلا فرض کنید که میخوایم اطلاعات کامنت های این پست رو (شما فکر کنید قسمت کامنت ها پره D: ) به صورت XML ذخیره کنیم.
خب هر کامنت این اطلاعات رو داره:

این اطلاعات رو میتونم توی xml به روش های مختلفی نمایش بدم. ولی یکی از روش هاش اینه:

همونطور که میبینید، متن توی بدنه المان comment محتوای اصلیم رو که متن کامنت بود گذاشتم و با استفاده از attribute های date و user-id ، تاریخ و آیدی کسی که کامنت گذاشته رو هم مشخص کردم.

خب تصویر بالا، ی روش دیگه ذخیره اطلاعات همون کامنت رو نشون میده. فرقایی با روش اول داره. مثلا اینجا هربخش از هم جدا شدن و توی المان مربوط به خودشون ذخیره شدن.
یک فرق دیگه ای که وجود داره اینه که من تاریخ رو به یک صورت دیگه نوشتم ( توی المان date) و با ویژگی type نوع تاریخی که توی المان date اومده رو مشخص کردم. نوع تاریخ به صورت unix-time نوشته شده که تاریخ رو با یک عدد صحیح 64 بیتی نشون داده. توی این مثال، 1641328200 خود داده هست و اون قسمت type = "unix-time"i جزء meta-data ( اطلاعاتی که در مورد اطلاعات اصلی هست ) محسوب میشه.
به زبونایی که میشه برای اطلاعاتت meta-data مشخص کنی، میگن markup.
توی مثال زیر هم اطلاعات رأس های یک مثلث و یک شکل 6 ضلعی رو توی یک صفحه به صورت فایل XML نشون دادیم. ( که دید واضح تری پیدا کنید D: )

گوشه بالا سمت چپ نقطه 0 و 0 حساب میشه و اندازه صفحه 216 در 114 هست

دیدید سخت نبود؟ دفعه بعد هم ی فایل xml دیدید، بازش کنید ببینید اطلاعاتش رو چطور ذخیره کرده D:
مطلبی دیگر از این انتشارات
برای رفتن تا سر کوچه سوار هواپیما نمیشوند!
مطلبی دیگر از این انتشارات
ندانستن عیب نیست، "نپرسیدن" عیب است
مطلبی دیگر از این انتشارات
متااسپلوییت چیست ؟