web-dev-qa-db-fra.com

Comment corriger l'erreur: le balisage dans le document suivant l'élément racine doit être bien formé

J'ai mis mon code sur le site de validation XML et cela me donne cette erreur:

Ligne 8: 4 Le balisage dans le document suivant l'élément racine doit être bien formé.

La ligne qui rencontre un problème est la <xsl:output method = "html" doctype-system = "about:legacy-compat"/>, ligne.

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>
7
Mereinid

Cas général

Le balisage dans le document suivant l'élément racine doit être bien formé.

Cette erreur indique que votre XML a un balisage suivant l'élément racine. Pour être bien formé , XML doit avoir exactement un élément racine , et il ne peut plus y avoir de balisage suivant l'élément racine unique.

Un exemple d'élément racine (BON)

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

Les sources les plus courantes de cette erreur sont:

  1. Y compris les balises parasites ou extra fermées (BAD):

    <r>
      <a/>
      <b/>
      <c/>
    </r>
    </r>  <!-- shouldn't be here -->
    
  2. Avoir intentionnellement plusieurs éléments racine (BAD):

    <a/>
    <b/>  <!-- second root element shouldn't be here -->
    <c/>  <!-- third root element shouldn't be here -->
    
  3. Avoir involontairement plusieurs éléments racine (BAD):

    <r/>  <!-- shouldn't be self-closing -->
      <a/>
      <b/>
      <c/>
    </r>
    
  4. Analyse XML différente de celle que vous pensez (BAD):

    Enregistrez le XML immédiatement avant de fournir à l'analyse qui échoue afin de vous assurer que le XML que l'analyseur voit est le même que le XML que vous pensez qu'il voit. Les erreurs courantes ici incluent:

    • Le nom de fichier du document XML transmis à l'analyseur diffère de ce que vous pensez qu'il est.
    • Le tampon du XML étant sale. Assurez-vous qu'il a été effacé avant d'ajouter votre XML.
    • Un programme antérieur d'une étape antérieure de votre pipeline modifiant le XML avant l'analyse qui génère ce message d'erreur.

Votre problème particulier

Dans votre cas particulier, votre XML semble avoir plusieurs éléments racine car l'élément xsl:stylesheet Est fermé prématurément (cas # 3 ci-dessus).

Changement

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

à

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

pour résoudre votre problème immédiat et ajouter une balise de fermeture,

</xsl:stylesheet>

s'il n'en existe pas déjà dans votre document réel.

26
kjhughes