如何正确引用本地XML Schema文件?

Art*_*s M 48 xml xsd

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

我在这条道路上有我的XSD:

C:\environment\workspace\maven-ws\ProjectXmlSchema\email.xsd
Run Code Online (Sandbox Code Playgroud)

但是当我在我的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">
Run Code Online (Sandbox Code Playgroud)

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

           xsi:schemaLocation="http://www.w3schools.com email.xsd"
Run Code Online (Sandbox Code Playgroud)

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

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

kjh*_*hes 43

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

xsi:schemaLocation="http://www.w3schools.com file:///C:/environment/workspace/maven-ws/ProjextXmlSchema/email.xsd"
Run Code Online (Sandbox Code Playgroud)

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

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

如果XSD 显示在浏览器中,请删除路径的最后一个组件(email.xsd)以外的所有组件,并查看是否无法显示父目录.以这种方式继续,沿着目录结构向上走,直到找到路径偏离本地文件系统的实际情况.

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

  • 非常感谢你.尝试在浏览器中打开它并查看/获取正确的路径,这是一个极好的想法.再次感谢,完美! (4认同)
  • 只要正确捕获目录之间的相对关系,诸如“xsd/drools-spring.xsd”之类的相对路径就可以。如果您遇到问题,我建议您发布一个新问题并提供问题的 [mcve]。谢谢。 (2认同)

gam*_*moz 5

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

\n