我用c_创建了最简单的web服务:
public void AddData(DataSet ds)
生成的架构(wsdl)如下所示:
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema">
...
<s:element ref="s:schema" />
...
</s:schema>
注意,架构不包含任何导入/包含元素。
我正试图将此架构加载到c system.xml.xml schema并将其添加到system.xml.xmlschemaset:
var set = new XmlSchemaSet();
var fs = new FileStream(@"c:\temp\schema.xsd", FileMode.Open);
var s = XmlSchema.Read(fs, null);
set.Add(s);
set.Compile();
最后一行引发此异常:
The 'http://www.w3.org/2001/XMLSchema:schema' element is not declared.
这有点道理:由.NET生成的架构使用“s:schema”类型,该类型在未导入的架构中声明。
-
为什么.NET创建无效架构?
-
无论如何,如何编译模式?我所做的是在
http://www.w3.org/2001/XMLSchema
并将其添加到xmlschemaset中。这不起作用,因为联机架构包含DTD定义。我不得不手动移除它,现在一切正常。这有意义吗?还是我遗漏了什么?