我在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:他们声称它应该按照我尝试的方式工作。但事实并非如此。
答案 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 ,请执行以下操作
更正这样的WSDL文件 YourSchemeFile.xsd
使用此优秀示例How to generate service reference with only physical wsdl file
请注意,您必须手动将路径放到WSDL文件中。无法使用打开文件对话框。