ویژگی‌های XML

عناصر XML می‌توانند در برچسب‌های شروع شامل ویژگی‌ها باشند، مانند HTML.

ویژگی (Attribute) اطلاعات اضافی (اضافی) در مورد عنصر ارائه می‌دهد.

ویژگی‌های XML باید با نقل‌قول‌ها نوشته شوند

مقدار ویژگی‌ها باید بین نقل‌قول‌ها قرار گیرند، اما می‌توان از نقل‌قول‌های یکگانه و دوگانه هر دو استفاده کرد.

مثلاً برای نمایش جنسیت یک شخص، برچسب <person> می‌تواند به این صورت باشد:

<person gender="female">

یا می‌تواند اینطور هم باشد:

<person gender='female'>

اگر مقدار ویژگی خود شامل نقل‌قول‌های دوگانه باشد، می‌توانید از نقل‌قول‌های یکگانه استفاده کنید، مثلاً:

<gangster name='George "Shotgun" Ziegler'>

یا می‌توانید از实体 کاراکتر استفاده کنید:

<gangster name="George "Shotgun" Ziegler">

عناصر و ویژگی‌های XML

لطفاً این دو مثال را ببینید:

<person gender="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>
<person>
  <gender>female</gender>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

در مثال اول، sex یک ویژگی است. در مثال دوم، sex یک فرزند است. هر دو مثال می‌توانند اطلاعات مشابهی ارائه دهند.

در XML هیچ قانونی وجود ندارد که به ما بگوید چه زمانی باید از ویژگی‌ها استفاده کنیم و چه زمانی از فرزندان استفاده کنیم. تجربه من این است که در HTML، ویژگی‌ها بسیار راحت هستند، اما در XML، باید از استفاده از ویژگی‌ها خودداری کنید. اگر اطلاعات به نظر می‌رسد که بیشتر شبیه داده است، از فرزندان استفاده کنید.

روش مورد علاقه من

سه مستند XML زیر شامل اطلاعات کاملاً مشابه هستند:

در مثال اول از ویژگی date استفاده شده است:

<note date="2008-01-10">
  <to>George</to>
  <from>John</from>
</note>

در مثال دوم از عنصر <date> استفاده شده است:

<note>
  <date>2008-01-10</date>
  <to>George</to>
  <from>John</from>
</note>

در مثال سوم از عنصر گسترش‌یافته date استفاده شده است (این مورد مورد علاقه من است):

<note>
  <date>
    <year>2008</year>
    <month>01</month>
    <day>10</day>
  </date>
  <to>George</to>
  <from>John</from>
</note>

آیا باید از ویژگی‌های XML استفاده نکرد؟

مواردی که باید هنگام استفاده از ویژگی‌ها در نظر گرفت عبارتند از:

  • ویژگی‌ها نمی‌توانند چندین مقدار را شامل شوند (عناصر می‌توانند)
  • ویژگی‌ها نمی‌توانند ساختار درختی را توصیف کنند (عناصر می‌توانند)
  • ویژگی‌ها قابل گسترش نیستند (برای تغییرات آینده)

سعی کنید از عناصر برای توصیف داده‌ها استفاده کنید. و تنها از ویژگی‌ها برای ارائه اطلاعات مرتبط با داده‌ها استفاده کنید.

از این کارهای احمقانه (این راهی نیست که XML باید استفاده شود) خودداری کنید:

<note day="10" month="01" year="2008"
to="George" from="John" heading="Reminder"
body="Don't forget the meeting!">
</note>

ویژگی‌های XML برای داده‌های متاداده

گاهی اوقات شناسه‌ای به عناصر تخصیص می‌شود. این شناسه‌ها می‌توانند برای شناسایی عناصر XML استفاده شوند، که به همان طریقی عمل می‌کند که ID در HTML استفاده می‌شود. این مثال به ما نشان می‌دهد که این چیست:

<messages>
  <note id="501">
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
  </note>
  <note id="502">
    <to>John</to>
    <from>George</from>
    <heading>Re: Reminder</heading>
    <body>I will not</body>
  </note> 
</messages>

این ID تنها یک شناسه است که برای شناسایی برچسب‌های مختلف استفاده می‌شود. این بخشی از داده‌های برچسب نیست.

ایده‌ای که ما به شدت می‌خواهیم به شما انتقال دهیم این است که: داده‌های مربوط به داده‌ها (مéta‌data) باید به عنوان ویژگی‌ها ذخیره شوند و داده‌های خود باید به عنوان عناصر ذخیره شوند.