Нет правильного ответа: вы можете сделать свой собственный выбор. (Схема XML, в своей мудрости, предоставляет еще один способ представления отсутствующих данных, а именно как <address2 xsi:nil="true"/>
. Я никогда не видел необходимости в этом, но я упоминаю это для полноты.)
Я разделяю ваше мнение, что начинать с имен полей "address1" и "address2" - довольно плохая практика. Он предлагает какое-то наследие от систем, которые не допускают повторение полей, и не имеет места в дизайне XML.
На самом деле, я думаю, что многие поля естественно многозначны. У человека может быть ноль или более телефонных номеров, и это означает, что если у нас нет телефонного номера для человека, наиболее естественным представлением (на мой взгляд) является отсутствие вхождения элемента <phone>
.
Конечно, есть некоторые случаи, когда вы хотите отличить свойство, значением которого является строка нулевой длины, от свойства, которое отсутствует или неизвестно, хотя я думаю, что это менее распространено, чем теоретики реляционных баз данных заставили бы нас верить. Но в этом случае вам нужны разные представления для двух случаев. (Возможно, вы также захотите отличить «отсутствующий» от «неизвестный» - есть разница между знанием того, что у кого-то нет среднего имени, и незнанием, есть ли у него второе имя, - но на практике очень немногие системы способны поддерживать качество данных для этого точность, и если вы хотите это сделать, я подозреваю, что вы хотите использовать более сильный сигнал, чем просто пустой или пропущенный элемент.)