从普通的旧C#对象生成XSD时,Visual Studio提供的xsd.exe工具是否会生成SchemaLocation属性(在xs:import中)?
我发现生成的XSD无效,因为xs:import将导入命名空间而不提供相对的schemalocation值,提示如下
命名空间'urn:company-event-namespace'的导入模式未解析。
答案 0 :(得分:1)
如this anwser所示,您可以手动添加属性。 由于xsd工具会生成分部类,因此您可以在单独的文件中添加此属性,因此您无需修改生成的文件。
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";
}
答案 1 :(得分:0)
如您所见,它不会生成该属性。这可能与以下事实有关:如果该属性存在于正在读取的模式中,它将不会使用该属性。