Верх моего файла 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.




Возможно, попробуем:
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>
Вам также необходимо изменить xmlns с: - java.sun.com/xml/ns/j2ee на: - java.sun.com/xml/ns/javaee
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" ... И не забудьте "проверить" файл с нарушением после внесения изменений.
Добавьте этот <!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> ...
Это файл web.xml, а не файл xhtml.
Я тоже ненавижу это предупреждение. Особенно потому, что он появляется в файлах XML, которые вы не писали, но по какой-то причине появляются в вашем проекте (если вы используете MAVEN, это ад).
В Eclipse 3.5+ вы можете легко удалить это правило проверки. Перейдите в Настройки -> XML -> ФАЙЛЫ XML -> Проверка и выберите «игнорировать».
Возможно, вам также придется выполнить Project -> Clean, чтобы предупреждения проверки исчезли.

Я широко использую Maven и не получаю эту ошибку в файлах Maven, если они не находятся в целевом каталоге. В этом случае лучше добавить правило для отключения проверки в целевом каталоге, чем игнорировать ошибку.
Это не решает проблему, просто скрывает симптом.
Я бы НЕ делал это Предпочтения | XML | XML-файлы | Проверка в Eclipse, поскольку это только маскирует / скрывает ошибку, это не решать ошибка. Если вы используете Eclipse только для создания приложений Android, тогда это «решение» приемлемо. Но если вы используете Eclipse для создания других Java-проектов - JSF и т. д. - он сломает эти проекты, если проверка XML «выключена». Так что будь осторожен. Реальное решение для Oracle, Google и IBM - обновить свое программное обеспечение с помощью обновленных DTD и схем.
Нам постоянно приходится иметь дело с плохо сформированными сторонними файлами, особенно с файлами xml. Да, было бы неплохо, если бы они исправили их, но они этого не делают, поэтому мне просто нужно отключить бессмысленные предупреждения, чтобы я мог видеть важные, реальные предупреждения. Это исправление действительно помогло мне, спасибо.
Очистите кеш для сохраненных файлов проверки.
Окно> Настройки> Общие> Сетевые подключения> Кэш, затем удалите все. Теперь проверьте файл и посмотрите, проясняет ли это ситуацию.
Мне это понравилось, и очистка кеша для проверки была единственным способом вернуть его в нормальное состояние. Был найден совет по очистке грязного кеша здесь.
Это сработало для меня. Похоже, в какой-то момент мой Eclipse кэшировал поддельную копию java.sun.com/xml/ns/javaee/web-app_2_5.xsd, из-за которой все мои файлы web.xml не прошли проверку.
Это сработало и для меня, когда мои файлы bean-компонентов Spring начали выдавать эту ошибку.
Если у вас такое же (ошибочное) сообщение об ошибке, потому что ваш 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 в файловой системе или в рабочей области.
Проблема двоякая:
Когда вы установите правильные значения для Java EE 5, запись в кэше будет найдена, и Eclipse будет счастлив.
вы также можете увидеть мой ответ по аналогичному вопросу о. По сути, просто напишите свой xml, чтобы он соответствовал требуемому правилу