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

Xml 文档类型声明包含或指向的标记声明必须格式良好,xml,struts2,dtd,Xml,Struts2,Dtd,我已经编写了一个XML,但是在第一行中,我得到了一个错误 文档类型包含或指向的标记声明 声明必须格式良好 下面是XML(有意在角括号后加空格) /success.jsp /error.jsp 第一行()抛出错误 请让我知道我为什么要讨论这个问题。我想这是因为之间有额外的空格 注意,在doctype声明的开始和结束处似乎还有额外的空格 编辑 好的,我发现您的文件还有两个问题: 您似乎忘记了apache.org中DTD uri中的“a” 可用的DTD以XML开头 声明(),在 DTD的开头(因为

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

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

下面是XML(有意在角括号后加空格)


/success.jsp
/error.jsp
第一行(
)抛出错误


请让我知道我为什么要讨论这个问题。

我想这是因为
之间有额外的空格

注意,在doctype声明的开始和结束处似乎还有额外的空格

编辑

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

  • 您似乎忘记了apache.org中DTD uri中的“a”
  • 可用的DTD以XML开头 声明(
    ),在 DTD的开头(因为DTD不是XML文件)

  • 如果第一个错误是导致故障的错误,则很容易修复。但是,第二个错误在struts开发人员方面。我想大多数XML解析器都会忽略它(否则struts团队很早以前就会修复它),但是如果您有一个XML解析器确实对此表示不满,恐怕您唯一的选择就是切换到另一个解析。

    当您创建dtd时,它总是包含行

    <!DOCTYPE…. [
    ...
    ]>  
    
    
    

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

    这是因为我无法将XML发布到堆栈溢出上,只是为了将我的问题发布到这里,我故意留出了空间,我在问题中也提到了这一点。谢谢Etienne调查此事好的。我编辑了这个问题以删除那些空格。你应该在代码块的每一行开头加上四个空格,这样StackOverflow就知道它是代码并正确地显示它。非常感谢,非常感谢。你的问题很简单:将
    apche.org
    更改为
    apache.org
    。你不能说是什么程序给了你这个错误。错误似乎来自Xerces,如果引用的DTD无效,Xerces确实会抛出此错误。在浏览器中键入该URL,您会看到返回的是一些HTML,而不是DTD,因此Xerces对此的抱怨是正确的。纠正错误,你就万事大吉了。
    <!DOCTYPE…. [
    ...
    ]>