Существует статья под названием «Principles of XML design: When to use elements versus attributes» на веб-сайте IBM.
Хотя, как представляется, не существует много жестких правил, есть некоторые хорошие рекомендации, упомянутые в публикации. Например, одна из рекомендаций состоит в том, чтобы использовать элементы, когда ваши данные не должны быть нормализованы для белого пространства, поскольку XML-процессоры могут нормализовать данные в атрибуте, тем самым изменяя исходный текст.
Я время от времени ссылаюсь на эту статью, когда я разрабатываю различные структуры XML. Надеюсь, это будет полезно и для других.
редактировать - С сайта:
Принцип основного содержания
Если учесть указанную информацию, чтобы быть частью основного материала, экспрессируются или передавалось в XML, положить его в элементе. Для человекочитаемых документов это обычно означает основной контент, который доводится до читателя. Для форматов форматов, ориентированных на машины, это обычно означает данные, которые поступают непосредственно из проблемного домена. Если вы считаете, что информация является периферийной или случайной для основного сообщения или предназначена исключительно для того, чтобы приложения обрабатывали основное сообщение, используйте атрибуты. Это позволяет избежать загромождения основного содержимого вспомогательным материалом. Для форматов форматов, ориентированных на машины, обычно это относится к конкретным приложениям для основных данных из проблемной области.
В качестве примера я видел много форматов XML, обычно домашних, на предприятиях, где названия документов были помещены в атрибут. Я думаю, что титул является такой фундаментальной частью сообщения документа, что он всегда должен быть в содержании элементов.С другой стороны, я часто видел случаи, когда внутренние идентификаторы продуктов были выбраны как элементы в описательные записи продукта. В некоторых из этих случаев атрибуты были более уместными, потому что конкретный код внутреннего продукта не представлял первостепенного интереса для большинства читателей или процессоров документа, особенно если идентификатор был очень длинным или непостижимым.
Возможно, вы слышали, что основные данные передаются в элементах, метаданных в атрибутах. Вышеупомянутые два параграфа действительно выражают тот же принцип, но более преднамеренным и менее размытым языком.
Принцип структурированной информации
Если информация выражается в структурированном виде, особенно если структура может быть расширяемым, использовать элементы. С другой стороны: если информация выражается как атомный токен, используйте атрибуты. Элементы - это расширяемый движок для выражения структуры в XML. Практически все инструменты обработки XML разработаны вокруг этого факта, и если вы правильно разбиваете структурированную информацию на элементы, вы обнаружите, что ваши инструменты обработки дополняют ваш дизайн и тем самым повышают производительность и ремонтопригодность. Атрибуты предназначены для выражения простых свойств информации, представленной в элементе. Если вы работаете с базовой архитектурой XML, создавая структурированную информацию в атрибуты, вы можете получить некоторые сообразительные удобства и удобство, но вы, вероятно, заплатите за обслуживание.
Даты являются хорошим примером: дата имеет фиксированную структуру и, как правило, действует как единый токен, поэтому имеет смысл как атрибут (предпочтительно, выраженный в ISO-8601). С другой стороны, представление личных имен - это случай, когда я видел этот принцип, удивляющий дизайнеров. Я вижу имена в атрибутах много, но я всегда утверждал, что личные имена должны быть в содержании элементов. Личное имя имеет удивительно переменную структуру (в некоторых культурах вы можете вызвать путаницу или оскорбление, опуская почтение или принимая порядок частей имен). Личное имя также редко является атомным токеном. Например, иногда вы можете искать или сортировать по имени, а иногда по фамилии. Я должен указать, что столь же проблематично, чтобы вызывать полное имя в содержимом одного элемента, как и в атрибуте.
Вы должны использовать экранированные версии < and >, чтобы поместить теги. – workmad3 2008-09-30 09:06:16