【发布时间】:2009-06-05 13:51:42
【问题描述】:
从普通的旧 C# 对象生成 XSD 时,Visual Studio 提供的 xsd.exe 工具是否会生成 SchemaLocation 属性(在 xs:import 中)?
我发现我生成的 XSD 无效,因为 xs:import 将导入命名空间并且不提供提示以下提示的相对 schemalocation 值
命名空间“urn:company-event-namespace”的导入架构未解析。
【问题讨论】:
从普通的旧 C# 对象生成 XSD 时,Visual Studio 提供的 xsd.exe 工具是否会生成 SchemaLocation 属性(在 xs:import 中)?
我发现我生成的 XSD 无效,因为 xs:import 将导入命名空间并且不提供提示以下提示的相对 schemalocation 值
命名空间“urn:company-event-namespace”的导入架构未解析。
【问题讨论】:
如this anwser所示可以手动添加属性。 因为xsd工具会生成一个partial class,所以可以在单独的文件中添加这个属性,这样就不用修改生成的文件了。
public partial class Gpx
{
[XmlAttribute("schemaLocation", Namespace = XmlSchema.InstanceNamespace)]
public string xsiSchemaLocation = "http://www.topografix.com/GPX/1/1 " +
"http://www.topografix.com/GPX/1/1/gpx.xsd";
}
【讨论】:
如您所见,它不会生成该属性。这可能与它不会使用该属性的事实有关,如果该属性存在于它正在读取的架构中。
【讨论】: