2009-11-03 4 views
1

У меня есть две веб-формы, которые заполняются пользователем. Они содержат разные типы полей: текстовые поля, переключатели, флажки (одиночные или в группах). Вся информация, которую пользователь представляет, хранит в поле XML в базе данных.Рекомендации по хранению содержимого формы html в документе XML

Мой вопрос: Каковы хорошие практики для струнных данных в XML-файле.

Сейчас я так:

Текстовые поля, например: txtName я вкладываю в <Name>John</Name> теги.

Радиокабели, например: rdbSex Я положил в <Sex>Male</Sex>.

флажки группы Я положил в один XML-тег, и я указать true или false для каждого элемента флажок, например:

<favoriteMovies> 
    <StarWars>True</StarWars> 
    <KillBill>False</KillBill> 
    .... 
</favoriteMovies> 

Фильмы хранятся в базе данных в одной таблице, и каждый из у них есть идентификатор. Должен ли я хранить его также в файле XML? Как это:

<favoriteMovies> 
    <StarWars id="4">True</StarWars> 
    <KillBill id="6">False</KillBill> 
    .... 
</favoriteMovies> 

или возможно хранить только выбранные варианты (withoud KillBill в данном случае):

<favoriteMovies> 
    <StarWars id="4 /> 
    .... 
</favoriteMovies> 

Та же проблема с выпадающий контролирует. Они заполняются из одной таблицы в базе данных, и каждый элемент имеет идентификатор. Должен ли я хранить только идентификатор пользователя, или оба: id и имя выбора. Так что лучше хранить сделать так:

<Address> 
    <City>2</City> 
</Address> 

или как это:

<Address> 
    <City id="2" /> 
</Address> 

или как это

<Address> 
    <City>New York</City> 
</Address> 

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

Есть ли какие-либо рекомендации или некоторые документы, определяющие правила хранения элементов веб-форм в документах XML?

+0

Вы собираетесь хранить все данные в XML-файлах или ожидаете, что они будут расти, поэтому вы хотите поместить их в базу данных? –

+0

Я не очень хорошо понимаю ваш вопрос. Я помещаю данные в XML, а затем я храню его в базе данных в столбце XML. Существует два разных документа (веб-формы). У одного есть около 30 полей, еще около 10. Эти структуры документов могут измениться в будущем, а также, возможно, будет добавлен еще один документ. Таким образом, XML представляется лучшим выбором. –

ответ

1

Я бы так:

1) Лечить то, что вы хотите поместить в вас XML как объекты

2) Найти то, что свойство лучше всего описать вам объект для человека, поместите его между тегом

3) Каждые другие атрибуты, которые украшают объект, поместите их атрибуты тега

я вновь взять примеры Рубенса с модификацией:

<favoriteMovies> 
    <Movie id="4">StarWars (just if required)</Movie> 
    .... 
</favoriteMovies> 

Я переместил имя, потому что это то, что лучше всего описать фильм (для людей) и потому, что если у вас есть специальные символы, вы сможете <![CDATA[ ]]> им ...

Надеется, что это помогает

+0

Я думаю, вы не должны влиять на то, как построить свой XML по происхождению данных (пока он есть). Вот почему вы можете посмотреть примеры XML-файлов и лучшие практики. Я дал небольшие подсказки в своем ответе, но в конечном счете, это зависит от вас! Удачи! –

+0

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

1

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

<favoriteMovies><!-- all this are favorite, so "true" isnt required --> 
    <Movie id="4" name="StarWars (just if required)" /> 
    .... 
</favoriteMovies> 

За это

<favoriteMovies> 
    <StarWars id="4">True</StarWars> 
    <KillBill id="6">False</KillBill> 
    .... 
</favoriteMovies> 

Примечание Я удалил KillBill, как это отмечено как "не любимый".

Нижняя строка: сохраните свой XML-документ небольшим, и у вас не будет проблем.

0

I не будет хранить XML-документы в базе данных (особенно, поскольку они, похоже, являются объектами транспортного типа). Почему бы просто не хранить данные реляционным способом в базе данных. Формы хороши для захвата данных. XML хорош для транспортировки данных, а таблицы базы данных хороши для хранения данных. Поскольку вы уже храните фильмы в базе данных, вам будет легко хранить остальную часть данных в базе данных явно, а не неявно через XML.

+0

Как я уже говорил @Raj More. Структуры форм очень гибкие. Некоторые из полей могут быть удалены в ближайшем будущем, а некоторые могут быть добавлены. Другое дело: есть две разные формы, которые хранятся в одной таблице. В будущем это может быть 3 или даже больше. Я не думаю, что хорошая идея иметь разные таблицы для каждой формы. Кроме того, Microsoft рекомендует использовать тип данных XML в тех случаях, когда структура данных может быть различной (Microsoft, SQL Server 2005, Реализация и обслуживание, стр. 256) –

Смежные вопросы