我的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”的结束标记,但OMITTAG NO为 指定
... artini.com / user_uploads / moviereview / 420_265 / 7876579_1342029293_79940.jpeg“&GT;
请帮帮我。
答案 0 :(得分:0)
虽然您没有显示完整的XSLT或输出HTML,但我怀疑您的XSLT文档中已将输出指定为HTML
<xsl:output method="html" />
根据W3C网站:
html输出方法不应输出空的结束标记 元素。对于HTML 4.0,空元素是area,base,basefont, br,col,框架,hr,img,输入,isindex,链接,元和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" />
但是,最好指定输出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>