XML-схема в проекте
От: cubes_and_tubes  
Дата: 15.10.09 08:11
Оценка:
Всем привет!

Я новичок в XML. Подскажите, плиз:

Есть xml-документ "sample.xml".
Есть его схема "sample.xsd".
С помощью xml-схемы делается валидация документа.
В данный момент "sample.xsd" — это файл на диске. Т.е. любой пользователь может его редактировать.
Можно ли как-то вшить xsd в проект, чтобы править его можно было только из Visual Studio?
Или придется программно создавать XmlSchema result = new XmlSchema(); .... создавать его элементы ..., как это показано в http://rsdn.ru/forum/dotnet/2960976.aspx
Автор:
Дата: 23.05.08
?
Re: XML-схема в проекте
От: Lloyd Россия  
Дата: 15.10.09 08:20
Оценка: 2 (1) +1
Здравствуйте, cubes_and_tubes, Вы писали:

__>В данный момент "sample.xsd" — это файл на диске. Т.е. любой пользователь может его редактировать.

__>Можно ли как-то вшить xsd в проект, чтобы править его можно было только из Visual Studio?

Embedded resources
Re: XML-схема в проекте
От: _FRED_ Черногория
Дата: 15.10.09 08:33
Оценка: 8 (3)
Здравствуйте, cubes_and_tubes, Вы писали:

__>Есть xml-документ "sample.xml".

__>Есть его схема "sample.xsd".
__>С помощью xml-схемы делается валидация документа.
__>В данный момент "sample.xsd" — это файл на диске. Т.е. любой пользователь может его редактировать.
__>Можно ли как-то вшить xsd в проект, чтобы править его можно было только из Visual Studio?
__>Или придется программно создавать XmlSchema result = new XmlSchema(); .... создавать его элементы ..., как это показано в http://rsdn.ru/forum/dotnet/2960976.aspx
Автор:
Дата: 23.05.08
?


Я обычно в свойствах файла (в студии) так же выставляю Build Action = Embedded Resource + открываю в свойствах проекта вкладку Resources, создаю там (если ещё не создан) "default resource file" и перетяниваю просто "файл" из Solution Explorer в редактор ресурсов. Теперь из кода есть удобный способ обращения к содержимому файла без явного хардкодинга констант.
Help will always be given at Hogwarts to those who ask for it.
Re[2]: XML-схема в проекте
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.10.09 09:27
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Я обычно в свойствах файла (в студии) так же выставляю Build Action = Embedded Resource + открываю в свойствах проекта вкладку Resources, создаю там (если ещё не создан) "default resource file" и перетяниваю просто "файл" из Solution Explorer в редактор ресурсов.


А зачем одновременно две копии файла в ресурсах — как отдельный ресурс и как часть resx скомпилированного?
... << RSDN@Home 1.2.0 alpha 4 rev. 1249 on Windows 7 6.1.7600.0>>
AVK Blog
Re[3]: XML-схема в проекте
От: _FRED_ Черногория
Дата: 16.10.09 10:55
Оценка:
Здравствуйте, AndrewVK, Вы писали:

_FR>>Я обычно в свойствах файла (в студии) так же выставляю Build Action = Embedded Resource + открываю в свойствах проекта вкладку Resources, создаю там (если ещё не создан) "default resource file" и перетяниваю просто "файл" из Solution Explorer в редактор ресурсов.


AVK>А зачем одновременно две копии файла в ресурсах — как отдельный ресурс и как часть resx скомпилированного?


Первый (Embedded Resource) нужен для предоставления доспупа к схеме из внешних сборок. Гораздо проще предоставить [наружу] имя ресурса в виде "ConsoleApplication1.MyXmlSchema.xsd", чем "сначала обратитесь к ConsoleApplication1.Properties.Resources.resources", а потом там найдите строку с ключём "MyXmlSchema". Во-вторых, имя "ConsoleApplication1.MyXmlSchema.xsd" можно [удобно] передавать в параметры каких-нибудь атрибутов.

Использование же Resources предоставляет более удобный доступ к сожержимому внутри сборки или тех, кто явно имеет reference на сборку (если сделать генерируемый класс public).
Help will always be given at Hogwarts to those who ask for it.
Re[4]: XML-схема в проекте
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.10.09 12:54
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Использование же Resources предоставляет более удобный доступ к сожержимому внутри сборки или тех, кто явно имеет reference на сборку (если сделать генерируемый класс public).


Хранение 2 копий одного и того же файла в бинарнике ради сомнительного удобства имхо перебор.
... << RSDN@Home 1.2.0 alpha 4 rev. 1249 on Windows 7 6.1.7600.0>>
AVK Blog
Re[5]: XML-схема в проекте
От: _FRED_ Черногория
Дата: 16.10.09 13:21
Оценка:
Здравствуйте, AndrewVK, Вы писали:

