Принципы разработки XML: когда использовать элементы против атрибутов от Uche Ogbuji из IBM, вероятно, является одним из лучших ресурсов по этому вопросу.
В основе решения лежит то, что атрибуты являются «выполненными» вещами. Вы не можете изменить их или изменить их или вложить их. Они не зависят от порядка и различны внутри элемента (вы не можете иметь две одинаковые вещи).
Если любое из этих ограничений может измениться, сделайте данные дочерним узлом XML.
В вашем примере у вас есть человек, у которого есть имя и возраст. У меня есть имя, отчество и фамилия ... и псевдоним. А у некоторых людей есть девичьи фамилии, несколько отчеств или почетные звания - как бы вы включили Джона Рональда Ройеля Толкина в такую структуру?
И поэтому у нас есть кто-то, кто имеет два отчества, которые имеют порядок для них. Это должно ясно показать, что нет, атрибут не лучший выбор для этого.
Я не могу найти его в настоящее время, но в вышеупомянутом связанном документе есть утверждение, что имена - это вещи, которые требуют некоторой размышления, что приводит к «Я надеюсь подробнее остановиться на обработке имен людей в разметке в будущей статье». Если у кого-то есть лидерство в этом, пожалуйста, оставьте комментарий или отредактируйте его в этом месте
С другой стороны, возраст - это то, что имеет довольно фиксированную структуру (я бы предложил день рождения, а не целое число). Таким образом, представление этой информации в хорошо известном и понятном формате имеет смысл в атрибуте. У человека есть один и только один день рождения, и нет «заказа» на него, который вы хотите сохранить.
Уче Огбуджи определяет три основных принципа правильной разработки формата xml. Ниже приведены сокращенные цитаты из вышеуказанного связанного документа.
- Принцип структурированной информации
Если информация выражена в структурированной форме, особенно если структура может быть расширяемой, используйте элементы. С другой стороны: если информация выражена как атомарный токен, используйте атрибуты
- Принцип читабельности
Если информация предназначена для чтения и понимания человеком, используйте элементы. Если информация легче всего понять и переварить на машине, используйте атрибуты.
- Принцип привязки элемента / атрибута
Используйте элемент, если вам нужно изменить его значение другим атрибутом
И так, имена должны быть элементами - это структурированные данные, которые не являются атомарными токенами, они более вероятно будут прочитаны человеком, чем компьютером, и они могут быть изменены другим атрибутом самого имени.
Даты должны быть атрибутами - это данные, которые являются атомным токеном, они более вероятно читаются компьютером, а не человеком (и затем преобразовываются в предпочтительный формат человека, если это необходимо ), и, наконец, они вряд ли будут изменены другими атрибуты на них.