0

私のxslファイルは次のようなものです:

<img> 
     <xsl:attribute name="id">poster_<xsl:value-of select="position()"/></xsl:attribute>      
     <xsl:attribute name="alt"><xsl:value-of select="movie-title"/></xsl:attribute>     
     <xsl:attribute name="src"><xsl:value-of select="../poster-verylarge-image"/><xsl:value-of    select="movie-photo-name"/></xsl:attribute> 
</img>

そして、私は次のようにW3Cエラーを受け取ります:

行508、列234:「img」の終了タグは省略されていますが、OMITTAGNOが指定されています
…artini.com/ user_uploads / moviereview / 420_265 / 7876579_1342029293_79940.jpeg ">

私を助けてください。

4

1 に答える 1

0

完全な 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>
于 2012-09-05T08:00:50.993 に答える