如何在引用另一个嵌入式xsd的嵌入式xsd中使用include?

时间:2011-03-04 11:55:19

标签: c# xsd embedded-resource

在我的Web应用程序中,我使用xsd文件作为嵌入资源验证Xml文档,使用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)]

  • 将“ImportOperatoriParametri.xsd”中的“include”元素修改为:

    <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 个答案:

答案 0 :(得分:1)

看起来你在属性中错误地嵌套了双引号。最简单的是对外部对使用单引号。

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