Ответ 1
В моем случае я решил это раздражающее предупреждение, просто добавив <!DOCTYPE xml>
после тега <?xml ... >
.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
У меня есть этот dtd: http://fast-code.sourceforge.net/template.dtd Но когда я включаю в xml, я получаю предупреждение: Для документа не обнаружено ограничений на грамматику (DTD или XML-схема). Xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE templates PUBLIC "//UNKNOWN/" "http://fast-code.sourceforge.net/template.dtd">
<templates>
<template type="INSTANCE_OF_CLASS">
<description>Used to Create instance of class</description>
<variation>asasa</variation>
<variation-field>asasa</variation-field>
<class-pattern>asasa</class-pattern>
<getter-setter>setter</getter-setter>
<allowed-file-extensions>java</allowed-file-extensions>
<number-required-classes>1</number-required-classes>
<allow-multiple-variation>false</allow-multiple-variation>
<template-body>
<![CDATA[
// Creating new instance of ${class_name}
final ${class_name} ${instance} = new ${class_name}();
#foreach ($field in ${fields})
${instance}.${field.setter}(${field.value});
#end
]]>
</template-body>
</template>
</templates>
EDIT: я изменил xml, теперь получаю эту ошибку:
Содержимое типа элемента "шаблон" должно соответствовать "(описание, изменение?, поле изменения?", множественное изменение?, класс-шаблон?, геттер-сеттер? разрешенный файл-расширение?, номер-required- классы? шаблон тела)".
В моем случае я решил это раздражающее предупреждение, просто добавив <!DOCTYPE xml>
после тега <?xml ... >
.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
Это сработало для меня в Eclipse 3.7.1: перейдите в окно настроек, затем XML → Файлы XML → Проверка. Затем в разделе "Проверяющие файлы" панели предпочтений справа выберите "Игнорировать" в раскрывающемся списке "Нет заданной грамматики". Возможно, вам придется закрыть файл, а затем снова открыть его, чтобы предупредить об этом.
(Я знаю, что этот вопрос старый, но он был первым, который я нашел при поиске в предупреждении, поэтому я отправляю ответ здесь для других поисковиков.)
Ответ:
Комментарии к каждой части вашего DTD ниже. Для получения дополнительной информации см. официальную спецификацию.
<!
DOCTYPE ----------------------------------------- correct
templates --------------------------------------- correct Name matches root element.
PUBLIC ------------------------------------------ correct Accessing external subset via URL.
"//UNKNOWN/" ------------------------------------ invalid? Seems useless, wrong, out-of-place.
Safely replaceable by DTD URL in next line.
"http://fast-code.sourceforge.net/template.dtd" - invalid URL is currently broken.
>
Простое объяснение:
Чрезвычайно базовый DTD будет выглядеть как вторая строка здесь:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE nameOfYourRootElement>
<nameOfYourRootElement>
</nameOfYourRootElement>
Подробное объяснение:
DTD служат для установления согласованных форматов данных и подтверждения получения таких данных. Они определяют структуру XML-документа, включая:
например.
<!DOCTYPE nameOfYourRootElement
[
<!ELEMENT nameOfYourRootElement (nameOfChildElement1,nameOfChildElement2)>
<!ELEMENT nameOfChildElement1 (#PCDATA)>
<!ELEMENT nameOfChildElement2 (#PCDATA)>
<!ENTITY nbsp " ">
<!ENTITY author "Your Author Name">
]>
Значение вышеуказанных строк...
Строка 1) Корневой элемент определяется как "nameOfYourRootElement"
Строка 2) Начало определения элементов
Строка 3) Дети корневого элемента определяются как "nameOfYourRootElement1" и "nameOfYourRootElement2"
Строка 4) Детский элемент, который определяется как тип данных #PCDATA
Строка 5) Детский элемент, который определяется как тип данных #PCDATA
Строка 6) Разверните экземпляры
до  
, когда документ обрабатывается парсером XML
Строка 7) Разверните экземпляры &author;
до Your Author Name
, когда документ анализируется парсером XML
Строка 8) Конец определений
Реальное решение:
добавить <!DOCTYPE something>
в начало каждого проблемного XML,
после тега xml <?xml version="1.0" encoding="utf-8"?>
вы можете написать что-нибудь для doctype, но в основном он должен быть явным, активным и т.д. из того, что я понимаю
Вы пытались добавить схему в каталог xml?
в eclipse, чтобы избежать "ограничений грамматики (схемы 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 и выполните некоторые изменения, чтобы нарушить схему, вы должны быть уведомлены
Новый чистый способ может заключаться в том, чтобы написать xml так:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rootElement>
<rootElement>
....
</rootElement>
Вышеупомянутые работы в Eclipse Juno +
Для меня это была проблема с кодировкой символов и unix filemode запускать eclipse в Windows:
Просто пометили полный код, вырезали его и вставляли обратно (короче: CtrlA-CtrlX-CtrlV), и все было в порядке - больше никаких предупреждений о "отсутствии грамматики..."
Добавить тег DOCTYPE...
В этом случае:
<!DOCTYPE xml>
Добавить после:
<?xml version="1.0" encoding="UTF-8"?>
Итак:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
Я не могу сказать, почему вы получаете предупреждение "Нет ограничений грамматики...", но я могу спровоцировать его в Eclipse, полностью удалив объявление DOCTYPE. Когда я снова вернусь и вернусь к декларации, я получаю следующее сообщение об ошибке:
Содержимое типа элемента "шаблон" должен соответствовать "(Описание +, изменение?, Изменение поле?, Позволяет-множественный вариант?, Класс-шаблон?, Геттер-сеттер?, Позволивший файл-расширение?, Шаблон тело +).
И это правильно, я считаю (элемент "число-обязательные классы" недопустим).
Я знаю, что это старо, но я передаю ту же проблему и нашел решение в документации spring, следующая xml-конфигурация была решена для меня.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx
<!-- THIS IS THE LINE THAT SOLVE MY PROBLEM -->
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
прежде чем я поставил вышеприведенную строку, как сказано в этом форуме, у меня есть такое же предупреждающее сообщение и помещаю это...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
и он дает мне следующее предупреждающее сообщение...
The content of element type "template" must match "
(description,variation?,variation-field?,allow- multiple-variation?,class-
pattern?,getter-setter?,allowed-file-extensions?,number-required-
classes?,template-body)".
просто попробуйте использовать строки с настройками конфигурации xml.
Это может быть связано с отключением проверки в затмении.
Решена проблема в Eclipse 3.5.2. Два полностью идентичных макета, из которых было предупреждение. Закрыл все вкладки, и когда повторное открытие предупреждения исчезло.
ошибка должна исчезнуть.
Здесь рабочее решение для этой задачи:
Шаг 1: Щелкните правой кнопкой мыши по проекту и перейдите к свойствам
Шаг 2. Перейдите в "библиотеки" и удалите проект "Системная библиотека JRE"
Шаг 3: Нажмите "Добавить библиотеку" → "Библиотека JRE" → выберите "Рабочая область по умолчанию JRE"
Шаг 3. Перейдите в раздел "Заказ и экспорт" и отметьте недавно добавленную "Системную библиотеку JRE"
Шаг 4: Обновить и очистить проект
Эврика! Он работает:)
То, что я нашел решением, было очень простым, и я думаю, что вы должны попробовать, прежде чем перебирать предпочтения. В моем случае у меня была эта проблема в файле строк, который имел в качестве базового тега "ресурсы"... все, что я сделал, это удалить тег сверху и снизу, очистить проект, сохранить файл и повторно вставить тег. С тех пор проблема исчезла и никогда не давала мне никаких предупреждений. Это может показаться простым, чтобы быть правдой, но эй, иногда это самые простые вещи, которые решают проблемы. Приветствия
Я использовал относительный путь в xsi: noNamespaceSchemaLocation, чтобы предоставить локальный файл xsd (потому что я не мог использовать пространство имен в экземпляре xml).
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../project/schema.xsd">
</root>
Работа проверки и предупреждение фиксированы (не игнорируются).
Я удалил предупреждение в представлении проблем. Он до сих пор не вернулся.
У меня тоже была такая же проблема в eclipse с использованием файла web.xml, он показал мне это "никаких ограничений грамматики, на которые ссылается в документе"
но его можно решить, добавив тег после тега xml, т.е. ""