درخت XML
ساختار سلسلهمراتبی XML — ریشه، شاخهها و برگها و روابط والد/فرزند
سند XML یک درخت است
سند XML از دیدگاه ساختاری، یک درخت (Tree) وارونه است که از یک ریشه شروع میشود و به شاخهها و برگها میرسد. این ساختار سلسلهمراتبی (Hierarchical) به XML اجازه میدهد دادههای تودرتو و پیچیده را مدل کند.
مثال: درخت یک سند XML
<?xml version="1.0" encoding="UTF-8"?>
<کتابخانه>
<کتاب دسته="برنامهنویسی">
<عنوان>آموزش XML</عنوان>
<نویسنده>سارا محمدی</نویسنده>
<سال>۲۰۲۴</سال>
<قیمت>۹۵۰۰۰</قیمت>
</کتاب>
<کتاب دسته="رمان">
<عنوان>سووشون</عنوان>
<نویسنده>سیمین دانشور</نویسنده>
<سال>۱۳۴۸</سال>
<قیمت>۶۰۰۰۰</قیمت>
</کتاب>
</کتابخانه>
نمودار درختی این سند به این شکل است:
کتابخانه (ریشه)
├── کتاب (فرزند کتابخانه)
│ ├── عنوان
│ ├── نویسنده
│ ├── سال
│ └── قیمت
└── کتاب
├── عنوان
├── نویسنده
├── سال
└── قیمت
اصطلاحات مهم درخت XML
| اصطلاح | توضیح |
|---|---|
| Root (ریشه) | عنصر بالای درخت؛ هر سند XML فقط یک ریشه دارد |
| Parent (والد) | عنصری که زیرمجموعه (فرزند) دارد |
| Child (فرزند) | عنصری که داخل عنصر دیگری قرار گرفته |
| Sibling (هموالد) | عناصری که والد یکسان دارند |
| Leaf (برگ) | عنصری که هیچ فرزندی ندارد (مثل متن) |
| Text (متن) | محتوای متنی داخل یک عنصر |
| Attribute (ویژگی) | اطلاعات اضافی در تگ شروع (مثل دسته="رمان") |
روابط در مثال بالا
<کتابخانه>والدِ دو عنصر<کتاب>است- دو عنصر
<کتاب>با هم Sibling (هموالد) هستند - هر
<کتاب>والدِ<عنوان>،<نویسنده>،<سال>و<قیمت>است - عناصر
<عنوان>و<نویسنده>و... برگهای درخت هستند
قانون مهم: فقط یک عنصر ریشه!
سند زیر نامعتبر است چون دو ریشه دارد:
<?xml version="1.0"?>
<کتاب>...</کتاب>
<کتاب>...</کتاب> ❌ خطا! ریشه دوم
راهحل درست، قرار دادن همه در یک ریشه مشترک است:
<?xml version="1.0"?>
<کتابها>
<کتاب>...</کتاب>
<کتاب>...</کتاب> ✅ درست
</کتابها>
پرولوگ XML
خط اول سند، پرولوگ یا اعلان XML نام دارد:
<?xml version="1.0" encoding="UTF-8"?>
- این خط اختیاری است اما شدیداً توصیه میشود
- باید اولین خط سند باشد — حتی یک فاصله قبل از آن مجاز نیست!
versionنسخه XML را مشخص میکند (معمولاً 1.0)encodingنوع کدگذاری کاراکترها را تعیین میکند (UTF-8 رایجترین است)
همیشه از
encoding="UTF-8" استفاده کنید تا متن فارسی بدون مشکل ذخیره و منتقل شود.همه چیز باید بسته شود
از ریشه تا آخرین برگ، همه تگها باید بسته شوند. درخت XML نمیتواند شاخهای ناتمام داشته باشد — این یکی از سختگیرانهترین قوانین XML است که در درس سینتکس کامل بررسی میکنیم.
این مبحث بخشی از دوره آموزش کامل XML است.