Html xslt中的w3c验证错误
我的xsl文件如下所示: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>
<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。非常感谢。我已经实现了它,它似乎正在工作。