未检测到文档的语法约束(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>
编辑:我更改了 xml,现在收到此错误:
元素类型“template”的内容必须匹配“(description,variation?,variation-field?,allow- 多重变体?,类模式?,getter-setter?,允许的文件扩展名?,需要数量- 类?,模板主体)”。
I have this dtd : http://fast-code.sourceforge.net/template.dtd
But when I include in an xml I get the warning :
No grammar constraints (DTD or XML schema) detected for the document.
The xml is :
<?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 : I changed the xml, I am getting this error now:
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)".
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(18)
我通过在
标记后面指定
而不是指定其他内容(例如
模板
在你的情况下)。I got rid of this annoying warning by specifying
<!DOCTYPE xml>
after the<?xml ... >
tag instead of specifying something else (liketemplates
in your case).这在 Eclipse 3.7.1 中对我有用:
转到 Preferences 窗口,然后选择 XML -> XML 文件 ->验证。
然后在右侧首选项面板的“验证文件”部分中,在“未指定语法”首选项的下拉框中选择“忽略”。您可能需要关闭该文件,然后重新打开它才能使警告消失。
This worked for me in Eclipse 3.7.1:
Go to the Preferences window, then XML -> XML Files -> Validation.
Then in the Validating files section of the preferences panel on the right, choose Ignore in the drop down box for the "No grammar specified" preference. You may need to close the file and then reopen it to make the warning go away.
答案:
对下面的 DTD 的每部分进行评论。请参阅官方规范了解更多信息。
简单说明:
极其基本的 DTD 将类似于此处的第二行:
详细说明:
DTD 用于建立商定的数据格式并验证收到此类数据。它们定义了 XML 文档的结构,包括:
例如
:上面几行...
实例扩展为
第 1 行)根元素定义为“nameOfYourRootElement”
第 2 行)元素定义的开始
第 3 行)根元素子级定义为“nameOfYourRootElement1”和“nameOfYourRootElement2”
第4行)子元素,定义为数据类型
#PCDATA
第5行)子元素,定义为数据类型
#PCDATA
第 6 行) 当 XML 解析器解析文档时,将
第 7 行)当 XML 解析器解析文档时,将
&author;
实例扩展为Your Author Name
第 8 行) 定义结束
Answer:
Comments on each piece of your DTD below. Refer to official spec for more info.
Simple Explanation:
An extremely basic DTD will look like the second line here:
Detailed Explanation:
DTDs serve to establish agreed upon data formats and validate the receipt of such data. They define the structure of an XML document, including:
E.g.
Meaning of above lines...
to
when document is parsed by XML parser
Line 1) Root element defined as "nameOfYourRootElement"
Line 2) Start of element definitions
Line 3) Root element children defined as "nameOfYourRootElement1" and "nameOfYourRootElement2"
Line 4) Child element, which is defined as data type
#PCDATA
Line 5) Child element, which is defined as data type
#PCDATA
Line 6) Expand instances of
Line 7) Expand instances of
&author;
toYour Author Name
when document is parsed by XML parserLine 8) End of definitions
真正的解决方案:
将
添加到每个有问题的 XML 的开头,
位于 xml 标记
你可以为 doctype 编写任何内容,但根据我的理解,基本上它应该是清单、活动等
The Real Solution:
add
<!DOCTYPE something>
to the begining of each problematic XML,after the xml tag
<?xml version="1.0" encoding="utf-8"?>
you can write anything for doctype, but basically it's supposed to be manifest, activity, etc. from what I understand
您是否尝试过将架构添加到 xml 目录?
在 Eclipse 中避免“检测到文档没有语法约束(dtd 或 xml 模式)”。我用来将 xsd 架构文件添加到
“Window \preferences\xml\xmlcatalog\Userspecifiedentries”下的 xml 目录中。
单击右侧的“添加”按钮。
示例:
根据此 xml,我在以下位置生成并保存了一个 xsd:/home/my_user/xsd/my_xsd.xsd
作为位置:/home/my_user/xsd/my_xsd.xsd
作为密钥类型:命名空间名称
作为密钥:http://mycompany.com/hr/schemas
关闭并重新打开 xml 文件并进行一些更改以违反架构,您应通知
Have you tried to add a schema to xml catalog?
in eclipse to avoid the "no grammar constraints (dtd or xml schema) detected for the document." i use to add an xsd schema file to the xml catalog under
"Window \ preferences \ xml \ xml catalog \ User specified entries".
Click "Add" button on the right.
Example:
From this xml i have generated and saved an xsd under: /home/my_user/xsd/my_xsd.xsd
As Location: /home/my_user/xsd/my_xsd.xsd
As key type: Namespace name
As key: http://mycompany.com/hr/schemas
Close and reopen the xml file and do some changes to violate the schema, you should be notified
添加 DOCTYPE 标签...
在本例中:
添加后:
所以:
Add DOCTYPE tag ...
In this case:
Add after:
So:
尝试理解警告消息中给出的建议,有时会有帮助。
我也遇到了同样的问题,经过一些研究后,我找到了解决方案并通过在开头添加以下行来修复,
这导致了我的案例中的一些其他问题。
我通过阅读建议解决了这个问题,这又变成了另一个问题,该问题已通过理解原始原因得到解决,即第一个链接已损坏(未找到)。下面是分步图像,解释了为彻底解决该问题而采取的措施。
Try understanding the suggestion given in warning messages, it's helps sometime.
I also had the same issues, after doing some research i found the solution and fixed by adding the below line at the beginning
which lead to some other issue in my case.
Which i solved by reading the suggestions, which again turned into the another problem, which has been solved understanding the original cause, that the first link was broken (not found). Below are the step by step images which explains what has been done to resolve the issue completely.
一种新的干净方法可能是像这样编写 xml:
以上工作在 Eclipse Juno+ 中
A new clean way might be to write your xml like so:
The above works in Eclipse Juno+
对我来说,这是一个在Windows上运行eclipse的字符编码和unix文件模式的问题:
只需标记完整的代码,将其剪切并粘贴回来(简而言之:CtrlA -CtrlX-CtrlV),一切都很好 - 不再有“无语法限制...”警告
For me it was a Problem with character encoding and unix filemode running eclipse on Windows:
Just marked the complete code, cutted and pasted it back (in short: CtrlA-CtrlX-CtrlV) and everything was fine - no more "No grammar constraints..." warnings
我真的不能说为什么你会收到“无语法约束...”警告,但我可以通过完全删除 DOCTYPE 声明在 Eclipse 中引发它。当我放回声明并再次验证时,我收到以下错误消息:
这是正确的,我相信(不允许使用“number-required-classes”元素)。
I can't really say why you get the "No grammar constraints..." warning, but I can provoke it in Eclipse by completely removing the DOCTYPE declaration. When I put the declaration back and validate again, I get this error message:
And that is correct, I believe (the "number-required-classes" element is not allowed).
我知道这已经很旧了,但我遇到了同样的问题,并在 spring 文档中找到了解决方案,以下 xml 配置已经为我解决了问题。
在我将上面的行按照本论坛主题中的建议放置之前,我有相同的警告消息,并且放置此...
并且它给了我以下警告消息...
所以只需尝试使用我的 xml 配置的建议行。
i know this is old but I'm passing trought the same problem and found the solution in the spring documentation, the following xml configuration has been solved the problem for me.
before I put the line above as sugested in this forum topic , I have the same warning message, and placing this...
and it give me the following warning message...
so just try to use the sugested lines of my xml configuration.
这可能是由于在 eclipse 中关闭了验证。
This may be due to turning off validation in eclipse.
在 Eclipse 3.5.2 中解决了这个问题。两个完全相同的布局,其中一个有警告。关闭所有选项卡,重新打开时警告消失。
Solved this issue in Eclipse 3.5.2. Two completely identical layouts of which one had the warning. Closed down all tabs and when reopening the warning had disappeared.
错误必须消失。
error must be gone.
我在 xsi:noNamespaceSchemaLocation 中使用相对路径来提供本地 xsd 文件(因为我无法在实例 xml 中使用命名空间)。
验证有效并且警告已修复(未忽略)。
https://www.w3schools.com/xml/schema_example.asp
I used a relative path in the xsi:noNamespaceSchemaLocation to provide the local xsd file (because I could not use a namespace in the instance xml).
Validation works and the warning is fixed (not ignored).
https://www.w3schools.com/xml/schema_example.asp
我在 eclipse 中使用 web.xml 文件也遇到了同样的问题
它向我展示了“文档中没有引用语法约束”,
但可以通过添加标签来解决
在 xml 标记之后,即
I too had the same problem in eclipse using web.xml file
it showed me this " no grammar constraints referenced in the document "
but it can be resolved by adding tag
after the xml tag i.e.
<?xml version = "1.0" encoding = "UTF-8"?>
以下是此问题的有效解决方案:
步骤 1:右键单击项目并转到属性
步骤 2:转到“库”并删除项目的“JRE 系统库”
步骤 3:单击“添加库”-->' JRE系统库'-->选择'工作区默认JRE'
步骤3:转到'订购和导出'并标记新添加的'JRE系统库'
步骤4:刷新并清理项目
尤里卡!它正在工作:)
Here's the working solution for this problem:
Step 1: Right click on project and go to properties
Step 2: Go to 'libraries' and remove the project's ' JRE system library'
Step 3: Click on 'Add library'-->'JRE System Library' -->select 'Workspace default JRE'
Step 3: Go to 'Order and Export' and mark the newly added ' JRE system library'
Step 4: Refresh and Clean the project
Eureka! It's working :)
我发现解决方案非常非常简单,我认为您应该在修改首选项之前尝试一下。就我而言,我在一个字符串文件中遇到了这个问题,该文件具有基本标签“资源”...我所做的就是从顶部和底部删除标签,清理项目,保存文件并重新插入标签。
此后问题就消失了并且从未给我任何警告。
这听起来可能很简单,但事实上,有时最简单的事情就能解决问题。干杯
What I found to be the solution was something very very simple that I think you should try before tinkering with the preferences. In my case I had this problem in a strings file that had as a base tag "resources" ...all I did was delete the tag from the top and the bottom, clean the project, save the file and reinsert the tag.
The problem has since disappeared and never gave me any warnings.
It may sound to simple to be true but hey, sometimes it's the simplest things that solve the problems. Cheers