在Silverlight库中,我需要根据模式验证传入的XML。模式由5个相互依赖的.xsd文件组成;主文件使用“xs:import”来引用所有其他文件,其中还有其他引用。
假设.xsd文件需要与库一起分发(即不托管在一些众所周知的外部URL上),我应该如何构建我的项目以包含它们?
我发现我可以使用构建类型“Resource”将它们嵌入到库项目中,然后使用Application.GetResourceStream()和一个带有“; content”标志的相对URI加载它们(单独)。但是,如果我采用这种方法,我可以验证相互依赖的5个文件集吗?架构解析器尝试解决相互依赖性时会发生什么?
或者我应该使用构建类型“内容”嵌入它们并使用其他类型的URL访问主要文件?
或者???
总结一下:我应该如何在项目中使用这些5.xsd文件,以便能够针对它们验证XML?
编辑:目前尚不清楚是否有可能在Silverlight中进行验证。我脱离了a related question。答案 0 :(得分:2)
我对Silverlight在验证方面的局限性并不多说,但问题本身更通用 - 例如,人们可能希望将.xsd文件存储为桌面.NET应用程序中的资源 - 所以我将回答这一部分。
您可以通过XmlSchemaSet.XmlResolver
属性完全控制xs:import
中URI的解析。只需创建自己的XmlResolver
子类,覆盖GetEntity()
方法,然后使用GetResourceStream()
或GetManifestResourceStream()
或您喜欢的其他方式实现它。