ویژگیهای 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>
چرا عنصر معمولاً بهتر است؟
- ویژگی نمیتواند چند مقدار داشته باشد: اگر یک نفر چند تلفن داشته باشد، عنصر این اجازه را میدهد اما ویژگی نه:
<person> <phone type="mobile">0912...</phone> <phone type="home">021...</phone> </person> - ویژگی نمیتواند تودرتو شود: عنصر میتواند ساختار درختی داشته باشد
- ویژگی برای توسعه محدود است: افزودن ساختار جدید به عنصر ساده است
- خوانایی: عناصر با ساختار منظم خواناترند
- اعتبارسنجی: کنترل محتوای عنصر با 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 است.