Кто-нибудь возражал бы взглянуть на мою структуру 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 ответа

Решение
  1. Мне не ясно, что вы последовательно используете дочерние элементы для обозначения отношений "один ко многим". Если у продукта может быть несколько категорий, тогда хорошо, но если у него может быть только одна категория, вам лучше использовать отдельные элементы с именем categoryName а также categorySubcategory, В противном случае кто-то где-то неправильно поймет семантику вашего XML, и у вас возникнет проблема, которую можно решить, если бы вы были последовательны.

  2. Говоря об этом, вы должны иметь в виду план того, что происходит, когда вам нужно использовать несколько слов в именах тегов.

  3. Мне не ясно, что у вас есть постоянная причина использовать атрибуты против элементов. Я подозреваю, что вы дали image элементы width а также height атрибуты, потому что именно так они представлены в HTML. Я бы только копировал соглашения HTML, если бы использовал их во всем своем дизайне. Я понятия не имею, почему sale элемент имеет expiration приписывать.

  4. Кстати об этом 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 на первое место.

Другие вопросы по тегам