Предупреждение Bogus Eclipse для web.xml: "Никаких ограничений грамматики (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 файлы конфигурации с конфигурацией, например) не имеют предупреждения и дают правильные предупреждения о нарушениях схемы.
Как мне заставить проверку схемы работать и, надеюсь, предупреждение уйти? Сервер работает правильно. Это просто проблема IDE.
Ответы
Ответ 1
Возможно, попробуйте:
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
Я тоже ненавижу это предупреждение. Специально потому, что он появляется в файлах XML, которые вы не написали, но появляются в вашем проекте по какой-либо причине (если вы используете MAVEN, это ад).
С Eclipse 3.5+ вы можете легко удалить это правило проверки. Перейдите в раздел "Настройки" → XML → XML FILES → Проверка и выберите "игнорировать".
Вам также может потребоваться выполнить проект → Очистить, чтобы предупреждения о валидации исчезли.
![alt text]()
Ответ 3
Очистите кеш для сохраненных файлов проверки.
Окно > Настройки > Общие > Сетевые подключения > Кэш, затем удалите все. Теперь попробуйте проверить файл и посмотреть, очищает ли он это.
Это случилось со мной, и очистка кеша для проверки была единственным способом вернуть его снова. Совет по очистке грязного кеша был найден здесь.
Ответ 4
Если у вас есть одно и то же сообщение (ошибка), потому что ваш XML-редактор не нашел файл XSD, вы можете добавить запись в каталог.
Вы выбираете URL-адрес, указанный для схемы, для объявления типа
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
URL-адрес файла схемы (http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd) указан для пространства имен http://java.sun.com/xml/ns/j2ee. Теперь вы можете перенаправить расположение файла в каталог рабочей области в Eclipse:
Preferences -> XML -> XML Catalog -> Add..
Используйте
Key Type = Schema Location
Key = http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd
И затем вы можете использовать выбор файла для выбора файла XSD в файловой системе или рабочей области.
Ответ 5
Проблема двояка:
- Eclipse поставляется с кешем большого количества известных XSD. Пространство имен и/или местоположение, которое вы предоставляете, не соответствуют ни одному из них.
- Итак, Eclipse пытается искать XSD в Интернете по предоставленному URI (может просто работать). К сожалению, похоже, что после того, как Oracle переработал java.sun.com, этот механизм просто отключился в Eclipse (видимо, сервер перенаправляет на главную страницу вместо простого слова "не существует, извините" ).
Когда вы переходите к правильным значениям для Java EE 5, запись в кеше будет найдена, а Eclipse будет счастлив.
Ответ 6
вы также можете увидеть мой ответ для аналогичного вопроса.
В принципе, просто напишите свой xml, чтобы он соответствовал требуемому правилу
Ответ 7
Добавьте этот <!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>
...