فایل YAML چیست؟
فایل YAML شامل یک زبان YAML (YAML Ain’t Markup Language) است که یک زبان سریال سازی داده مبتنی بر یونیکد است. برای فایلهای پیکربندی، پیامرسانی اینترنتی، ماندگاری شی و غیره استفاده میشود. YAML از پسوند .yaml برای فایلهای خود استفاده میکند. نحو آن مستقل از یک زبان برنامه نویسی خاص است. اساساً YAML برای تعامل انسانی و برای کار با زبان های برنامه نویسی مدرن طراحی شده است. پشتیبانی از سریال سازی ساختارهای داده بومی دلخواه، خوانایی فایل های YAML را افزایش داده است، اما فرآیند تجزیه و تولید فایل را کمی پیچیده کرده است.
تاریخچه مختصر
YAML اولین بار در سال 2001 پیشنهاد شد و توسط کلارک ایوانز، اینگی دات نت و اورن بن کیکی توسعه یافت. اولین بار گفته شد که YAML به معنای زبان نشانه گذاری دیگری است تا هدف خود را به عنوان یک زبان نشانه گذاری نشان دهد. بعداً به عنوان YAML Aint Markup Language تغییر کاربری داد تا هدف خود را به عنوان داده گرا نشان دهد.
فرمت فایل YAML
فایل YAML از انواع داده های زیر تشکیل شده است
- اسکالر: اسکالرها مقادیری مانند رشته ها، اعداد صحیح، بولی ها و غیره هستند.
- توالی: دنباله ها لیست هایی هستند که هر مورد با خط فاصله (-) شروع می شود. لیست ها نیز می توانند تو در تو باشند.
- Mappings: نگاشت قابلیت لیست کردن کلیدها با مقادیر را می دهد.
نحو
- Whitespace: تورفتگی فضای سفید برای نشان دادن تودرتو و ساختار کلی استفاده می شود.
`` یامل نام: جان اسمیت مخاطب: خانه: 1012355532 دفتر: 5002586256 نشانی: خیابان: | 123 کوچه گردباد سوئیت 16 شهر: East Centerville ایالت: KS
- **نظرات**: نظرات با علامت # شروع می شوند.
`` یامل
# این یک نظر YAML است
- لیست ها: خط فاصله (-) برای نشان دادن اعضای لیست با هر عضو در یک خط جداگانه استفاده می شود. اعضای لیست را می توان در پرانتز ([…]) با کاما (،) از هم جدا کرد.
`` یامل
- “آ”
- “ب”
- “سی”
`` یامل
[A، B، C]
- آرایه انجمنی: یک آرایه انجمنی با براکت های مجعد احاطه شده است ({…}). کلیدها و مقادیر با کولون (:) و هر جفت با کاما (،) از هم جدا می شوند.
`` یامل {نام: جان اسمیت، سن: 20}
- **رشته**: رشته را می توان با یا بدون دو گیومه () یا تک گیومه (') نوشت.
`` یامل
رشته نمونه
"رشته نمونه"
رشته نمونه
- محتوای بلوک اسکالر: محتوای اسکالر را می توان با استفاده از موارد زیر در نماد بلوک نوشت:
- “|: همه وقفه های زنده قابل توجه هستند.”
- “**>****: هر شکست خط به فاصله تا می شود. فضای خالی اصلی برای هر خط را حذف می کند.”
`` یامل داده ها: | YAML (YAML زبان نشانه گذاری نیست) یک زبان سریال سازی داده است
`` یامل
داده ها: ؟
YAML (YAML زبان نشانه گذاری نیست)
یک زبان سریال سازی داده است
- ** اسناد چندگانه **: چندین سند با سه خط فاصله (—) در یک جریان واحد از هم جدا می شوند. خط فاصله نشان دهنده شروع سند است. خط فاصله همچنین برای جدا کردن دستورالعمل ها از محتوای سند استفاده می شود. انتهای سند با سه نقطه (…) مشخص می شود.
`` یامل
سند 1
سند 2 …
- **نوع**: برای تعیین نوع مقدار از علامت تعجب دوتایی (!!) استفاده می شود.
`` یامل
الف: !!float 123
ب: !!خ 123
- برچسب: برای تخصیص یک تگ به یک یادداشت از علامت علامت (&) و برای ارجاع به آن گره از علامت ستاره (*) استفاده می شود.
`` یامل نام: جان اسمیت صورتحساب: &id01 خیابان: | 123 کوچه گردباد سوئیت 16 شهر: East Centerville ایالت: KS
ارسال به: *id01
- **دستورالعمل ها**: اسناد YAML را می توان با دستورالعمل ها در یک جریان مقدم کرد. دستورالعمل ها با علامت درصد (%) و سپس نام و سپس پارامترها با فاصله از یکدیگر شروع می شوند.
`` یامل
%YAML 1.2
---
محتوای سند
نمونه فایل YAML
در اینجا می توانید یک نمونه فایل yaml docker را در زیر مشاهده کنید:
topology:
database_node_name: docker_controller
docker_controller_node_name: docker_controller
self_service_portal_node_name: docker_controller
kvm_compute_node_names: kvm_compute1
docker_compute_node_names: docker_compute1
YAML در مقابل JSON
اساسا، هر دو JSON و YAML برای ارائه یک قالب تبادل داده قابل خواندن توسط انسان توسعه داده شده اند. YAML به عنوان یک ابر مجموعه از فرمت JSON تحقق می یابد. این بدان معنی است که ما می توانیم JSON را با استفاده از تجزیه کننده YAML تجزیه کنیم. اگرچه اجرای عملی این نظریه کمی مشکل است. بنابراین، برخی از تفاوت های اساسی بین YAML و JSON در زیر آورده شده است:
YAML | JSON |
---|---|
فرآیند پیچیده و زمان بر تجزیه داده های سریالی | تجزیه سریع و آسان داده های سریالی JSON با طراحی ساده تر |
حمایت کمتر جامعه | حمایت و محبوبیت جامعه بزرگتر |
پشتیبانی از نظرات | نظرات را پشتیبانی نمی کند |
قابلیت استفاده از مرجع سایر اشیاء داده | سریال سازی ساختارهای پیچیده با ارجاعات شیء غیرممکن است |
سلسله مراتب با استفاده از کاراکترهای فاصله دو نشان داده می شود. کاراکترهای Tab مجاز نیستند | اشیاء و آرایه ها در براکت ها و براکت ها مشخص می شوند. |
نقل قول رشته اختیاری است اما از نقل قول های تکی و دوگانه پشتیبانی می کند. | رشته ها باید در گیومه های دوگانه باشند. |
گره ریشه می تواند هر یک از انواع داده های معتبر باشد | گره ریشه باید یک آرایه یا یک شی باشد. |
منابع
See Also
- YML - فرمت فایل سند YAML
- SMC File - Super Nintendo Game ROM - فایل .smc چیست و چگونه آن را باز کنیم؟
- فایل BIB - BibTeX Bibliography - فایل .bib چیست و چگونه آن را باز کنیم؟
- فایل FS - Visual F# Source File - فایل .fs چیست و چگونه آن را باز کنیم؟
- فایل GED - GEDCOM Genealogy Data File - فایل .ged چیست و چگونه آن را باز کنیم؟