_FR>>Использование же Resources предоставляет более удобный доступ к сожержимому внутри сборки или тех, кто явно имеет reference на сборку (если сделать генерируемый класс public).


AVK>Хранение 2 копий одного и того же файла в бинарнике ради сомнительного удобства имхо перебор.


Конечно перебор, но мне удобства, наоборот, не кажутся сомнительными Какое из двух удобств ты имеешь в виду, кстати? Какой способ из предложенных двух тебе больше нравится? Или какой-то третий?

По факту, Embedded Resource используется очень редко и отказаться от него совсем не просто. Во-вторых, можно сделать свой генеретор хелпера по ресурсам, который будет правильно обрабатывать Embedded Resource и проблемы опять не будет. Наконец, можно вручную (там, где это необходимо) забивать константы с именами ресурсов и предоставлять "пользователям" типизированный и контролируемый в одном месте доступ к ресурсам. Несомненно, любой из этих трёх способов менее противоречив и так же функционально полон, чем предложенный мной.

Но мой способ работы является самым простым в реализации, неудобств никогда не доставлял (нету у меня таких схем или скриптов, на размере которых в бинарнике хотелось бы сэкономить).
Help will always be given at Hogwarts to those who ask for it.
Re[6]: XML-схема в проекте
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.10.09 13:56
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Конечно перебор, но мне удобства, наоборот, не кажутся сомнительными Какое из двух удобств ты имеешь в виду, кстати?


Генерацию обертки.

_FR>По факту, Embedded Resource используется очень редко


Надо писать "у меня".
... << RSDN@Home 1.2.0 alpha 4 rev. 1249 on Windows 7 6.1.7600.0>>
AVK Blog
Re[7]: XML-схема в проекте
От: _FRED_ Черногория
Дата: 16.10.09 14:14
Оценка:
Здравствуйте, AndrewVK, Вы писали:

_FR>>Конечно перебор, но мне удобства, наоборот, не кажутся сомнительными Какое из двух удобств ты имеешь в виду, кстати?

AVK>Генерацию обертки.

Стандартную Resources&? Ту, что в Янусе? Что-то другое?

_FR>>По факту, Embedded Resource используется очень редко


Кстати, я там ошибся: должно быть "По факту, Embedded Resource используется очень редко и отказаться от него совсем не сложно. "

AVK>Надо писать "у меня".


Вообще говоря да, я имел в виду себя. Но неужели кто-то как-то (как я написал тут
Автор: _FRED_
Дата: 16.10.09
) использует Embedded Resource для файлов-скриптов или файлов-схем или файлов-данных которые при этом так же нужны и внутри самой программы?
Help will always be given at Hogwarts to those who ask for it.
Re[8]: XML-схема в проекте
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.10.09 14:35
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Стандартную Resources&?


Да

_FR>Вообще говоря да, я имел в виду себя. Но неужели кто-то как-то (как я написал тут
Автор: _FRED_
Дата: 16.10.09
) использует Embedded Resource для файлов-скриптов или файлов-схем или файлов-данных которые при этом так же нужны и внутри самой программы?


Я, например, для таких файлов использую всегда.
... << RSDN@Home 1.2.0 alpha 4 rev. 1249 on Windows 7 6.1.7600.0>>
AVK Blog
Re[9]: XML-схема в проекте
От: _FRED_ Черногория
Дата: 16.10.09 14:50
Оценка:
Здравствуйте, AndrewVK, Вы писали:

_FR>>Вообще говоря да, я имел в виду себя. Но неужели кто-то как-то (как я написал тут
Автор: _FRED_
Дата: 16.10.09
) использует Embedded Resource для файлов-скриптов или файлов-схем или файлов-данных которые при этом так же нужны и внутри самой программы?


AVK>Я, например, для таких файлов использую всегда.


Тогда как ты доступаешься из кода к этим ресурсам? Сам объявляешь константы, пишешь хелперные классы и методы для того, что бы там, где ресурс понадобится не нужно было бы самому воевать с ResourceManager/Stream/Encoding и т.п.?
Help will always be given at Hogwarts to those who ask for it.
Re[10]: XML-схема в проекте
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.10.09 15:51
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Тогда как ты доступаешься из кода к этим ресурсам? Сам объявляешь константы, пишешь хелперные классы и методы для того, что бы там, где ресурс понадобится не нужно было бы самому воевать с ResourceManager/Stream/Encoding и т.п.?


Да.
... << RSDN@Home 1.2.0 alpha 4 rev. 1249 on Windows 7 6.1.7600.0>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.