我写了一个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
之间以及?
和>
之间的额外空间。
请注意,您似乎在doctype声明的开头和结尾都有额外的空格。
编辑
好的,我发现你的文件还有两个问题:
<?xml version="1.0" encoding="UTF-8"?>
)开头,在DTD开始时被禁止(因为DTD不是XML文件)。如果第一个错误导致问题,那么很容易修复。但是,第二个错误是在struts开发者方面。我想大多数XML解析器都会忽略它(否则struts团队很久以前就会修复它),但是如果你有一个XML解析会抱怨它,我恐怕你唯一的选择就是切换到另一个。
创建dtd时,它始终包含行
<!DOCTYPE…. [
...
]>
只需删除声明DTD数据的第一行和最后一行,因为只有在XML文件中包含DTD时才会使用这些数据。