Принципи дизайну XML: Коли використовувати елементи проти атрибутів Uche Ogbuji від IBM, мабуть, один з найкращих ресурсів у цьому питанні.
В основі рішення лежить те, що атрибути - це "зроблені" речі. Ви не можете їх змінити чи змінити чи вкласти. Вони впорядковані незалежно і відрізняються всередині елемента (у вас не може бути двох однакових речей).
Якщо будь-яке з цих обмежень може змінитись, зробіть дані дочірнім вузлом XML.
У вашому прикладі є людина, яка має ім’я та вік. У мене є ім’я, середнє та прізвище ... і прізвисько. А деякі люди мають дівочі імена, численні середні імена або почесні імена - як би ви включили Джона Рональда Реуеля Толкіна до такої структури?
І тому у нас є хтось, хто має два прізвища, які мають наказ на них. Це має чітко показувати, що ні, атрибут не найкращий вибір для цього.
Зараз я не можу його знайти, але у вищезгаданому зв'язаному документі є твердження, що імена - це речі, які потребують трохи роздумів, що призводить до "Я сподіваюсь розширити питання щодо імен людей у розмітці в майбутній статті". Якщо хтось має на це посилання, залиште коментар або відредагуйте його у цьому місці.
З іншого боку, вік - це щось, що має досить фіксовану структуру (я б запропонував день народження, а не ціле число). Таким чином, представлення цієї інформації у відомому та зрозумілому форматі має сенс в атрибуті. У людини є один, і лише один день народження, і немає «замовлення», яке ви хочете зберегти.
Uche Ogbuji визначає три основні принципи при правильному проектуванні формату xml. Далі наведені скорочені цитати з вищезгаданого зв'язаного документа.
- Принцип структурованої інформації
Якщо інформація виражена в структурованій формі, особливо якщо структура може бути розширюваною, використовуйте елементи. З іншого боку: Якщо інформація виражається як атомний маркер, використовуйте атрибути
- Принцип читабельності
Якщо інформація призначена для прочитання та розуміння людиною, використовуйте елементи. Якщо інформація найбільш зрозуміла і засвоюється машиною, використовуйте атрибути.
- Принцип зв’язування елемента / атрибута
Використовуйте елемент, якщо вам потрібно змінити його значення іншим атрибутом
І так, імена мають бути елементами - це структуровані дані, які не є атомним маркером, вони швидше читаються людиною, ніж комп'ютер, і вони можуть бути змінені іншим атрибутом самого імені.
Дати повинні бути атрибутами - це дані, що є атомним маркером, вони швидше за все читаються комп'ютером, ніж людиною (а потім перетворюються у бажаний для людини формат, якщо потрібно ), і нарешті, навряд чи вони будуть змінені іншими атрибути на них.