我已接近实现ASP.NET MVC 3项目中单元测试视图的目标。我将XML输出作为字符串,并希望根据标准的VoiceXML 2.1模式进行验证。我从w3.org下载了这个架构,但有两个问题:
我怀疑原因是主模式引用了通过Web检索(或不检索)的几个包含模式。我在架构文件中看到以下内容:
<xsd:include schemaLocation="vxml-datatypes.xsd"/>
<xsd:include schemaLocation="vxml-attribs.xsd"/>
<xsd:include schemaLocation="vxml-grammar-extension.xsd"/>
<xsd:include schemaLocation="vxml-synthesis-extension.xsd"/>
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
我在单元测试中加载模式如下:
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("http://www.w3.org/2001/vxml", "../../../IVRUnitTests/VoiceXML21Schema.xsd");
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
我已经下载了主要参考中包含的模式。我还可以将它们添加到我的XmlReaderSettings.Schemas集合中吗?如果是这样,验证是否会为他们查看网页?验证这种复杂模式的任何其他建议吗?
P.S。哪里是将模式放在单元测试项目中的最佳位置,以便在需要时自动复制/引用? '../../'的事情是kludgey。