对于web.xml的Bogus Eclipse警告:“没有为文档检测到语法约束(DTD或XML模式)”。
我的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框架configuration文件)没有警告,并提供有关架构违规的正确警告。
我如何使模式检查工作,并希望警告消失? 服务器运行正常。 这似乎是一个IDE问题。
也许试试:
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>
我也讨厌这个警告。 特别是因为它出现在XML文件中,你没有编写,但出于任何原因出现在你的项目(如果你使用MAVEN它是地狱)。
使用Eclipse 3.5+,您可以轻松删除此validation规则。 转到首选项 – > XML – > XML文件 – >validation并select“忽略”。
您可能还必须执行“项目” – >“清理”以使validation警告消失。
清除存储的validation文件的caching。
窗口>首选项>常规>networking连接>caching,然后删除所有。 现在去validation文件,看看是否清除了事情。
这发生在我身上,并清除caching的validation是唯一的方法让它再次正常运作。 在这里find清除脏caching的build议。
如果由于XML编辑器未findXSD文件而具有相同(误导性)的错误消息,则可以添加商品。
您可以select为架构指定的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中使用工作空间目录redirect文件的位置:
Preferences -> XML -> XML Catalog -> Add..
使用
Key Type = Schema Location Key = http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd
然后,您可以使用文件select器来select文件系统或工作区上的XSD文件。
问题有两方面:
- Eclipse附带了许多着名XSD的caching。 您提供的名称空间和/或位置与这些名称空间不匹配。
- 所以Eclipse试图去寻找在互联网上提供的URI的XSD(可能只是工作)。 不幸的是,在Oracle修改java.sun.com之后,似乎这个机制在Eclipse中刚刚超时(显然服务器redirect到主页,而不是简单地说“不存在,不好意思”)。
当您修改为Java EE 5的正确值时,将会findcaching中的条目,Eclipse将很高兴。
你也可以在类似的问题上看到我的答案。
基本上,只需编写您的XML以符合所需的规则
将这个<!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>
…