سمات XML
يمكن أن تحتوي عناصر XML على سمات ، تمامًا مثل HTML.
تم تصميم السمات لتحتوي على البيانات المتعلقة بعنصر معين.
يجب أن يتم اقتباس سمات 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>
في المثال الأول ، يعتبر الجنس سمة. في المثال الأخير ، الجنس هو عنصر. كلا المثالين يقدمان نفس المعلومات.
لا توجد قواعد حول وقت استخدام السمات أو وقت استخدام العناصر في XML.
طريقتي المفضلة
تحتوي مستندات XML الثلاثة التالية على نفس المعلومات تمامًا:
يتم استخدام سمة التاريخ في المثال الأول:
<note date="2008-01-10">
<to>Tove</to>
<from>Jani</from>
</note>
يتم استخدام عنصر <date> في المثال الثاني:
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
</note>
تم استخدام عنصر <date> موسع في المثال الثالث: (هذا هو المفضل لدي):
<note>
<date>
<year>2008</year>
<month>01</month>
<day>10</day>
</date>
<to>Tove</to>
<from>Jani</from>
</note>
تجنب سمات XML؟
بعض الأشياء التي يجب مراعاتها عند استخدام السمات هي:
- لا يمكن أن تحتوي السمات على قيم متعددة (يمكن للعناصر)
- لا يمكن أن تحتوي السمات على هياكل شجرية (يمكن للعناصر)
- السمات ليست قابلة للتوسيع بسهولة (للتغييرات المستقبلية)
لا ينتهي الأمر بهذا الشكل:
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
سمات XML للبيانات الوصفية
في بعض الأحيان يتم تعيين مراجع المعرف للعناصر. يمكن استخدام هذه المعرفات لتعريف عناصر XML بنفس طريقة السمة id في HTML. يوضح هذا المثال هذا:
<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
سمات معرف أعلاه لتحديد الملاحظات المختلفة. إنه ليس جزءًا من الملاحظة نفسها.
ما أحاول قوله هنا هو أنه يجب تخزين البيانات الوصفية (بيانات حول البيانات) كسمات ، ويجب تخزين البيانات نفسها كعناصر.