Кто-нибудь возражал бы взглянуть на мою структуру XML?
Я относительно новичок в этом, но я надеялся, что кто-нибудь может предложить хорошую критику этой XML-структуры, которую я собрал. Я не ищу ничего в глубине, но скорее, если кто-то заметит что-то изначально неправильное в структуре (или какие-либо советы, чтобы сделать ее лучше), я был бы очень признателен.
У нас есть большое количество продуктов, которые мы продаем оптом, и наши клиенты искали источник данных для включения наших продуктов в свои веб-сайты.
<product modified="">
<id></id>
<title></title>
<description></description>
<upc></upc>
<quantity></quantity>
<images>
<image width="" height=""></image>
<image width="" height=""></image>
<image width="" height=""></image>
</images>
<category>
<name></name>
<subcategory></subcategory>
</category>
<sale expiration="">yes</sale>
<msrp></msrp>
<cube></cube>
<weight></weight>
<pricing>
<tier>
<pack><pack>
<price></price>
</tier>
<tier>
<pack><pack>
<price></price>
</tier>
<tier>
<pack><pack>
<price></price>
</tier>
</pricing>
</product>
Мы продаем в 3 разных размерах упаковки, следовательно, ценовой узел.
3 ответа
Мне не ясно, что вы последовательно используете дочерние элементы для обозначения отношений "один ко многим". Если у продукта может быть несколько категорий, тогда хорошо, но если у него может быть только одна категория, вам лучше использовать отдельные элементы с именем
categoryName
а такжеcategorySubcategory
, В противном случае кто-то где-то неправильно поймет семантику вашего XML, и у вас возникнет проблема, которую можно решить, если бы вы были последовательны.Говоря об этом, вы должны иметь в виду план того, что происходит, когда вам нужно использовать несколько слов в именах тегов.
Мне не ясно, что у вас есть постоянная причина использовать атрибуты против элементов. Я подозреваю, что вы дали
image
элементыwidth
а такжеheight
атрибуты, потому что именно так они представлены в HTML. Я бы только копировал соглашения HTML, если бы использовал их во всем своем дизайне. Я понятия не имею, почемуsale
элемент имеетexpiration
приписывать.Кстати об этом
sale
элемент, представляющий логические значения, используя строкиtrue
а такжеfalse
, (Вы также можете использовать1
а также0
.) В более широком смысле: используйте представления XML-схемы для типизированных данных.
Согласованность в дизайне XML в 100 раз ценнее читабельности. Если у вас есть согласованный XML, вы можете легко преобразовать его в читаемые формы; обратное не так.
Я думаю <pack>
а также <price>
могут быть атрибутами <tier>
или предпочтительнее просто удалить <tier>
и имеют <pack>
а также <price>
в качестве атрибутов <pricing>
;
<tier pack="some-pack" price="some-price" />
или же
<pricing pack="big-pack" price="high-price" />
Не совсем уверен, имеет ли это смысл для вас (или для вашего бизнеса), но немного очистит XML.
Если вы переместите все атрибуты (т.е. / modified
, width
, height
а также expiration
) к элементам, тогда клиенты могут автоматически сопоставить спецификацию вашего продукта 1:1 с JSON или своим внутренним объектом. Фактически, в один прекрасный день вы можете рассмотреть возможность предоставления JSON или протокольных буферов в качестве альтернативного формата для ваших данных, и простая структура XML позволит автоматически выполнять преобразование. Облегчение, если у вас есть десятки различных форматов XML (которые могут время от времени меняться). Очень редко люди читают XML и извлекают из него информацию вручную, поэтому абсолютно не нужно ставить красоту XML на первое место.