Атрибут или элемент подсчета записей XML - PullRequest
0 голосов
/ 26 октября 2011

Хотя я немного знаю об XML и XML-схеме, я давно не использовал его и никогда не был особенно компетентен в его использовании. Поэтому будет очень полезна небольшая помощь в следующем.

В настоящее время мы получаем файлы данных с разделителями и хотели бы перейти на файлы XML, проверенные с помощью схемы XML. Текущий файл с разделителями содержит запись в трейлере, которая включает количество записей.

например: TRL0000155

В версии XML, следует ли включать это количество записей в качестве атрибута основного <data_file> элемента

 <data_file record_count="155">
    <record>
       record XML...
    </record>
    <record>
       record XML...
    </record>
    ...
 </data_file>

или как дочерний элемент <data_file>

<data_file>
   <record_count>155</record_count>
   <record>
      record XML...
   </record>
   <record>
      record XML...
   </record>
   ...
<data_file>

или, возможно, я все делаю неправильно, и вы могли бы дать мне совет о правильном способе полной замены количества записей.

Я признаю разницу между элементами и атрибутами, но в этом случае я надеюсь, что это проблема, с которой многие сталкивались ранее, и может дать хорошее объяснение того, почему одно из них является предпочтительным решением.

FWIW Я больше склоняюсь к решению атрибутов, поскольку счетчик представляет собой метаданные об элементе <data_file>, но я рад следовать более подробным инструкциям.

Заранее спасибо ...

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Поскольку у вас есть элемент <record> для каждой записи, технически не требуется, чтобы количество записей было явным.Конечно, у вас все еще может быть это, например, если это помогает производительности.Но, с другой стороны, возникает проблема, заключающаяся в том, что она должна соответствовать количеству <record> элементов.

Если вы решили сохранить количество записей, оба ваших подхода (атрибут и элемент) ОК.Основное отличие состоит в том, что когда вы (, если вы) строите строковое содержимое файла, атрибуты игнорируются, а текстовые узлы в элементах - нет.Таким образом, счет будет отображаться во втором случае, но не в первом.

Если вы можете применить XPath к XML-файлу, определение границы записи легко;это было бы просто count(/data_file/record).В этом случае действительно нет необходимости сохранять значение явно.

1 голос
/ 26 октября 2011

Атрибуты или элементы ... часто вы обнаружите, что они полностью взаимозаменяемы. Основное отличие состоит в том, что элементы могут повторяться, в то время как в элементе может отображаться только один атрибут с таким квалифицированным именем.

Семантически я предпочитаю использовать атрибуты, когда вы хотите что-то сказать о элементе или структуре. Само название говорит это: это атрибут содержащего элемента. Поскольку вы намереваетесь что-то сказать о своем файле данных, а именно о количестве записей, использование атрибута имеет большой смысл.

Кроме этого, вот остальные квалификации, которые я использую при попытке принять решение:

  • Будет ли файл читаться людьми или редактироваться вручную, как это может быть в случае (X) HTML? Если это так, а атрибутов мало, то все в порядке. Но если вы начнете получать много атрибутов, то ухудшится читаемость, поскольку симпатичная печать лучше работает с вложенными элементами.
  • Существуют ли пространства имен? Довольно часто схемы оставляют имена атрибутов без оговорок, что может привести к путанице или ошибкам. Кроме того, квалифицированные атрибуты имеют тенденцию выглядеть грязными.
  • Есть ли вероятность того, что значение атрибута станет чем-то меньшим, чем единичное значение, что означает, что оно требует собственной структуры или метаданных? Если вы чувствуете, что два или более атрибута связаны между собой, лучше всего превратить их в отдельную структуру на основе элементов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...