fas*_*ava 191 xml eclipse validation dtd
我有这样的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>
Run Code Online (Sandbox Code Playgroud)
编辑:我更改了xml,我现在收到此错误:
元素类型的内容"模板"必须描述?,变异场匹配"(,变化?,允许 - 多变化?,类图案?,消气部件设置器?,允许文件的扩展?,数须─班?,模板型)".
Sab*_*san 383
在我的情况下,我通过简单地添加标签<!DOCTYPE xml>后解决了这个恼人的警告<?xml ... >.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
Run Code Online (Sandbox Code Playgroud)
Mar*_*ein 162
这在Eclipse 3.7.1中对我有用:转到Preferences窗口,然后是XML - > XML Files - > Validation.然后在右侧首选项面板的"验证文件"部分中,在下拉框中选择"无语法指定"首选项.您可能需要关闭该文件,然后重新打开它以使警告消失.
(我知道这个问题已经过时了,但这是我在搜索警告时找到的第一个问题,所以我在这里为其他搜索者发布答案.)
Pup*_*Pup 31
回答:
以下是您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.
>
Run Code Online (Sandbox Code Playgroud)
简单说明:
一个非常基本的DTD看起来像这里的第二行:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE nameOfYourRootElement>
<nameOfYourRootElement>
</nameOfYourRootElement>
Run Code Online (Sandbox Code Playgroud)
详细说明:
DTD用于建立商定的数据格式并验证这些数据的接收.它们定义XML文档的结构,包括:
例如
<!DOCTYPE nameOfYourRootElement
[
<!ELEMENT nameOfYourRootElement (nameOfChildElement1,nameOfChildElement2)>
<!ELEMENT nameOfChildElement1 (#PCDATA)>
<!ELEMENT nameOfChildElement2 (#PCDATA)>
<!ENTITY nbsp " ">
<!ENTITY author "Your Author Name">
]>
Run Code Online (Sandbox Code Playgroud)
上述行的含义...
第1行)根元素定义为"nameOfYourRootElement"
第2行)元素定义的开始
第3行)根元素子节点定义为"nameOfYourRootElement1"和"nameOfYourRootElement2"
第4行子元素,定义为数据型#PCDATA
线5)子元素,其被定义为数据类型#PCDATA
6行)扩大的情况下 ,以 当文件由XML解析器解析
第7行)扩大的情况下&author;,以Your Author Name当文件由XML解析器解析
的定义第8行)结束
Ami*_*r.F 20
真正的解决方案:
添加<!DOCTYPE something>到每个有问题的XML的开头,
在xml标签之后 <?xml version="1.0" encoding="utf-8"?>
你可以为doctype写任何东西,但基本上它应该是我所理解的清单,活动等
小智 11
您是否尝试将架构添加到xml目录中?
在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>
Run Code Online (Sandbox Code Playgroud)
从这个xml我生成并保存了一个xsd:/home/my_user/xsd/my_xsd.xsd
位置:/home/my_user/xsd/my_xsd.xsd
作为键类型:命名空间名称
关键:http://mycompany.com/hr/schemas
关闭并重新打开xml文件并进行一些更改以违反架构,应通知您
小智 9
添加DOCTYPE标签......
在这种情况下:
<!DOCTYPE xml>
Run Code Online (Sandbox Code Playgroud)
添加后:
<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)
所以:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
Run Code Online (Sandbox Code Playgroud)
尝试理解警告消息中给出的建议,它有时会有所帮助。
我也遇到了同样的问题,在做了一些研究后,我找到了解决方案并通过在开头添加以下行来修复
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
Run Code Online (Sandbox Code Playgroud)
在我的情况下,这导致了其他一些问题。我通过阅读建议解决了这个问题,这又变成了另一个问题,这个问题已经解决了,理解了最初的原因,第一个链接被破坏了(没有找到)。以下是分步图像,解释了为完全解决问题已采取的措施。
小智 6
对我来说,这是在Windows上运行eclipse的字符编码和unix文件模式的问题:
只需标记完整的代码,剪切并粘贴(简称:CtrlA-CtrlX-CtrlV),一切都很好 - 不再"没有语法限制......"警告
一种新的干净方式可能是像这样编写你的xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rootElement>
<rootElement>
....
</rootElement>
Run Code Online (Sandbox Code Playgroud)
以上工作在Eclipse Juno +中
我真的不能说为什么你会收到“无语法约束...”警告,但我可以通过完全删除 DOCTYPE 声明在 Eclipse 中引发它。当我放回声明并再次验证时,我收到以下错误消息:
元素类型“template”的内容必须匹配“(description+,variation?,variation-field?,allow-multiple-variation?,class-pattern?,getter-setter?,allowed-file-extensions?,template-body+) 。
我相信这是正确的(不允许“number-required-classes”元素)。
| 归档时间: |
|
| 查看次数: |
233522 次 |
| 最近记录: |