как включить файлы схемы XSD в библиотеку Silverlight? - PullRequest
0 голосов
/ 16 сентября 2009

В библиотеке Silverlight мне нужно проверить входящий XML на соответствие схеме. Схема состоит из 5 взаимозависимых файлов .xsd; основной файл использует «xs: import» для ссылки на все остальные, и среди них есть другие ссылки.

Предполагая, что файлы .xsd необходимо распространять вместе с библиотекой (т. Е. Не размещая на каком-либо общеизвестном внешнем URL-адресе), как мне структурировать свой проект, чтобы включить их?

Я обнаружил, что могу встраивать их в проект библиотеки с типом сборки "Resource", а затем загружать их (индивидуально), используя Application.GetResourceStream () и относительный URI с флагом "; content". Но если я воспользуюсь этим подходом, могу ли я проверить соответствие по 5 независимым файлам? Что происходит, когда анализатор схемы пытается разрешить взаимозависимости?

Или я должен встроить их с типом сборки "Content" и получить доступ к основному с другим типом URL?

Или ???

Подводя итог: как мне использовать эти 5 .xsd файлов в моем проекте, чтобы я мог проверять XML на них?

РЕДАКТИРОВАТЬ: Не ясно, можно ли вообще проверить в Silverlight. Я выдохнул связанный вопрос .

1 Ответ

2 голосов
/ 17 сентября 2009

Я не могу много сказать об ограничениях Silverlight в отношении проверки, но сам вопрос является более общим - например, можно захотеть хранить файлы .xsd в качестве ресурсов в настольном приложении .NET - поэтому я отвечу на эту часть.

Вы можете иметь полный контроль над разрешением URI в xs:import с помощью свойства XmlSchemaSet.XmlResolver. Просто создайте свой собственный подкласс XmlResolver, переопределите метод GetEntity() и реализуйте его, используя GetResourceStream(), или GetManifestResourceStream(), или любым другим способом, который вы предпочитаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...