如何解决错误:在根元素之后的文档中的标记必须是格式良好的

我把我的代码放在XMLvalidation网站,它给了我这个错误:

第8行:4根元素之后的文档中的标记必须是格式正确的。

有问题的行是<xsl:output method = "html" doctype-system = "about:legacy-compat"/> ,行。

XML

 <?xml version="1.0"?> <!-- Fig. 15.21: sorting.xsl --> <xsl:stylesheet version = "1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/> <!-- write XML declaration and DOCTYPE DTD information --> *<xsl:output method = "html" doctype-system = "about:legacy-compat" />* <!-- match document root --> <xsl:template match="/"> -<html> <xsl:apply-templates/> </html> </xsl:template> 

一般情况

跟在根元素之后的文档中的标记必须是格式良好的。

这个错误表明你的XML在根元素后面有标记。 为了格式良好 ,XML 必须只有一个根元素 ,并且在单个根元素之后不能再有标记。

一个根元素示例(GOOD)

 <r> <a/> <b/> <c/> </r> 

这个错误最常见的来源是:

  1. 包括stream浪或额外closures标签(BAD):

     <r> <a/> <b/> <c/> </r> </r> <!-- shouldn't be here --> 
  2. 故意有多个根元素(BAD):

     <a/> <b/> <!-- second root element shouldn't be here --> <c/> <!-- third root element shouldn't be here --> 
  3. 无意中有多个根元素(BAD):

     <r/> <!-- shouldn't be self-closing --> <a/> <b/> <c/> </r> 
  4. parsing不同的XML(BAD):

    在提供给parsing失败之前立即loggingXML,以确保parsing器看到的XML与您认为它所看到的XML相同。 这里常见的错误包括:

    • 传递给parsing器的XML文档的文件名与您所信任的不同。
    • XML的缓冲区很脏。 确保在添加XML之前它已被清除。
    • 在stream水线的前一阶段的一个较早的程序在分析之前更改XML,这会产生此错误消息。

你特别的问题

在你的情况下,你的XML似乎有多个根元素,因为xsl:stylesheet元素被提前closures(上面的情况#3 )。

更改

  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/> 

  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

解决您的直接问题,并添加结束标记,

 </xsl:stylesheet> 

如果你的真实文件中不存在的话。