文档类型声明包含或指向的标记声明必须格式正确

时间:2013-03-23 14:49:08

标签: xml struts2 xml-dtd

我已经写了一个XML,但是在第一行的XML中我得到了一个错误

  

文档类型包含或指向的标记声明   声明必须是格式良好的

下面是XML(有角括号之后的空格是有意的)

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

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apche.org/dtds/struts-2.0.dtd">  
<struts>

    <package name="default" extends="struts-default">       
        <action name="getTutorial" class="org.koushik.javabrains.action.TutorialAction">                
            <result name="success">/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>

    </package>

</struts>

第一行(<?xml version="1.0" encoding="UTF-8"?>)抛出错误。

请让我知道为什么我会遇到这个问题。

2 个答案:

答案 0 :(得分:0)

我想这是因为<?xml之间以及?>之间的额外空格。

请注意,您似乎在doctype声明的开头和结尾都有额外的空格。

修改

好的,我发现你的文件有两个问题:

  1. 您似乎忘记了DTD uri中apache.org中的“a”。
  2. http://struts.apache.org/dtds/struts-2.0.dtd处可用的DTD以XML开头 声明(<?xml version="1.0" encoding="UTF-8"?>),禁止在 DTD的开头(因为DTD 不是 XML文件)。
  3. 如果第一个错误导致问题,那么很容易修复。但是,第二个错误是在struts开发者方面。我想大多数XML解析器都会忽略它(否则struts团队很久以前就会修复它),但是如果你有一个XML解析会抱怨它,我恐怕你唯一的选择就是切换到另一个。< / p>

答案 1 :(得分:0)

创建dtd时,它始终包含行

<!DOCTYPE…. [
...
]>  

只需删除声明DTD数据的第一行和最后一行,因为只有在XML文件中包含DTD时才会使用这些数据。