我有这个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?,允许 multiple-variation ?,阶级结构? getter-setter ? allowed-file-extensions吗?阈值- 类?模板体内)”。


当前回答

真正的解决方案:

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

在XML标记<?XML版本="1.0"编码="utf-8"?>

你可以为doctype写任何东西,但基本上它应该是manifest, activity等,从我的理解

其他回答

这在Eclipse 3.7.1中很适用:

转到首选项窗口,然后XML -> XML文件->验证。

然后在右侧首选项面板的“验证文件”部分中,在“不指定语法”首选项的下拉框中选择“忽略”。您可能需要关闭该文件,然后重新打开它以消除警告。

一种新的干净的方法可能是这样写xml:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rootElement>

<rootElement>
 ....
</rootElement>

以上内容适用于Eclipse Juno+

真正的解决方案:

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

在XML标记<?XML版本="1.0"编码="utf-8"?>

你可以为doctype写任何东西,但基本上它应该是manifest, activity等,从我的理解

答:

下面每个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.
  >

简单的解释:

一个非常基本的DTD看起来就像这里的第二行:

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

详细解释:

dtd用于建立商定的数据格式并验证此类数据的接收。它们定义了XML文档的结构,包括:

法律要素清单 特殊字符 字符串 还有更多

E.g.

<!DOCTYPE nameOfYourRootElement
[
<!ELEMENT nameOfYourRootElement (nameOfChildElement1,nameOfChildElement2)>
<!ELEMENT nameOfChildElement1 (#PCDATA)>
<!ELEMENT nameOfChildElement2 (#PCDATA)>
<!ENTITY nbsp "&#xA0;"> 
<!ENTITY author "Your Author Name">
]>

Meaning of above lines... 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 &nbsp; to &#xA0; when document is parsed by XML parser Line 7) Expand instances of &author; to Your Author Name when document is parsed by XML parser Line 8) End of definitions

试着理解警告信息中给出的建议,这有时是有帮助的。

我也有同样的问题,在做了一些研究后,我找到了解决方案,并在开头添加了下面的一行

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

这就引出了我的另一个问题。 我通过阅读建议解决了这个问题,这又变成了另一个问题,这个问题已经解决了,理解了最初的原因,第一个链接被打破了(没有找到)。下面是一步一步的图片,解释了已经做了什么来完全解决这个问题。