Html xslt中的w3c验证错误

Html xslt中的w3c验证错误,html,xslt,Html,Xslt,我的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文件如下所示:

<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”的结束标记,但忽略了标记号 指定的
…artini.com/user_uploads/moviereview/420_265/7876579_1342029293_79940.jpeg“>


请帮助我。

虽然您没有显示完整的XSLT或输出HTML,但我怀疑您在XSLT文档中指定了输出为HTML

<xsl:output method="html" />

根据该网站:

html输出方法不应为空输出结束标记 元素。对于HTML4.0,空元素是area、base、basefont、, br、col、frame、hr、img、input、isindex、link、meta和param.For 例如,在样式表中写为



的元素 应输出为

在您的小样本中,您将输出一个图像标记,该标记可能输出如下:

<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" />

但是,最好指定输出html的doctype,以便W3C验证器准确地知道它正在验证的html版本。例如:

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

试验

我认为问题不在这段代码中,你能发布完整的XSLT吗?是你验证的XSLT,还是XSLT的输出(即HTML)?@TimC:Am正在验证XSLT的HTML输出。doctype类似于dis:

如果你不能更改文档类型,那么尝试将输出方法更改为“xml”“就像这样
,但我希望结果是html而不是xml。例如:尝试在w3c验证程序上验证www.desimatini.com。您将得到一些错误,如:第508行,第234列:省略了“img”的end标记,但未指定ommittag NO您当前正在将其验证为XHTML,因此HTML也必须是格式良好的XML文档。将输出方法更改为XML仍将输出HTML。或者更改DOCTYPE,如答案中所述,使其验证为HTML而不是XHTML。非常感谢。我已经实现了它,它似乎正在工作。