<img src="computer.gif"><a href="demo.html">
غالبًا ما توفر السمات معلومات ليست جزءًا من البيانات. في المثال التالي، لا علاقة لنوع الملف بالبيانات، ولكنه مهم للبرنامج الذي يحتاج إلى التعامل مع هذا العنصر:
<file type="gif">computer.gif</file>
يجب أن تكون قيم السمات محاطة بعلامات اقتباس، ولكن يمكن استخدام علامات الاقتباس المفردة والمزدوجة. على سبيل المثال، جنس الشخص، يمكن كتابة عنصر الشخص على النحو التالي:
<جنس الشخص = "أنثى">
أو يعمل هذا أيضًا:
<جنس الشخص='أنثى'>
إذا كانت قيمة السمة نفسها تحتوي على علامات اقتباس مزدوجة، فيمكنك استخدام علامات الاقتباس المفردة، كما في هذا المثال:
<اسم العصابات='جورج "بندقية" زيغلر'>
أو يمكنك استخدام كيانات الأحرف:
<person sex="female"><firstname>آنا</firstname><lastname>سميث</lastname></person>
<شخص><sex>أنثى</sex><الاسم الأول>آنا</الاسم الأول><اسم العائلة>سميث</lastname></person>
في المقام الأول، الجنس هو خاصية. وفي الحالة الثانية، الجنس عنصر. كلتا الحالتين توفر نفس المعلومات.
لا توجد قواعد تخبرنا متى نستخدم السمات ومتى نستخدم العناصر. تجربتي هي أنه في HTML، تكون السمات ملائمة جدًا للاستخدام، ولكن في XML، يجب أن تحاول تجنب استخدام السمات. إذا كانت المعلومات تشبه إلى حد كبير البيانات، فاستخدم العناصر.
تحتوي مستندات XML الثلاثة التالية على نفس المعلومات تمامًا:
يتم استخدام سمة التاريخ في المثال الأول:
<note date="10/01/2008"><to>توف</to><من>جاني</from><heading>تذكير</heading><body>لا تنساني في نهاية هذا الأسبوع!</body </ملاحظة>
يستخدم المثال الثاني عنصر التاريخ:
<note><date>10/01/2008</date><to>توف</to><من>جاني</from><heading>تذكير</heading><body>لا تنساني في نهاية هذا الأسبوع! </body></note>
يستخدم المثال الثالث عنصر التاريخ الممتد (وهذا هو المفضل لدي):
<note><date><day>10</day><month>01</month><year>2008</year></date><to>توف</to><from>جاني</from> <heading>تذكير</heading><body>لا تنساني في نهاية هذا الأسبوع!</body></note>
بعض المشاكل الناجمة عن استخدام السمات:
لا يمكن أن تحتوي السمات على قيم متعددة (يمكن للعناصر)
لا يمكن أن تحتوي السمات على هياكل شجرة (يمكن للعناصر)
الخصائص ليست قابلة للتمديد بسهولة (للتغييرات المستقبلية)
من الصعب قراءة الخصائص وصيانتها. يرجى محاولة استخدام العناصر لوصف البيانات. بدلاً من ذلك، ما عليك سوى استخدام السمات لتوفير معلومات مستقلة عن البيانات.
لا تفعل شيئًا غبيًا كهذا (ليست هذه هي الطريقة التي ينبغي بها استخدام XML):
<ملاحظة يوم = "10" شهر = "01" سنة = "2008" إلى = "توف" من = "جاني" عنوان = "تذكير" الجسم = "لا تنساني في نهاية هذا الأسبوع!"></ملاحظة>
في بعض الأحيان يتم تعيين مراجع المعرف للعناصر. يمكن استخدام فهارس المعرفات هذه لتحديد عناصر XML بنفس طريقة سمة المعرف في HTML. وهذا المثال يوضح لنا هذا الوضع:
<messages><note id="501"><to>توف</to><من>جاني</from><heading>تذكير</heading><body>لا تنساني في نهاية هذا الأسبوع!</body> </note><note id="502"><to>جاني</to><from>توف</from><heading>رد: تذكير</heading><body>لن</body></ ملاحظة></الرسائل>
سمة المعرف أعلاه هي مجرد معرف يستخدم لتحديد الملاحظات المختلفة. أنها ليست جزءا من بيانات المذكرة.
الفكرة التي نحاول أن ننقلها إليك هنا هي أن البيانات الوصفية (بيانات حول البيانات) يجب أن يتم تخزينها كسمات، ويجب تخزين البيانات نفسها كعناصر.
فيما يلي القواعد التي يجب أن تتبعها سمات XML الموجزة:
لا يمكن أن تظهر أسماء السمات مرة واحدة في نفس علامة البداية أو علامة العنصر الفارغة
يجب الإعلان عن الخاصية باستخدام تعريف نوع المستند (DTD) المعلن في ورقة الخصائص.
لا يمكن أن تحتوي قيم الخصائص على مراجع كيانات مباشرة أو غير مباشرة لكيانات خارجية
لا يمكن أن يحتوي النص البديل لأي كيان يسمى قيمة السمة المباشرة أو غير المباشرة على أقل من علامة