我经营一个论坛,其网页为XHTML + MathML + SVG;在全:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd">
使用MathPlayer插件,Internet Explorer用户可以使用此站点。但是,有时有人正在使用IE中的论坛,但无法安装MathPlayer(也许他们在某个地方的公共计算机上)。然后IE(至少6&7)抱怨XHTML并只提供文件下载。
我在w3c网站上阅读了如何使用XSL转换(http://www.w3.org/MarkUp/2004/xhtml-faq#ie)解决此问题。当我将其放置在适当的位置时,我发现Chrome现在大声抱怨未定义的实体(具体实体是,
但是测试表明那是不相关的)。
奇怪的是,我可以通过在DOCTYPE中手动声明实体来解决这个问题:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd" [
<!ENTITY nbsp " ">
]>
但我宁愿不要在整个实体范围内都这样做。我之所以说“ bizarrely”,是因为据我所知XHTML + MathML + SVG dtd确实声明了这些实体。因此,以某种方式错过了这些。
有办法解决这个问题吗?我可以向IE提供带有实体的XHTML吗?
如果很重要,这些页面是由php脚本生成的,并通过apache提供服务,因此,如果有一种可靠的方法来嗅探浏览器并修改文档的开头(因此仅将<?xml-stylesheet ...>
位发送到IE),那将是可接受的替代方案。
(我希望我拥有正确的SE网站...如果我在错误的位置,请告诉我。带有标签的同上。)
纯粹的(X)HTML / CSS问题属于stackoverflow.com,但您的问题并不那么直接,因为您提到了可能的服务器端解决方案,因此我不会将其标记为可移动。如果您在这里没有得到任何答案,那么我将其删除并放在上面。一些HTML问题往往会在几秒钟内得到解答!
—
paulmorriss 2011年
@paulmoriss:感谢(部分!)澄清。有时,在东南部站点的泥泞中,我有点迷路了……
—
Andrew Stacey
重新阅读我的评论,我可能不太清楚。我的意思是“如果我是你,我将其删除...”。由你决定。
—
paulmorriss 2011年
@paulmoriss:这是服务器端的配置问题,因为它与应付无法处理XHTML的浏览器以及如何向其发送可以应付的内容有关。扫描“相关”问题列表,似乎在思路上有很多相似之处。但是我不知道这个网站的范围是什么(阅读的越多,我就越困惑),而且我没有任何答案,所以我会在一段时间内听取您的建议。
—
安德鲁·斯泰西