完全な XSLT または出力 HTML を表示していませんが、XSLT ドキュメントで出力を HTML に指定していると思われます。
<xsl:output method="html" />
W3C Web サイトによると、次のようになります。
html 出力メソッドは、空の要素の終了タグを出力すべきではありません。HTML 4.0 の場合、空の要素は、area、base、basefont、br、col、frame、hr、img、input、isindex、link、meta、および param です。たとえば、スタイルシートで<br/>
またはとして記述された要素<br></br>
は、 として出力する必要があります<br>
。
あなたの小さなサンプルでは、おそらく次のように出力されるイメージタグを出力しています:
<img id="img1" src="test.html" alt="test">
W3C バリデーターを使用してドキュメントを XHTML として検証している場合、イメージ タグが閉じられていないため失敗します。XHTML ドキュメントの場合、HTML も整形式の XML ドキュメントに準拠する必要があります。
これを解決する方法はいくつかあります。まず、XSLT2.0 を使用している場合は、xhtml の出力方法を指定できます。これにより、タグが閉じられるはずです。
<xsl:output method="xhtml" />
または、XHTML は整形式の XML である必要があるため、xml の出力メソッドを指定することもできます。これでも必要な HTML が出力されますが、整形式の XML になります。
<xsl:output method="xml" />
ただし、W3C バリデーターが検証対象の HTML のバージョンを正確に認識できるように、出力 html の doctype を指定することをお勧めします。例えば:
<xsl:output method="html"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
doctype-system="http://www.w3.org/TR/html4/loose.dtd" />
これを行うと、閉じられていないタグを含む HTML ドキュメントが検証されます。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
<META http-equiv="Content-Type" content="text/html">
<title>Test</title></head>
<body><img id="img1" src="test.html" alt="test"></body>
</html>