对于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文件。

问题有两方面:

  1. Eclipse附带了许多着名XSD的caching。 您提供的名称空间和/或位置与这些名称空间不匹配。
  2. 所以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>