ویژگی‌های XML

ویژگی (Attribute) در XML — نحوه استفاده، تفاوت با عنصر و بهترین شیوه‌ها

ویژگی چیست؟

ویژگی (Attribute) اطلاعاتی اضافی درباره عنصر است که در تگ شروع قرار می‌گیرد:

<person gender="female">سارا</person>
         ↑ نام ویژگی   ↑ مقدار ویژگی

ویژگی‌ها همیشه به شکل نام="مقدار" نوشته می‌شوند و مقدار آنها باید داخل نقل‌قول باشد (دو نقل‌قول "..." یا تک نقل‌قول '...').

مثال‌های استفاده از ویژگی

<img src="computer.gif"/>
<person age="25">
<note date="2024/02/14">
<book lang="fa" edition="3">

عنصر در برابر ویژگی

هر دو روش زیر داده یکسانی حمل می‌کنند:

<!-- با ویژگی -->
<note date="2024-02-14">
    <to>علی</to>
    <from>سارا</from>
</note>

<!-- با عنصر -->
<note>
    <date>2024-02-14</date>
    <to>علی</to>
    <from>سارا</from>
</note>

چرا عنصر معمولاً بهتر است؟

  1. ویژگی نمی‌تواند چند مقدار داشته باشد: اگر یک نفر چند تلفن داشته باشد، عنصر این اجازه را می‌دهد اما ویژگی نه:
    <person>
        <phone type="mobile">0912...</phone>
        <phone type="home">021...</phone>
    </person>
  2. ویژگی نمی‌تواند تودرتو شود: عنصر می‌تواند ساختار درختی داشته باشد
  3. ویژگی برای توسعه محدود است: افزودن ساختار جدید به عنصر ساده است
  4. خوانایی: عناصر با ساختار منظم خواناترند
  5. اعتبارسنجی: کنترل محتوای عنصر با DTD/Schema کامل‌تر است

چه زمانی ویژگی مناسب است؟

ویژگی برای اطلاعاتی مناسب است که خودشان بخشی از داده نیستند، بلکه درباره داده توضیح می‌دهند (متادیتا):

<!-- id یک متادیتاست، نه محتوای پیام -->
<message id="501">
    <text>سلام دنیا</text>
</message>

<!-- lang توضیح می‌دهد متن با چه زبانی است -->
<title lang="fa">آموزش XML</title>

ویژگی‌های چندگانه

یک عنصر می‌تواند چند ویژگی داشته باشد، اما نام ویژگی‌ها نباید تکراری باشد:

<book lang="fa" category="programming" edition="3">   ✅ درست
<book lang="fa" lang="en">                              ❌ خطا! تکرار نام

ویژگی بدون مقدار مجاز نیست

برخلاف HTML که ویژگی بدون مقدار دارد (مثل disabled)، در XML هر ویژگی باید مقدار داشته باشد:

<input disabled>       ❌ در XML غلط
<input disabled="true"/>  ✅ درست

جمع‌بندی: قانون طلایی

نوع اطلاعاتکجا بگذاریم؟مثال
داده اصلیعنصر<name>علی</name>
شناسه یکتاویژگی<book id="123">
زبان/واحد/نوعویژگی<price currency="IRR">
اطلاعات تودرتوعنصر<address><city>...</city></address>
لیست مقادیرعنصرچند عنصر <phone>
اگر شک دارید، از عنصر استفاده کنید! هیچ داده‌ای وجود ندارد که با ویژگی قابل بیان باشد ولی با عنصر نشود — عکس این جمله درست نیست.

این مبحث بخشی از دوره آموزش کامل XML است.

ابزارهای مرتبط