Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.12;
Скачать: CL | DM;

Вниз

Правила формирования xml-файлов   Найти похожие ветки 

 
Megabyte ©   (2007-07-12 15:13) [0]

Хочу хранить некую структуру данных(допустим, метаданные БД) в универсальном xml-формате.
Есть различные данные, по сути пара: имя - значение.
Эту пару можно хранить: в виде дочерней вершины дерева xml(тег, текст внутри тега) или в виде атрибута(имя=значение).
Так вот, какими правилами, рекомендациями следует руководствоваться при формировании файла, когда информацию стоит помещать в тег, а когда в атрибут? Есть ли вообще такие рекомендации?


 
Johnmen ©   (2007-07-12 15:17) [1]

Не знаю, есть или нет, я руковожусь - если есть вполне выделяемая самостоятельная сущность, то её характеристики хранить как атрибуты.


 
umbra ©   (2007-07-12 15:18) [2]

тэги - это сущности, аттрибуты - свойства сущностей, но не сущности сами по себе.


 
Reindeer Moss Eater ©   (2007-07-12 15:48) [3]

Совершенно по барабану как хранить. В атрибутах ли или в узлах.
А если есть сомнения, то лучше всего исходить из трудоемкости написания кода чтения/записи этих данных.


 
clickmaker ©   (2007-07-12 16:34) [4]

в узлах больше места займет
<document id="123" name="letter.doc"/>
<document><id>123</id><name>letter.doc</name></document>

xml и так не слишком экономичный формат


 
jack128_   (2007-07-12 18:02) [5]


> xml и так не слишком экономичный формат

В тех задачах, где его применяют - это не имеет значения..


 
Суслик ©   (2007-07-12 18:16) [6]

я все в атрибутах хранил бы


 
Kolan ©   (2007-07-12 18:32) [7]

Я бы тоже хронил в атрибутах, потому, что:

Если есть два экземпляра классов:

TА = class
 FB: TB;
 FName: string;
 FID: Integer;
end;

TB = class
 FName: string;
 FID: Integer;
end;


То есть B ассоциирован с A. Если теперь это все сохранить, то будет:

1. Вариант с тегами:

<A>
 <Name>A</Name>
 <ID>1</ID>
 
   <Name>B</Name>
   <ID>2</ID>
 

</A>


2. Вариант с свойстввами:

<A Name=&laquo;A&raquo;, ID=&laquo;1&raquo;>
 <B Name=&laquo;B&raquo;, ID=&laquo;2&raquo;/B>
</A>


Как видите в варианте 2 есть преимущество(кроме размера) &#151; протсые атрибуты хронятся в виде свойств, а ассоциации в виде дочерних тегов &#151; сразу понятно что есть что.

Все имхо.


 
Kolan ©   (2007-07-12 18:34) [8]

Испортилось, млин.

<A>
<Name>A</Name>
<ID>1</ID>

  <Name>B</Name>
  <ID>2</ID>

</A>

<A Name=&laquo;A&raquo;, ID=&laquo;1&raquo;>
<B Name=&laquo;B&raquo;, ID=&laquo;2&raquo;/B>
</A>


 
Kolan ©   (2007-07-12 18:35) [9]

ЫЫЫЫ

<A>
 <Name>A</Name>
 <ID>1</ID>
   < B >
     <Name>B</Name>
     <ID>2</ID>
   </ B >
</A>

<A Name=«A», ID=«1»>
 <B Name=«B», ID=«2»/B>
</A>


 
True_ShaggyDoc   (2007-07-13 06:27) [10]

Я храню структуру и дополнительные метаданные в атрибутах. Это позволяет обращаться к ним по имени, создавать любые дополнительные, игнорировать неизвестные. Сами данные (если они хранятся) - в виде текстов соответствующих элементов.

Вот пример таблицы БД (фрагмент):


<?xml version="1.0" encoding="windows-1251" ?>
<table>
 <summaryinfo
   Title="Структура населения районов (дети, трудоспособные, пенсионеры)"
      Subject="XXX область"
   Author="Департамент экономического развития и инвестиций"
   LastAuthor="ShaggyDoc"
   Create_DTM="23.05.2007 14:29:42"
   RevNumber="9"/>
 <Mapinfo
   MifVersionStr="Version 600"
