我收到的XHTML文档有时包含以下代码:
<div align="center" />
我的问题是浏览器(Firefox 38.0.1,Chrome 43.0.2357.65)将此代码显示为开始<DIV>
标记,而不是像我预期的那样将其显示为空div(<DIV></DIV>
)。因此,文件的其余部分完全搞砸了。
是浏览器错误还是XHTML功能?代码看起来完全合法(虽然没有意义,但我不是生产者)并且被XML解析器接受(Perl XML :: LibXML,https://validator.w3.org/check)。
您可以使用以下XHTML代码检查浏览器中的内容(由https://validator.w3.org验证)。最后一个DIV显示为带边框的文本,它不应该是
。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Foo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div style="border: 1px solid black; color: red;">
<div />
<div>Should be red and inside the border.</div>
</div>
<div>Should be outside the border and not red.</div>
</body>
</html>
与XHTML Strict Doctype相同。
答案 0 :(得分:1)
解决方法是,不要这样做!
在HTML中,<div>
标记是开始标记,无论它是否包含/
。 /
被视为错误并被丢弃。
在XHTML中,这将是一个完整的div
,是的。但是,如果XHTML文件以application/xhtml+xml
MIME类型提供,则它们只是XHTML文件
这个文件的内容是什么并不重要;如果文件的MIME类型为text/html
,则就浏览器而言,它是一个HTML文件。
文件扩展名为.xhtml
的普通文件被视为XHTML,.html
被视为HTML。如果您使用的是PHP或ASP.NET等系统,则需要为MIME类型发送相应的HTTP标头,否则它将使用默认值(通常是text / html)。