Поддельное предупреждение Eclipse для web.xml: «Для документа не обнаружены грамматические ограничения (DTD или XML-схема)». - PullRequest
34 голосов
/ 27 ноября 2008

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

Ответы [ 7 ]

46 голосов
/ 24 февраля 2010

Я тоже ненавижу это предупреждение. Особенно потому, что он появляется в файлах XML, которые вы не написали, но по какой-то причине появляются в вашем проекте (если вы используете MAVEN, это ад).

С Eclipse 3.5+ вы можете легко удалить это правило проверки. Перейдите в «Настройки» -> «XML» -> «ФАЙЛЫ XML» -> «Проверка» и выберите «игнорировать».

Вам также может потребоваться выполнить проект -> Очистить, чтобы предупреждения проверки исчезли.

alt text

26 голосов
/ 27 ноября 2008

Возможно, попробуйте:

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>
10 голосов
/ 17 сентября 2011

Очистить кэш для сохраненных файлов проверки.

Окно> Настройки> Общие> Сетевые подключения> Кэш, затем удалите все. Теперь проверьте файл и посмотрите, все ли прояснилось.

Это случилось со мной, и очистка кэша для проверки была единственным способом восстановить его правильную работу. Совет по очистке грязного кэша был найден здесь .

2 голосов
/ 02 июня 2012

Если у вас появляется то же (ошибочное) сообщение об ошибке, поскольку ваш редактор 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 в файловой системе или рабочей области.

0 голосов
/ 15 августа 2014

Вы также можете увидеть мой ответ на аналогичный вопрос на .

По сути, просто напишите свой xml, чтобы соответствовать требуемому правилу

0 голосов
/ 29 января 2013

Проблема двоякая:

  1. Eclipse поставляется с кешем многих известных XSD. Предоставленное вами пространство имен и / или местоположение не соответствует ни одному из них.
  2. Итак, Eclipse пытается найти XSD в Интернете по предоставленному URI (может просто работать). К сожалению, похоже, что после пересмотра Oracle java.sun.com этот механизм просто отключается в Eclipse (по-видимому, сервер перенаправляет на домашнюю страницу вместо того, чтобы просто сказать «не существует, простите»).

Когда вы вернетесь к правильным значениям для Java EE 5, запись в кеше будет найдена, и Eclipse будет счастлив.

0 голосов
/ 22 октября 2009

Добавьте это <!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> ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...