Для документа не обнаружено грамматических ограничений (DTD или XML-схема) - PullRequest
181 голосов
/ 29 декабря 2010

У меня есть это 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>

РЕДАКТИРОВАТЬ : Я изменил xml, сейчас я получаю эту ошибку:

Содержимое типа элемента "шаблон" должно совпадать "(описание, вариант?, Поле вариации?, Allow- множественное изменение?, класс-шаблон?, геттер-сеттер? разрешенный-файл-расширение?, номер-required- классы?, шаблоны тело)».

Ответы [ 18 ]

362 голосов
/ 10 марта 2014

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
161 голосов
/ 11 октября 2011

Это сработало для меня в Eclipse 3.7.1: перейдите в окно настроек, затем XML -> XML Files -> Validation. Затем в разделе «Проверка файлов» панели предпочтений справа выберите «Пропустить» в раскрывающемся списке для предпочтения «Не указана грамматика». Возможно, вам придется закрыть файл, а затем снова открыть его, чтобы отключить предупреждение.

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

31 голосов
/ 03 января 2015

Ответ:

Комментарии к каждому фрагменту вашего 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-документа, в том числе:

  • список юридических элементов
  • специальные символы
  • строки символов
  • и намного больше

1039 * Е.Г. *

<!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) Конец определений

20 голосов
/ 10 октября 2013

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

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

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

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

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

Вы пытались добавить схему в каталог 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 голосов
/ 22 ноября 2013

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

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

6 голосов
/ 14 июля 2017

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

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

<!DOCTYPE xml>

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

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

Итак:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
6 голосов
/ 15 августа 2014

Новым чистым способом может быть написание вашего xml следующим образом:

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

<rootElement>
 ....
</rootElement>

Вышеописанное работает в Eclipse Juno +

3 голосов
/ 29 декабря 2010

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

Содержимое типа элемента "шаблон" должно совпадать "(описание +, вариация?, Вариация-поле?-variation?, class-pattern?, getter-setter?, разрешенные-файлы-расширения?"элемент запрещен).

3 голосов
/ 26 июля 2017

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

...