Как исправить ошибку проверки Eclipse «Нет грамматических ограничений для документа»? - PullRequest
56 голосов
/ 29 января 2011

Eclipse 3.5.2 генерирует предупреждающее сообщение схемы XML:

No grammar constraints (DTD or XML schema) detected for the document.

Файл application.xml:

<?xml version="1.0" encoding="UTF-8"?>
<application
  xmlns="http://java.sun.com/xml/ns/javaee"
  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/application_5.xsd"
  version="5">

</application>

Я не хочу отключать предупреждение. Как мне заставить Eclipse правильно проверить документ XML?

Ответы [ 16 ]

58 голосов
/ 30 июля 2013

Поместить это в начало любого файла-нарушителя мне подходит:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE project>
42 голосов
/ 28 марта 2011

Не уверен, что вы когда-нибудь решили это удовлетворительно, но я наткнулся на эту публикацию сегодня, работая с некоторыми файлами конфигурации Spring в Eclipse 3.6.Я не мог заставить ошибку исчезнуть в представлении «Проблемы» в Eclipse, несмотря ни на что, пока я не щелкнул правой кнопкой мыши по проблеме и не удалил ее .

Я подумал, что он вернется, если я проведу повторную проверку, и на самом деле была проблема, и до сих пор ее не было.Дело в том, что у меня был почти идентичный конфигурационный файл Spring, в котором не отображалась ошибка.

Может показаться, что иногда в Eclipse все застревает.Не уверен, почему, но между этим и тем, что файлы перестали синхронизироваться с редакторами и пришлось принудительно обновлять, думаю, я должен принять это.

33 голосов
/ 16 ноября 2012

Это еще один способ отключить предупреждения для документов XML, что преднамеренно не имеет DTP или XSD:

  1. Перейти в меню настроек,
  2. в меню навигации, т. Е. В левом фрейме диалогового окна, выберите: XML> XML Files> Validation
  3. в области конфигурации, то есть в правой части диалогового окна, выберите: Проверка файлов> Грамматика не указана> Игнорировать (это поле выбора) По умолчанию установлено предупреждение)
6 голосов
/ 17 сентября 2013

Я не эксперт, а ученик.Я случайно нашел простой и глупый способ решения проблемы.Все, что вам нужно сделать, это:

Нажмите ctrl + shift + F (это ярлык для форматирования файла в Eclipse)

Если это не решит проблему, нажмите TAB *Клавиша 1007 * в начале этой конкретной строки
?xml version="1.0" encoding="UTF-8"? и нигде больше (не знаю почему, но это работает. Если кто-то здесь знает, почему ябуду очень рад узнать)

Затем нажмите ctrl + shift + F и сохраните.

Предупреждение исчезнет, ​​по крайней мере для меня, вы можете попробовать для себя ...

5 голосов
/ 28 июля 2015

Если появляется это предупреждение, это означает, что функция проверки XML (которая отличается от редактора экземпляра XML!) Не знала, что применять DTD или XSD.Это, конечно же, также означает, что он фактически не проверял, соответствует ли экземпляр XML какой-либо схеме.

Поэтому это полезное предупреждение, его не следует отключать (если вы используете функцию меню Validate и ожидаете егочто-то сделать).

Вы можете использовать настройки, чтобы сделать вашу схему известной:

  • Открыть настройки / Каталог XML / Заданные пользователем записи
  • Нажмите Добавить ...
  • Введите файл XSD для использования в поле «Местоположение»
  • Выберите тип ключа «Расположение схемы» (если у вас есть xsi: schemaLocation)
  • Введите URL (вторая часть местоположения), сопоставляя содержимое файла как «Ключ»
  • Нажмите OK
  • Перейдите к представлению Проблемы и удалите предупреждение проверки
  • Щелкните правой кнопкой мыши Файл XML иСнова выберите «Подтвердить»

Некоторые общедоступные идентификаторы и расположения схемы уже содержатся в «записях, указанных подключаемым модулем» (особенно если у вас установлен WSTP).Для этих пространств имен вы не получите предупреждение (поскольку оно использует предоставленную системой копию для проверки).

3 голосов
/ 31 мая 2012

в затмении, чтобы избежать " никаких грамматических ограничений (схема dtd или xml), обнаруженных для документа. " я использую для добавления файла схемы xsd в каталог xml под

"Окно \ предпочтения \ xml \ xml каталог \ Пользовательские записи ".

Нажмите кнопку «Добавить» справа.


Пример:

<?xml version="1.0" encoding="UTF-8"?>
<HolidayRequest xmlns="http://mycompany.com/hr/schemas">
    <Holiday>
        <StartDate>2006-07-03</StartDate>
        <EndDate>2006-07-07</EndDate>
    </Holiday>
    <Employee>
        <Number>42</Number>
        <FirstName>Arjen</FirstName>
        <LastName>Poutsma</LastName>
    </Employee>
</HolidayRequest>

Из этого xml я сгенерировал и сохранил xsd в: / home /my_user / xsd / my_xsd.xsd

как местоположение: /home/my_user/xsd/my_xsd.xsd

как тип ключа: имя пространства имен

как ключ: http://mycompany.com/hr/schemas


Закройте и снова откройте файл XML и внесите некоторые изменения, чтобы нарушить схему, вы должны быть уведомлены.

2 голосов
/ 16 апреля 2016

Добавьте это в самое начало вашего XML-файла:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE RelativeLayout>

Изменить RelativeLayout на определенный вами корневой макет Затем найдите файл XML в левой части, в папке макета щелкните правой кнопкой мыши и выберите Подтвердить.

2 голосов
/ 29 января 2011

Я добился некоторого успеха, возвращаясь к V1.4 application.xsd . Если кто-нибудь может объяснить, почему не работает версия JavaEE, я был бы признателен.

<?xml version="1.0" encoding="UTF-8"?>
<application
  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/application_1_4.xsd"
  version="1.4">
1 голос
/ 09 сентября 2015

Вот что сработало для меня. Я использовал схемы без номеров версий (например, spring-beans.xsd, а не spring-beans-4.1.xsd), и они, вероятно, были обновлены в апстриме. Я предполагаю, что проблема была в том, что Eclipse хранил грязный кеш старых версий.

Исправлено:
1. Перейдите к Window -> Preference -> Network Connection -> Cache
2. Удалите все кэшированные схемы.
3. Удалите все проблемы no grammar constraints в окне проблем.
4. Повторная проверка проекта.

1 голос
/ 11 мая 2013

Вот рабочее решение этой проблемы:

Шаг 1: Щелкните правой кнопкой мыши по проекту и перейдите к свойствам

Шаг 2: Зайдите в «библиотеки» и удалите из проекта «Системную библиотеку JRE»

Шаг 3: Нажмите «Добавить библиотеку» -> «Системная библиотека JRE» -> выберите «JRE рабочей области по умолчанию»

Шаг 3: Перейдите к «Заказ и экспорт» и отметьте недавно добавленную «Системную библиотеку JRE»

Шаг 4. Обновление и очистка проекта

Эврика! Работает :)

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