我正在开发一个框架,该框架使用图像控制器从webroot外部的目录加载所有图像,这包括CSS中使用的图像.例如:
background: #FFF url(example.org/index.PHP?sect=loadimg&img=branding.jpg) top left repeat-x;
这似乎工作正常,但我的xhtml验证器不喜欢CSS中的&符号使用,并且使用& amp; amp;相反根本不起作用.那么有人会知道在样式表中使用这样的&符号是否合法吗?如果没有,有没有其他方法来完成相同的图像请求?
解决方法
只有在您针对XHTML文档类型进行验证时,验证者才会投诉.在< style>中使用未转义的HTML字符和< script>在普通HTML(4.01和5)中,元素仍应被视为有效.
理想的解决方案是将CSS移动到外部样式表,并使用< link>来包含它.或@import.
如果您的样式必须位于< style>但是,您可以在< style>中添加CDATA部分.标签:
<style type="text/css"> /* <![CDATA[ */ /* Your CSS here */ /* ]]> */ </style>
这将导致该部分中的所有HTML特殊字符按字面处理,并且您的XHTML文档将进行验证.
请注意,CDATA部分分隔符只是<![CDATA [and]]> ;;它们包含在/ * CSS注释* /所以浏览器不会尝试将它们解释为CSS. XHTML中的CDATA部分是covered by the spec.