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

时间:2013-10-08 16:35:53

标签: xml xsd

我在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:他们声称它应该按照我尝试的方式工作。但事实并非如此。

3 个答案:

答案 0 :(得分:38)

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"

仍然无效?我建议您小心将XSD的完整文件规范复制到Chrome或Firefox的地址栏中

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

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:-3)

如果您使用 MS Visual Studio ,请执行以下操作

  1. 将WSDL文件和XSD文件 放在同一个文件夹
  2. 更正这样的WSDL文件 YourSchemeFile.xsd

  3. 使用此优秀示例How to generate service reference with only physical wsdl file

  4. 使用visual Studio

    请注意,您必须手动将路径放到WSDL文件中。无法使用打开文件对话框。