Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];

Вниз

Правила формирования 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.074 c
2-1184413664
ououoy
2007-07-14 15:47
2007.08.12
вопрос про константы


11-1167329054
Thaddy
2006-12-28 21:04
2007.08.12
site problems


6-1167880831
LFRT
2007-01-04 06:20
2007.08.12
Как с помощью сокетов получить от сервера имя файла


2-1184090570
Евгений Р.
2007-07-10 22:02
2007.08.12
Перемещение по DrawGrid


2-1184298375
Интересующийся
2007-07-13 07:46
2007.08.12
Защита программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский