Как использовать включить во встроенный xsd ссылку на другой встроенный xsd? - PullRequest
5 голосов
/ 04 марта 2011

Внутри моего веб-приложения я проверяю документы XML с использованием файлов xsd в качестве встроенных ресурсов, и это было легко с помощью assembly.GetManifestResourceStream(string).

Теперь мне нужно использовать элемент include (мне действительно нужноredefine, но ошибка, которую я получаю, та же самая, поэтому я расширяю сферу вопроса) внутри одного из моих xsd ссылается на другой встроенный xsd, так что я сделал:

  • добавить следующие строки в AssemblyInfo.cs проекта

    [assembly: System.Web.UI.WebResource("TurniArc.xml.schema.ImportOperatoriParametri.xsd", "text/xml", PerformSubstitution = true)]

    [assembly: System.Web.UI.WebResource("TurniArc.xml.schema.ProcessiInput.xsd", "text/xml", PerformSubstitution = true)]

  • изменил элемент include внутриImportOperatoriParametri.xsd "в это:

    <xs:include schemaLocation="<% = WebResource("TurniArc.xml.schema.ProcessiInput.xsd") %>">
    

Этот метод работал, когда мне приходилось ссылаться на встроенное изображение из встроенного CSS.К сожалению, здесь это не так, потому что метод GetManifestResourceStream выдает исключение

'<', hexadecimal value 0x3C, is an invalid attribute character. Line 3, position 34.

Кажется, что атрибут «PerformSubstition» не был установлен, потому что он пытается прочитать атрибут schemaLocation как «обычный»строка.

Что я делаю не так?Спасибо

1 Ответ

1 голос
/ 07 марта 2011

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

<xs:include schemaLocation='<% = WebResource("TurniArc.xml.schema.ProcessiInput.xsd") %>'>
...