2011-01-28 189 views
53

的Eclipse 3.5.2抛出一个XML模式的警告消息:如何解决Eclipse验证错误“检测到文档没有语法约束”?

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

+0

hm,我仍然无法在我安装的Galileo(3.5)版本上重现警告。对不起:( – 2011-01-28 21:33:55

+0

使用Helios发行版,我把你的xml粘贴到一个新文件NewFile.xml中,看到这个警告信息;然后我重命名了文件(任意名称)并且警告消失了,很奇怪,但是很容易尝试... – kem 2011-01-28 21:35:31

+1

可能是你需要一个代理连接到互联网? – biziclop 2011-01-28 21:56:58

回答

39

不知道你是否满意地解决了这个问题,但是我今天在Eclipse 3.6中使用了一些Spring配置文件时遇到了这篇文章。无论如何我都无法在Eclipse的Problems视图中看到错误,直到我右键单击该问题并删除它

我想它会回来,如果我重新验证,并有实际存在的问题,迄今为止它没有。事情是我有一个几乎完全相同的Spring配置文件,没有显示错误。

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

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"> 
+0

我仍然认为,互联网代理理论是最有可能的,您确定Eclipse能够执行远程HTTP请求吗?事实上,您可以从您的Web浏览器或命令行执行此操作并不能证明Eclipse可以它。 (验证器可能使用1.4 xsd的硬连接副本。) – 2011-01-29 01:02:06

+2

我可以运行“检查更新”的罚款。如果还有另一种方法来验证eclipse是否具有网络访问权限,请发布 – cmcginty 2011-01-29 02:27:37

0

我发现了什么工作对我来说是删除schemaLocation属性在大纲视图,并转到编辑命名空间完全然后右键单击,然后添加架构位置提示进入结果对话框。

0

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

3

在Eclipse中避免“为文件检测没有语法限制(DTD或XML模式)。” 我用它来添加xsd模式文件到

下的xml目录

“Window \ preferences \ 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

作为位置:/家庭/ my_user/XSD/my_xsd。XSD

由于密钥类型:命名空间名称

由于键:http://mycompany.com/hr/schemas


关闭并重新打开XML文件,并做了一些改动违反了架构,你应该得到通知。

30

这是另一种方式来关闭警告对于故意缺乏DTP或XSD XML文档:在是导航菜单,

  1. 进入菜单首,
  2. 即的左框架对话框,选择:XML> XML文件>验证
  3. 在配置区域,即对话框的右边框中,选择:验证文件>没有指定语法>忽略(这是一个选择框)默认设置是警告)
1

下面是这个问题的工作方案:

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

第2步:进入“库”,并删除项目的“JRE系统库”

第3步:点击'添加库' - >'JRE系统库' - >选择'工作区默认JRE'

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

步骤4:刷新并清理项目

尤里卡!它的工作:)

53

在任何有问题的文件的顶部把这个工作对我来说:

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

我不是专家,但学习者。我意外地发现了一个简单而愚蠢的方式来解决问题。你只需要做的是:

ctrl + shift + F(这是一个快捷方式格式化Eclipse中的文件),如果不解决,那么问题按TAB键在启动这个特殊的

线
?xml version="1.0" encoding="UTF-8"?没有其他地方(我不知道为什么,但这个工程。如果有人在这里知道为什么我会很高兴地知道)

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

警告将消失,至少对我而言,你可能会为自己尝试......

0

解决方案对于Eclipse:

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

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

你可以写DOCTYPE什么,但基本上应该是清单,活动等从我的理解

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> 

正好在第一行下面,它解决了这个问题。

0

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

5

如果此警告显示,则表示XML验证功能(与XML实例编辑器不同)不知道要应用什么DTD或XSD。这当然也意味着它并没有真正检查XML实例是否符合任何模式。

因此,这是一个有用的警告,它不应该被关闭(如果您使用验证菜单功能,并期望它做些什么)。

您可以使用偏好设定,让您的模式称为:

  • 打开首选项/ XML目录/用户指定的条目
  • 单击Add ...
  • 输入XSD文件中的“位置使用“
  • 选择密钥类型”模式位置“(如果您有xsi:schemaLocation)
  • 输入与文件内容匹配的URL(位置的第二部分)作为”密钥“
  • 按OK
  • 转至问题查看和删除的验证警告
  • 右键单击XML文件,并选择“验证”再次

一些公共idenditfiers和模式位置已经包含在“插件指定的条目“(特别是如果你安装了WSTP)。对于这些名称空间,您不会收到警告(因为它使用系统提供的副本进行验证)。

0

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

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

1

添加到您的xml文件的最开始:

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

变化RelativeLayout的您定义的根布局 ,然后找到在左侧的XML文件,布局文件夹,右键单击并选择验证。

0

对我来说,当我将它剪切(ctrl + ctrl-X)并将其保存回来(ctrl-s)时它就像一个魅力!警告“没有为文档检测到语法约束(DTD或XML模式)”已经消失了!