1. ホーム
  2. xml

[解決済み] テスト

2022-01-31 03:53:11

質問

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>

解決方法は?

一般的なケース

<ブロッククオート

ルート要素に続く文書内のマークアップは,整形式でなければならない。

このエラーは、あなたのXMLがルート要素の後にマークアップを持っていることを示します。 そのため 整形 は、XML が必要です。 ちょうど1つ ルート要素 そして、単一のルート要素に続くマークアップは存在し得ない。

ルート要素1つの例(GOOD)

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

このエラーの原因として最も多いのは

  1. 迷子タグや余分な閉じタグが含まれている(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. 思っているのと違うXMLをパースする(BAD)。

    パースに提供する直前のXMLをログに記録してください。 パーサーの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>

を、実際のドキュメントにまだ存在しない場合。