Форум: "Прочее";
Текущий архив: 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=«A», ID=«1»>
<B Name=«B», ID=«2»/B>
</A>
Как видите в варианте 2 есть преимущество(кроме размера) — протсые атрибуты хронятся в виде свойств, а ассоциации в виде дочерних тегов — сразу понятно что есть что.
Все имхо.
← →
Kolan © (2007-07-12 18:34) [8]Испортилось, млин.
<A>
<Name>A</Name>
<ID>1</ID>
<Name>B</Name>
<ID>2</ID>
</A>
<A Name=«A», ID=«1»>
<B Name=«B», ID=«2»/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.051 c