如何在xsd中提供相对的schemalocation

时间:2010-03-01 13:51:20

标签: xml

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

也就是说,如果您使用的是基于文件的方法,那么定义“在同一位置”的方式将是schemaLocation =“。\ main.xsd”。

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

如果您使用.Net,我建议您将两个模式加载到XmlSchemaSet中。这足以使用该模式集验证/代码生成项。然后在namespace-uri上完成解析。

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

有关此方法的详细信息,请查看MSDN

希望这有帮助,