如何修复错误:文档中根元素之后的标记必须格式正确
Posted
技术标签:
【中文标题】如何修复错误:文档中根元素之后的标记必须格式正确【英文标题】:How to fix error: The markup in the document following the root element must be well-formed 【发布时间】:2018-03-03 11:40:23 【问题描述】:我把我的代码放在 XML 验证网站上,它给了我这个错误:
第 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>
【问题讨论】:
【参考方案1】:这也可能是因为此文件中的空格错误
【讨论】:
【参考方案2】:一般情况
文档中根元素之后的标记必须格式正确。
此错误表明您的 XML 在根元素之后有标记。 为了成为well-formed,XML must have exactly one root element,并且在单个根元素之后不能有进一步的标记。
一个根元素示例(GOOD)
<r>
<a/>
<b/>
<c/>
</r>
此错误的最常见来源是:
包括杂散或额外关闭标签 (BAD):
<r>
<a/>
<b/>
<c/>
</r>
</r> <!-- shouldn't be here -->
故意拥有多个根元素(不好):
<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>
解析的 XML 与您想象的不同(不好):
在提供给解析之前立即记录 XML 失败以确保解析器的 XML 看到的与您认为它看到的 XML 相同。常见的 这里的错误包括:
正在传递给 解析器与您认为的不同。 XML 的缓冲区变脏。确保它已经 在添加 XML 之前清除。 管道中前一阶段的早期程序 在产生的解析之前更改 XML 此错误消息。您的特殊问题
在您的特定情况下,您的 XML 似乎有多个根元素,因为 xsl:stylesheet
元素过早关闭(上面的情况 #3)。
改变
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/>
到
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
解决您的直接问题,并添加一个结束标记,
</xsl:stylesheet>
如果您的真实文档中尚不存在。
【讨论】:
复制一下,KJH,我把结束标签放在第 18 行左右。感谢您的及时回复。 哈哈,我自欺欺人了。我会接受上述答案。题;我通过 XML Validation 站点运行了整个过程,没有收到任何错误。我将它加载到我的学校网络服务器上,以便在 Chrome 中呈现页面,这样我就可以在本周将其提交给我的家庭作业。 Chome 在第 8 行也给了我一个错误;此页面包含以下错误:第 8 行第 3 列错误:文档末尾的额外内容。文档末尾的额外内容是指该特定行还是整个文档的结尾? @Mereinid:请阅读Well-formed vs Valid XML 并理解格式正确和有效都不意味着 XSLT 的正确性。另见Running XSLT in a Web Browser。除了这个答案和这两个答案之外,如果您仍然遇到问题,您将不得不发布另一个问题。评论并不意味着新问题 - 只是澄清。谢谢。 非常详细的用例,感谢@kjhughes。我可能会加上我的 2 美分,有时你可能有一些格式良好的 looking XML,在解析时给你与 OP 相同的错误。一个可能的原因是 XML 可能包含不可见字符,例如但不限于ZERO WIDTH SPACE
(U+200B) 或 ZERO WIDTH NO BREAK SPACE
(U+FEFF)。 This thread 提供了一个发现和删除它们的技巧。以上是关于如何修复错误:文档中根元素之后的标记必须格式正确的主要内容,如果未能解决你的问题,请参考以下文章
解决:xml中出现“文档中根元素后面的标记必须格式正确。”的错误
PHP/SOAP/XML 文档中根元素之前的标记必须格式正确