How to fix error: The markup in the document following the root element must be well-formed

本小妞迷上赌 提交于 2019-11-26 00:18:31

问题


I put my code in the XML validation website and it gives me this error:

Line 8: 4 The markup in the document following the root element must be well-formed.

The line that is having an issue is the <xsl:output method = \"html\" doctype-system = \"about:legacy-compat\"/>, line.

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:


General case

The markup in the document following the root element must be well-formed.

This error indicates that your XML has markup following the root element. In order to be well-formed, XML must have exactly one root element, and there can be no further markup following the single root element.

One root element example (GOOD)

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

The most common sources for this error are:

  1. Including stray or extra close tags (BAD):

    <r>
      <a/>
      <b/>
      <c/>
    </r>
    </r>  <!-- shouldn't be here -->
    
  2. Intentionally having multiple root elements (BAD):

    <a/>
    <b/>  <!-- second root element shouldn't be here -->
    <c/>  <!-- third root element shouldn't be here -->
    
  3. Unintentionally having multiple root elements (BAD):

    <r/>  <!-- shouldn't be self-closing -->
      <a/>
      <b/>
      <c/>
    </r>
    
  4. Parsing different XML than you think (BAD):

    Log the XML immediately before providing to the parse that's failing in order to make sure that the XML that the parser is seeing is the same as the XML you think it's seeing. Common errors here include:

    • The filename of the XML document being passed to the parser differs from what you believe it is.
    • The buffer of the XML being dirty. Make sure it's been cleared prior to adding your XML.
    • An earlier program from a prior stage in your pipeline changing the XML prior to the parsing that's yielding this error message.

Your particular problem

In your particular case, your XML appears to have multiple root elements because the xsl:stylesheet element is closed prematurely (case #3 above).

Change

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

to

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

to fix your immediate problem, and add a closing tag,

</xsl:stylesheet>

if one does not already exist in your real document.



来源:https://stackoverflow.com/questions/46355454/how-to-fix-error-the-markup-in-the-document-following-the-root-element-must-be

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!