如何修复Eclipse验证错误“没有检测到文档的语法约束”?

时间:2011-01-28 21:05:14

标签: java eclipse java-ee xsd

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文档?

18 个答案:

答案 0 :(得分:58)

将此放在任何违规文件的顶部对我有用:

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

答案 1 :(得分:40)

不确定您是否曾经满意地解决了这个问题,但我在使用Eclipse 3.6中的一些Spring配置文件时遇到了这个帖子。无论如何,我都无法在Eclipse的Problems视图中消除错误,直到我右键单击该问题并将其删除

我认为如果我重新验证它会回来并且实际上存在问题而且到目前为止还没有。问题是我有一个几乎相同的Spring配置文件没有显示错误。

似乎有时候东西会陷入Eclipse中。不知道为什么但是这个和文件之间与编辑不同步并且不得不强制刷新我想我必须接受它。

答案 2 :(得分:31)

这是另一种关闭故意缺少DTP或XSD的XML文档警告的方法:

  1. 转到“菜单首选项”,
  2. 在导航菜单中,即对话框的左框,选择:XML&gt; XML文件&gt;验证
  3. 在配置区域,即对话框的右框架中,选择:验证文件&gt;没有指定语法&gt;忽略(这是一个选择框)默认设置是警告)

答案 3 :(得分:6)

我不是专家,而是学习者。我偶然发现了解决问题的简单方法。你需要做的是:

ctrl + shift + F(这是在Eclipse中格式化文件的快捷方式)

如果这不能解决问题,请在此特定行的处按 TAB
?xml version="1.0" encoding="UTF-8"?不在其他任何地方(我不是为什么,但这很有效。如果有人知道为什么我会很高兴知道)

然后按ctrl + shift + F并保存。

警告将消失,至少对我来说,你可以自己尝试......

答案 4 :(得分:5)

If this warning shows up it means the XML Validate function (which is different from the XML instance editor!) did not know what DTD or XSD to apply. This of course also means it did not actually check if the XML instance was compliant to any schema.

This is therefore a helpful warning, it should not be turned off (if you use the Validate menu function and expect it to do something).

You can use the preferences to make your schema known:

  • Open Preferences / XML Catalog / User Specified Entries
  • Click Add...
  • Enter the XSD file to use in "Location"
  • Select Key Type "Schema location" (in case you have a xsi:schemaLocation)
  • Enter the URL (second part of the location) matching the files content as "Key"
  • Press OK
  • Go to Problem view and delete the validation warning
  • Right-Click the XML File and Chose "Validate" again

Some public idenditfiers and schema locations are already contained in the "Plugin Specified Entries" (especially if you have WSTP installed). For those namespaces you do not get the warning (As it uses the system provided copy to validate).

答案 5 :(得分:3)

在eclipse中

以避免为文档检测到“没有语法约束(dtd或xml架构)。” 我用来将xsd模式文件添加到

下的xml目录中

“Window \ preferences \ xml \ xml catalog \用户指定的条目”。

点击右侧的“添加”按钮。


示例:

<?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 :(得分:2)

我取得了一些成功back to V1.4 of 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">

答案 7 :(得分:2)

将其添加到xml文件的最开头:

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

RelativeLayout 更改为您定义的根布局 ,然后在布局文件夹中找到左侧的xml文件,右键单击并选择验证。

答案 8 :(得分:1)

以下是此问题的可行解决方案:

步骤1:右键单击项目并转到属性

步骤2:转到“图书馆”并删除项目的“JRE系统库”

第3步:点击“添加图书馆” - &gt;“JRE系统资源库” - >选择“工作区默认JRE”

步骤3:转到“订购和导出”并标记新添加的“JRE系统库”

第4步:刷新并清理项目

尤里卡!它的工作原理:))

答案 9 :(得分:1)

这对我有用。我使用的是没有版本号的模式(例如spring-beans.xsd,而不是spring-beans-4.1.xsd),它们可能在上游更新了。我认为问题是Eclipse保留了旧版本的脏缓存。

修复:
 1.转到Window -> Preference -> Network Connection -> Cache
 2.删除所有缓存的模式  3.删除问题视图中的所有no grammar constraints个问题  4.重新验证项目。

答案 10 :(得分:0)

Eclipse解决方案:

<!DOCTYPE something>添加到每个有问题的XML的开头,

在xml标记<?xml version="1.0" encoding="utf-8"?>

之后

你可以为doctype写任何东西,但基本上它应该是我理解的表现,活动等

答案 11 :(得分:0)

以上提到的解决方案均无效。它适用于Spring Boot版本2.1.0.RELEASE,但是当我使用Spring Boot版本2.3.0.RELEASE创建项目时,我开始获取
文档中没有引用没有语法约束(dtd或xml模式)。

我通过更新Eclipse版本(也更新了Maven版本)来修复它。就我而言,我使用的是Red Hat Developer Studio, 菜单->帮助->检查更新,它将扫描并打开包含可用更新的更新窗口。 检查与Eclipse版本相关的更新,并<下一步>单击下一步->下一步->接受条款->完成

答案 12 :(得分:0)

编辑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">

答案 13 :(得分:0)

对我来说,当我剪切它时(ctrl a + ctrl - X)再次保存(ctrl-s)它就像一个魅力!警告&#34;没有为文档检测到语法约束(DTD或XML模式)&#34;好消失了!!

答案 14 :(得分:0)

对我有用的是右键单击树中的xml文件(通常在eclipse的左侧)并单击验证。从那以后,警告再也没有回来。

答案 15 :(得分:0)

我昨晚遇到了这个问题(使用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> 

就在第一行的下方,它解决了这个问题。

答案 16 :(得分:0)

可能是因为您的代理设置。 请参阅thisthis。您可以尝试通过URL将javadoc附加到没有它的库。如果它在您的浏览器中没有问题,但在编辑器中没有问题,那么这就是连接问题。我通过向管理员询问代理设置来解决同样的问题。虽然所有其他应用程序都可以工作,但eclipse没有,所以我必须“手动”输入配置。 如果开发人员添加了一个“检查连接”按钮,那就太好了......

答案 17 :(得分:0)

我发现对我有用的是完全删除schemaLocation属性,然后右键单击大纲视图并转到编辑命名空间,然后将模式位置提示添加到结果对话框中。