我有这样的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,我现在收到此错误:
元素类型的内容"模板"必须描述?,变异场匹配"(,变化?,允许 - 多变化?,类图案?,消气部件设置器?,允许文件的扩展?,数须─班?,模板型)".
我一直在使用log4j已经有一段时间了,我通常在log4j.xml的顶部使用它(可能就像许多其他人一样,根据谷歌这是这样做的方式):
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
Run Code Online (Sandbox Code Playgroud)
显然这是有效的,但Eclipse并没有为编写XML提供其上下文相关的帮助.此外,它总是显示一个警告,它没有找到log4j.dtd.现在我很好奇如何解决这个问题.
我尝试了一些事情,这些工作:
<!DOCTYPE log4j:configuration SYSTEM "jar:file:/path/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd">
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
Run Code Online (Sandbox Code Playgroud)
从上面可以看出我们正在使用Maven.因此,我试过这个,但它失败了:
<!DOCTYPE log4j:configuration SYSTEM "jar:file:${M2_REPO}/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd">
Run Code Online (Sandbox Code Playgroud)
Eclipse通常知道如何处理类路径变量,但为什么这不起作用?我知道引用在运行时不起作用,但也不是简单的log4j.dtd(如果我没有错),所以这不应该是一个问题.
任何人都可以对此有所了解吗?