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

问题描述 投票:3回答:2

我写了一个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"?>)抛出错误。

请告诉我为什么我会遇到这个问题。

xml struts2 xml-dtd
2个回答
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文件)。

如果第一个错误导致问题,那么很容易修复。但是,第二个错误是在struts开发者方面。我想大多数XML解析器都会忽略它(否则struts团队很久以前就会修复它),但是如果你有一个XML解析会抱怨它,我恐怕你唯一的选择就是切换到另一个。


0
投票

创建dtd时,它始终包含行

<!DOCTYPE…. [
...
]>  

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

© www.soinside.com 2019 - 2024. All rights reserved.