虽然您没有显示完整的 XSLT 或输出 HTML,但我怀疑在您的 XSLT 文档中您已指定输出为 HTML
<xsl:output method="html" />
根据W3C网站:
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" />
但是,最好指定输出 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>