Xml 如何在xsd中提供相对schemalocation

Xml 如何在xsd中提供相对schemalocation,xml,Xml,如果我要定义xsd main.xsd和sub.xsd 现在,如果我想将sub.xsd导入main.xsd,我该怎么做呢 <xsd:import namespace="http://localhost:8080/my-app"; schemaLocation="main.xsd"/> 如果两者都在同一个文件夹中..但是我想给出一个相对的url我该怎么做。首先我想说的是“SchemaLocation”属性被描述为“作为提示”。规范中没有强制XML解析器解析该属性的内容 <xs

如果我要定义xsd main.xsd和sub.xsd

现在,如果我想将sub.xsd导入main.xsd,我该怎么做呢

<xsd:import
namespace="http://localhost:8080/my-app";
schemaLocation="main.xsd"/>


如果两者都在同一个文件夹中..但是我想给出一个相对的url我该怎么做。

首先我想说的是“SchemaLocation”属性被描述为“作为提示”。规范中没有强制XML解析器解析该属性的内容

<xsd:import
namespace="http://localhost:8080/my-app";
schemaLocation="main.xsd"/>
也就是说,如果您使用的是基于文件的方法,那么定义“在同一位置”的方法将是schemaLocation=“.\main.xsd”

但是,这是否有效取决于您正在使用的XML解析器的具体实现

如果您使用的是.Net,我建议您将这两种模式加载到XmlSchemaSet中。这将足以使用该架构集验证/编码gen项。然后对命名空间uri执行解析

如果您使用的是.Net,您还可以将XmlResolver附加到应用程序,该应用程序将接管这些项的解析

有关此方法的更多详细信息,请参阅

希望这有帮助