MifCharsetStr="Charset "WindowsCyrillic""
MifDelimiterStr="Delimiter "|""
MifGeometryTemplate="Templates\Mapinfo\DataTemplates\Муниципальные районы.mift "/>
 <fields>
   <ID
  type="integer"
  displayname="№"
  size="4"
  precision="0"
  visible="1"
  columnwidth="34"
  columnorder="1"
  columnwidth_mm="9"
  columnsumm="0"/>
   <NAME
  type="string"
  displayname="Район"
  size="37"
  precision="0"
  picklist="Альменевский|Белозерский|Варгашинский"
  visible="1"
  columnwidth="169"
  columnorder="2"
  columnwidth_mm="45"/>
   <POPUL_ALL
  type="integer"
  displayname="Население| Всего"
  size="4"
  precision="3"
  visible="1"
  columnwidth="100"
  columnorder="3"
  columnwidth_mm="26"
  columnsumm="1"/>
  ...
 </fields>
 <rows>
   <row>
     <ID>1</ID>
     <NAME>Альменевский</NAME>
     <POPUL_ALL>14561</POPUL_ALL>
     <POPUL_CHI>3183</POPUL_CHI>
     <POPUL_MID>7682</POPUL_MID>
     <POPUL_OLD>4241</POPUL_OLD>
   </row>
...
 </rows>
</table>


 
Megabyte ©   (2007-07-13 10:32) [11]

Ну это понятно, что отдельные сущности(сложные тем более) оформляются в виде тэгов, но вот запнулся на выборе в конечном варианте простейших данных.
Пример: поле(field), имеет данные "имя поля, домен, признак ключевого поля".
Изначально вынес в атибуты имя поля и признак ключевого поля, а внутри описал структуру поля(тип, масштаб, размер, возможность значения null и т.д.), потом все это перенес в сущность "домен" и в поле теперь только надо прописать данные об используемом домене.
<field name=my_id key=PK>
 <domain>id</domain>
</field>

Как-то имхо одна дочерняя вершина совсем не смотрится, а если домен занести в атрибуты, то получится, что значение тэга "поле" внутри пустое. Как-то некрасиво получается и не правильно имхо, т.к. пустое значение означает его отсутствие.
Вот мне и хотелось выяснить, кто как думает. :)


 
Reindeer Moss Eater ©   (2007-07-13 11:27) [12]

кто как думает. :)

Зачем наделять бездушный парсер способностью видеть прекрасное?
:)
Ему же все равно.


 
Kolan ©   (2007-07-13 22:17) [13]

> Изначально вынес в атибуты имя поля и признак ключевого
> поля, а внутри описал структуру поля

Может начать с анализа Domain а потом переходить к отображению в XML?


 
Слоник_   (2007-07-14 01:13) [14]

Я обычно поступаю так же, как и дотНетовский сериализатор - все свойства в child-ноды. Мотивация - единообразие (если свойство сложное, то нелогичной видится структура, где что-то в атрибутах, а что-то в нодах). Вообще, стоит максимально придерживаться одинаковых принципов, так гораздо проще и самому, и тому, кто будет поддерживать или соучаствовать как разработчик.


 
Megabyte ©   (2007-07-16 10:46) [15]


> Reindeer Moss Eater ©   (13.07.07 11:27) [12]
> кто как думает. :)Зачем наделять бездушный парсер способностью
> видеть прекрасное?:)Ему же все равно.

Как бы хочется, чтобы сам xml-файл был наглядным, например все имена(доменов, полей, таблиц) в атрибутах.
Но все это именно, как вы указали, стремление к прекрасному, накая структуризация, нежели серьезная потребность. ;)



Страницы: 1 вся ветка

Текущий архив: 2007.08.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
15-1184263774
wl
2007-07-12 22:09
2007.08.12
исходники zuma-like игр на с/c++


6-1167841685
Volfram
2007-01-03 19:28
2007.08.12
idCmdServer; Connection Closed gracefully


15-1184421318
DillerXX
2007-07-14 17:55
2007.08.12
Maple


8-1162773834
OlDirtyBastard
2006-11-06 03:43
2007.08.12
TChart


15-1184100665
Nic
2007-07-11 00:51
2007.08.12
Командирские часы