Как исправить ошибку проверки Eclipse "Нет грамматических ограничений для документа"?
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 ответов
Не уверен, что вы когда-нибудь решили это удовлетворительно, но я наткнулся на эту публикацию сегодня, работая с некоторыми файлами конфигурации Spring в Eclipse 3.6. Я не мог заставить ошибку исчезнуть в представлении "Проблемы" в Eclipse, несмотря ни на что, пока я не щелкнул правой кнопкой мыши по проблеме и не удалил ее.
Я подумал, что он вернется, если я проведу повторную валидацию, и на самом деле была проблема, и пока ее нет. Дело в том, что у меня был почти идентичный конфигурационный файл Spring, который не отображал ошибку.
Казалось бы, иногда в Eclipse что-то застревает. Не уверен, почему, но между этим и тем, что файлы перестали синхронизироваться с редакторами, и пришлось принудительно обновлять, я думаю, что должен принять это.
Поместить это в начало любого файла оскорбления работает для меня:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE project>
Это еще один способ отключить предупреждения для документов XML, в которых намеренно отсутствует DTP или XSD:
- Зайдите в Настройки меню,
- в меню навигации, то есть в левом фрейме диалогового окна, выберите: XML > XML Files > Validation
- в области конфигурации, то есть в правой части диалогового окна, выберите: Проверка файлов> Грамматика не указана> Игнорировать (это поле выбора). По умолчанию установлено предупреждение)
Я не эксперт, а ученик. Я случайно нашел простой и глупый способ решения проблемы. Что вам просто нужно сделать, это:
Нажмите ctrl + shift + F
(это ярлык для форматирования файла в Eclipse)
Если это не решает проблему, нажмите клавишу TAB в начале этой конкретной строки.?xml version="1.0" encoding="UTF-8"?
и не где-нибудь еще (не знаю почему, но это работает. Если кто-нибудь здесь знает, почему я буду очень рад узнать)
Затем нажмите ctrl + shift + F
и сохранить.
Предупреждение исчезнет, по крайней мере, для меня, вы можете попробовать для себя...
Если появляется это предупреждение, это означает, что функция проверки XML (которая отличается от редактора экземпляра XML!) Не знала, что применять DTD или XSD. Это, конечно, также означает, что он на самом деле не проверял, соответствует ли экземпляр XML какой-либо схеме.
Поэтому это полезное предупреждение, его не следует отключать (если вы используете функцию меню "Проверить" и ожидаете, что она что-то сделает).
Вы можете использовать настройки, чтобы сделать вашу схему известной:
- Открыть Настройки / Каталог XML / Заданные пользователем записи
- Нажмите Добавить...
- Введите файл XSD для использования в "Расположение"
- Выберите тип ключа "Расположение схемы" (если у вас есть xsi:schemaLocation)
- Введите URL-адрес (вторая часть местоположения), соответствующий содержимому файлов, как "Ключ"
- Нажмите ОК
- Перейдите к просмотру проблемы и удалите предупреждение проверки
- Щелкните правой кнопкой мыши файл XML и снова выберите "Проверить".
Некоторые общедоступные идентификаторы и расположения схемы уже содержатся в "записях, определенных плагином" (особенно, если у вас установлен WSTP). Для этих пространств имен вы не получите предупреждение (так как оно использует предоставленную системой копию для проверки).
Добавьте это в начало вашего XML-файла:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE RelativeLayout>
Измените RelativeLayout на заданный корневой макет, затем найдите файл XML в левой части, в папке макета щелкните правой кнопкой мыши и выберите "Проверить".
В eclipse, чтобы избежать "никаких грамматических ограничений (схема dtd или xml), обнаруженных для документа." Я использую, чтобы добавить файл схемы xsd в каталог xml под
Msgstr "Окно \ предпочтения \ 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 и внесите некоторые изменения, чтобы нарушить схему, вы должны быть уведомлены.
Я имел некоторый успех, возвращаясь к 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: Щелкните правой кнопкой мыши на проекте и перейдите в свойства
Шаг 2: Перейдите в "библиотеки" и удалите "Системную библиотеку JRE" проекта
Шаг 3: Нажмите "Добавить библиотеку" -> "Системная библиотека JRE" -> выберите "JRE рабочей области по умолчанию"
Шаг 3: Перейдите к "Заказ и экспорт" и отметьте недавно добавленную "Системную библиотеку JRE".
Шаг 4: Обновить и очистить проект
Эврика! Работает:)
Вот что сработало для меня. Я использовал схемы без номеров версий (например, spring-beans.xsd
, и не spring-beans-4.1.xsd
) и они, вероятно, были обновлены вверх по течению. Я предполагаю, что проблема была в том, что Eclipse хранил грязный кеш старых версий.
Исправить:
1. Перейти к Window -> Preference -> Network Connection -> Cache
2. Удалите все кэшированные схемы.
3. Удалить все no grammar constraints
проблемы в представлении проблемы.
4. Повторная проверка проекта.
Ни одно из вышеупомянутых решений не помогло. Он работал с загрузкой Spring версии 2.1.0.RELEASE, но когда я создал проект с весенней загрузкой версии 2.3.0.RELEASE, у меня
не было никаких грамматических ограничений (dtd или xml-схемы), упомянутых в выпуске документа.
Я исправил это, обновив версию Eclipse, которая также обновляет версию maven. В моем случае я использую студию разработчика Red Hat, поэтому Меню-> Справка-> проверить наличие обновлений, она просканирует и откроет окно обновления с Доступными обновлениями. Проверьте обновление, связанное с версией Eclipse, и нажмите Далее-> Далее-> Принять условия-> Готово.
Это может быть из-за ваших настроек прокси. Смотрите это и это. Вы можете попробовать подключить Javadoc по URL к библиотеке без него. Если это нормально в вашем браузере, но не в редакторе, тогда это проблема с подключением. Я решил ту же проблему, спросив администратора о настройках прокси. Хотя все другие приложения работали, eclipse - нет, поэтому мне пришлось войти в конфигурацию "вручную". Было бы здорово, если бы разработчики добавили кнопку "проверить соединение"...
Мне показалось, что мне удалось полностью удалить атрибут schemaLocation, затем щелкнуть правой кнопкой мыши в виде структуры и перейти к редактированию пространств имен, а затем добавить подсказку расположения схемы в открывшемся диалоговом окне.
У меня просто была эта проблема прошлой ночью (используя eclipse V.kepler). Я совершенно новичок в Java и Eclipse, и я пытаюсь научить себя, как сделать приложение для Android. Пока я работал над уроками, предлагаемыми на developers.android.com, я добавил это в мой файл main_activity_actions.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search should appear as an action button -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="ifRoom"/>
</menu>
Это дало мне ту же ошибку, что и OP. Я попытался следовать предложению о добавлении
<!DOCTYPE project>
чуть ниже первой строки, и это решило проблему.
Решение для Eclipse:
добавлять <!DOCTYPE something>
в начале каждого проблемного XML,
после тега xml <?xml version="1.0" encoding="utf-8"?>
Вы можете написать что-нибудь для doctype, но в основном это должно быть манифест, активность и т. д. из того, что я понимаю
Редактируя файлы контекста Spring, я обнаружил, что явная установка версии XSD удаляет предупреждение:
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.9.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
Что мне помогло, так это щелкнуть правой кнопкой мыши по xml-файлу в дереве (как правило, слева от Eclipse) и щелкнуть "Подтвердить". С тех пор предупреждение так и не вернулось.
Для меня это сработало как брелок, когда я его обрезал (ctrl a + ctrl - X) и снова его сохранил (ctrl-s)! предупреждение "Никаких грамматических ограничений (DTD или XML-схема) для документа не обнаружено" исчезло навсегда!