Существуют различные взгляды на принципы, которые следует использовать при принятии решения, использовать ли атрибут или элемент для фрагмента данных.Например, см. эту старую статью от IBM , в которой излагается куча предлагаемых принципов, а затем украшает всю статью гигантским предупреждением, в котором говорится: «существует множество исключений, и эти принципы не предназначены длябыть предписывающим "(по существу).
Я думаю, главное - быть внутренне последовательным.Будьте последовательны в своем собственном мире, каким бы большим он ни был.Ваш «мир» может быть единой схемой, в которой вы должны быть последовательны в своем подходе.Каждый элемент в этой схеме должен быть философски последовательным.Или ваш мир может быть набором связанных схем, или это могут быть все XML-документы, выпущенные конкретной компанией, или даже все XML-схемы, используемые отраслевой или технологической группой.
Теперь, что касается предложенного вами образца:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend! Remember what happenned last time you forgot!!!</body>
</note>
... это кажется внутренне непоследовательным, потому что вычленен только один фрагмент данных, и, похоже, нет хорошегопричина для этого.
Лучше, если все элементы были атрибутами или все были элементами.Единственное исключение: длинный элемент body, вероятно, всегда должен быть элементом.Мне кажется, что это правильно:
<note date="12/11/2002" to="Tove" from="Jani" heading="Reminder">
<body>Don't forget me this weekend! Remember what happenned last time you forgot!!!</body>
</note>
Помещение тела в атрибут ухудшает читабельность, поэтому рекомендуется помещать тело в элемент.
Имейте в виду, что пробел может быть свернут в значениях атрибута (источник: эта статья IBM, которую я цитировал);жесткое правило, которое вытекает из этого, заключается в том, что если пробел имеет смысл, то вы должны использовать элемент.
Теперь, если заголовок в этом фрагменте xml является чем-то похожим на тему письма, я бы, вероятно, выделил это в элемент, поскольку темы могут быть длинными.
Что касается вашего вопроса, касающегося месяца / дня / года даты, то да, учтите это, если вам нужен легкий доступ к этим отдельным данным в инструментах, которые обрабатывают XML.Проще найти все заметки до 2009 года с помощью оператора xpath, который не должен выполнять разбор строк, а затем преобразование строк в числа, если вы понимаете, о чем я.С другой стороны, если использование XML не требует от вас выбора или поиска этих отдельных данных (месяц, день, год), сохраняйте их в удобочитаемой форме, как в оригинале.
tl; dr: Существует несколько жестких правил.Пока вы используете элементы и атрибуты согласованно, другим разработчикам и инструментам будет легко их понять и использовать.