Никаких ограничений грамматики (DTD или 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-  классы? шаблон тела)".

Ответ 1

В моем случае я решил это раздражающее предупреждение, просто добавив <!DOCTYPE xml> после тега <?xml ... >.

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

Ответ 2

Это сработало для меня в Eclipse 3.7.1: перейдите в окно настроек, затем XML → Файлы XML → Проверка. Затем в разделе "Проверяющие файлы" панели предпочтений справа выберите "Игнорировать" в раскрывающемся списке "Нет заданной грамматики". Возможно, вам придется закрыть файл, а затем снова открыть его, чтобы предупредить об этом.

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

Ответ 3

Ответ:

Комментарии к каждой части вашего 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 "&#xA0;"> 
<!ENTITY author "Your Author Name">
]>

Значение вышеуказанных строк...
Строка 1) Корневой элемент определяется как "nameOfYourRootElement"
Строка 2) Начало определения элементов
Строка 3) Дети корневого элемента определяются как "nameOfYourRootElement1" и "nameOfYourRootElement2"
Строка 4) Детский элемент, который определяется как тип данных #PCDATA
Строка 5) Детский элемент, который определяется как тип данных #PCDATA
Строка 6) Разверните экземпляры &nbsp; до &#xA0;, когда документ обрабатывается парсером XML
Строка 7) Разверните экземпляры &author; до Your Author Name, когда документ анализируется парсером XML
Строка 8) Конец определений

Ответ 4

Реальное решение:

добавить <!DOCTYPE something> в начало каждого проблемного XML,

после тега xml <?xml version="1.0" encoding="utf-8"?>

вы можете написать что-нибудь для doctype, но в основном он должен быть явным, активным и т.д. из того, что я понимаю

Ответ 5

Вы пытались добавить схему в каталог 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 и выполните некоторые изменения, чтобы нарушить схему, вы должны быть уведомлены

Ответ 6

Новый чистый способ может заключаться в том, чтобы написать xml так:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rootElement>

<rootElement>
 ....
</rootElement>

Вышеупомянутые работы в Eclipse Juno +

Ответ 7

Для меня это была проблема с кодировкой символов и unix filemode запускать eclipse в Windows:

Просто пометили полный код, вырезали его и вставляли обратно (короче: CtrlA-CtrlX-CtrlV), и все было в порядке - больше никаких предупреждений о "отсутствии грамматики..."

Ответ 8

Добавить тег DOCTYPE...

В этом случае:

<!DOCTYPE xml>

Добавить после:

<?xml version="1.0" encoding="UTF-8"?>

Итак:

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

Ответ 9

Я не могу сказать, почему вы получаете предупреждение "Нет ограничений грамматики...", но я могу спровоцировать его в Eclipse, полностью удалив объявление DOCTYPE. Когда я снова вернусь и вернусь к декларации, я получаю следующее сообщение об ошибке:

Содержимое типа элемента "шаблон" должен соответствовать "(Описание +, изменение?, Изменение поле?, Позволяет-множественный вариант?, Класс-шаблон?, Геттер-сеттер?, Позволивший файл-расширение?, Шаблон тело +).

И это правильно, я считаю (элемент "число-обязательные классы" недопустим).

Ответ 10

Я знаю, что это старо, но я передаю ту же проблему и нашел решение в документации 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.

Ответ 11

Это может быть связано с отключением проверки в затмении.

Ответ 12

Решена проблема в Eclipse 3.5.2. Два полностью идентичных макета, из которых было предупреждение. Закрыл все вкладки, и когда повторное открытие предупреждения исчезло.

Ответ 13

  • скопируйте весь код в блокнот.
  • временно сохранить файл с любым именем [при сохранении файла используйте "encoding" = UTF-8 (или выше, но UTF)].
  • закройте файл.
  • откройте его снова.
  • скопируйте его обратно в свой код.

ошибка должна исчезнуть.

Ответ 14

Здесь рабочее решение для этой задачи:


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

Шаг 2. Перейдите в "библиотеки" и удалите проект "Системная библиотека JRE"

Шаг 3: Нажмите "Добавить библиотеку" → "Библиотека JRE" → выберите "Рабочая область по умолчанию JRE"

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

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

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

Ответ 15

То, что я нашел решением, было очень простым, и я думаю, что вы должны попробовать, прежде чем перебирать предпочтения. В моем случае у меня была эта проблема в файле строк, который имел в качестве базового тега "ресурсы"... все, что я сделал, это удалить тег сверху и снизу, очистить проект, сохранить файл и повторно вставить тег. С тех пор проблема исчезла и никогда не давала мне никаких предупреждений. Это может показаться простым, чтобы быть правдой, но эй, иногда это самые простые вещи, которые решают проблемы. Приветствия

Ответ 16

Я использовал относительный путь в 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>

Работа проверки и предупреждение фиксированы (не игнорируются).

https://www.w3schools.com/xml/schema_example.asp

Ответ 17

Я удалил предупреждение в представлении проблем. Он до сих пор не вернулся.

Ответ 18

У меня тоже была такая же проблема в eclipse с использованием файла web.xml, он показал мне это "никаких ограничений грамматики, на которые ссылается в документе"

но его можно решить, добавив тег после тега xml, т.е. ""