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:
مطلبی دیگر از این انتشارات
سیستم های Push-to-Talk Over Cellular (Poc)
مطلبی دیگر از این انتشارات
بررسی 15 موضوع متنوع و مفید در مهندسی نرمافزار
مطلبی دیگر از این انتشارات
معماری تمیز