57

我在 XML 文件中引用我的 XML Schema 时遇到了这个问题。

我在这条路径中有我的 XSD:

C:\environment\workspace\maven-ws\ProjectXmlSchema\email.xsd

但是,当我在我的 XML 文件中尝试像这样定位架构时,找不到 XSD:

<?xml version="1.0" encoding="UTF-8" ?>
    <email xmlns="http://www.w3schools.com"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.w3schools.com
                 file://C://environment//workspace//maven-ws//ProjextXmlSchema//email.xsd">

找到 XSD 的唯一方法是它位于同一文件夹中:

           xsi:schemaLocation="http://www.w3schools.com email.xsd"

所以问题是这样的:如果 XML 文件与 XSD 文件不在同一个文件夹中,那么路径必须如何查找才能找到 XSD?

顺便说一句,我一直在使用的示例来自MSDN:他们声称它应该按照我尝试的方式工作。但事实并非如此。

4

3 回答 3

57

file://在 的值之后再添加一个斜线xsi:schemaLocation。(你有两个;你需要三个。想想protocol://host/pathwhere protocolis'file'hostis empty here,连续产生三个斜线。)你也可以消除path. 我相信双斜杠有助于文件系统允许文件和目录名称中包含空格,但您明智地避免了路径命名中的复杂性。

xsi:schemaLocation="http://www.w3schools.com file:///C:/environment/workspace/maven-ws/ProjextXmlSchema/email.xsd"

还是行不通? 我建议您将 XSD 的完整文件规范仔细复制到 Chrome 或 Firefox 的地址栏中

file:///C:/environment/workspace/maven-ws/ProjextXmlSchema/email.xsd

如果 XSD没有显示在浏览器中,请删除路径 (email.xsd) 的最后一个部分以外的所有部分,看看是否不能显示父目录。以这种方式继续,沿着目录结构向上走,直到发现路径与本地文件系统的实际存在差异。

如果 XSD确实显示在浏览器中,请说明您正在使用的 XML 处理器,并准备好听到它已损坏或您必须解决某些限制。我可以告诉你,上述修复将适用于我的基于 Xerces-J 的验证器。

于 2013-10-08T17:09:53.177 回答
4

也许可以帮助检查 xsd 文件的路径是否没有像“é”或类似的“奇怪”字符:我遇到了同样的问题,但是当我更改为没有“é”的路径时,错误消失了。

于 2014-07-23T23:53:44.703 回答
0

我认为你可以使用这个:

xsi:noNamespaceSchemaLocation="relativePATH/file.xsd"
于 2022-02-21T21:18:06.477 回答