我web.xml
文件的顶部如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
version="2.5">
但我仍然得到Eclipse(Ganymede)的警告,即没有检测到XML模式,并且没有警告模式违规。我的项目中的其他XML文件(例如Spring Framework配置文件)没有警告,并且确实提供了有关架构违规的正确警告。
如何让架构检查工作,希望警告消失?服务器运行正常。它似乎只是一个IDE问题。
答案 0 :(得分:46)
我也讨厌这个警告。特别是因为它出现在XML文件中,你没有写,但出于任何原因出现在你的项目中(如果你使用MAVEN它是地狱)。
使用Eclipse 3.5+,您可以轻松删除此验证规则。转到首选项 - &gt; XML - &gt; XML文件 - &gt;验证并选择“忽略”。
你可能还需要做一个项目 - &gt;清理验证警告即可消失。
答案 1 :(得分:26)
也许试试:
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
而不是:
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd
此外,<!DOCTYPE ...>
缺失:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!-- ... -->
</web-app>
答案 2 :(得分:10)
清除存储的验证文件的缓存。
窗口&gt;偏好&gt;一般&gt;网络连接&gt;缓存然后删除所有。现在去验证文件,看看是否能解决问题。
这对我而言,清除缓存以进行验证是让它再次正常运行的唯一方法。找到了清除脏缓存的建议here。
答案 3 :(得分:2)
如果您的XML编辑器未找到XSD文件,则会出现相同的(误导性)错误消息,您可以添加商品。
您可以选择为架构指定的URL,以获取类似
的声明xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
为命名空间http://java.sun.com/xml/ns/j2ee指定了架构文件的URL(http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd)。您现在可以使用Eclipse中的工作区目录重定向文件的位置:
Preferences -> XML -> XML Catalog -> Add..
使用
Key Type = Schema Location
Key = http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd
然后你可以使用文件选择器在文件系统或工作区上实际选择一个XSD文件。
答案 4 :(得分:0)
问题是双重的:
当您修改Java EE 5的正确值时,将找到缓存中的条目,Eclipse将很高兴。
答案 5 :(得分:0)
您还可以看到我的回答for similar question on。
基本上,只需编写xml以符合所需规则
答案 6 :(得分:-5)
将此<!DOCTYPE ...>
添加到您的xml文件中。请把它放在<?xml ...>
:
<!DOCTYPE ??? PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
???
=您的根元素,现在如果您的子元素名称使用的是html保留字,您可能会捕获一些错误,您所要做的就是将它们更改为非保留字。
例如:
如果您当前的子元素为<img>
,请将其更改为<pic>
...