如何在Silverlight库中包含XSD架构文件?

时间:2009-09-16 17:32:02

标签: silverlight

在Silverlight库中,我需要根据模式验证传入的XML。模式由5个相互依赖的.xsd文件组成;主文件使用“xs:import”来引用所有其他文件,其中还有其他引用。

假设.xsd文件需要与库一起分发(即不托管在一些众所周知的外部URL上),我应该如何构建我的项目以包含它们?

我发现我可以使用构建类型“Resource”将它们嵌入到库项目中,然后使用Application.GetResourceStream()和一个带有“; content”标志的相对URI加载它们(单独)。但是,如果我采用这种方法,我可以验证相互依赖的5个文件集吗?架构解析器尝试解决相互依赖性时会发生什么?

或者我应该使用构建类型“内容”嵌入它们并使用其他类型的URL访问主要文件?

或者???

总结一下:我应该如何在项目中使用这些5.xsd文件,以便能够针对它们验证XML?

编辑:目前尚不清楚是否有可能在Silverlight中进行验证。我脱离了a related question

1 个答案:

答案 0 :(得分:2)

我对Silverlight在验证方面的局限性并不多说,但问题本身更通用 - 例如,人们可能希望将.xsd文件存储为桌面.NET应用程序中的资源 - 所以我将回答这一部分。

您可以通过XmlSchemaSet.XmlResolver属性完全控制xs:import中URI的解析。只需创建自己的XmlResolver子类,覆盖GetEntity()方法,然后使用GetResourceStream()GetManifestResourceStream()或您喜欢的其他方式实现它。