【发布时间】:2010-01-23 17:57:55
【问题描述】:
我已经从http://www.w3.org/2001/XMLSchema.xsd 下载了官方的“xsd 架构”。
我将其保存在本地并尝试使用此代码进行验证:
var sc = XmlSchema.Read(new FileStream(@"c:\temp\xsd.xsd", FileMode.Open), validate);
sc.Compile(validate);
它失败了,但它无法找到某些 DTD。
问题 1:为什么 xsd 的架构包含 xml 验证器无法处理的定义?
我从文件顶部删除了 DTD 定义,但出现了这个(以及更多)验证错误:
"Restriction of 'anySimpleType' is not allowed."
问题二:为什么编译xsd的schema会失败?
我已经使用 set.Add(...) 对 XmlSchemaSet 进行了同样的尝试,成功了。
问题 3:验证 XmlSchema 和 XmlSchemaSet 有什么区别?
然后我创建一个从磁盘导入 xsd 模式的虚拟模式:
<s:import namespace="http://www.w3.org/2001/XMLSchema" schemaLocation="c:\temp\xsd.xsd" />
当我将此架构添加到架构集中时,它再次失败并出现与上述相同的错误。
问题 4:为什么与直接添加 xsd 架构(有效)不同?
【问题讨论】: