如何解决错误:在根元素之后的文档中的标记必须是格式良好的
我把我的代码放在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>
这个错误最常见的来源是:
-
包括stream浪或额外closures标签(BAD):
<r> <a/> <b/> <c/> </r> </r> <!-- shouldn't be here -->
-
故意有多个根元素(BAD):
<a/> <b/> <!-- second root element shouldn't be here --> <c/> <!-- third root element shouldn't be here -->
-
无意中有多个根元素(BAD):
<r/> <!-- shouldn't be self-closing --> <a/> <b/> <c/> </r>
-
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>
如果你的真实文件中不存在的话。