仅<o:conditionalComment>
适用于 CSS 文件是不正确的。这是一种误解。从技术上讲,使用纯 Facelets 标记/组件根本无法满足您的要求,因为这会导致 XML 语法格式错误,从而导致 Facelets 编译错误。
<o:conditionalComment if="lt IE 7">
<html lang="en" class="lt-ie9 lt-ie8 lt-ie7">
</o:conditionalComment>
<o:conditionalComment if="IE 7">
<html lang="en" class="lt-ie9 lt-ie8">
</o:conditionalComment>
<o:conditionalComment if="IE 8">
<html lang="en" class="lt-ie9">
</o:conditionalComment>
<o:conditionalComment if="gt IE 8">
<h:outputText value="<!-->" escape="false" />
<html lang="en" class="no-js">
<h:outputText value="<!--" escape="false" />
</o:conditionalComment>
...
</html>
这不是 格式良好的XML。您知道,XML 结束元素应该与 XML 开始元素在同一范围内。如果每个XML 元素在同一个父 XML 元素中<html>
都有自己的,那么它将是有效的 XML 。</html>
但这又不是有效的 HTML。
只需<h:outputText escape="false">
在所有<html>
标签上使用。不要忘记对结束</html>
标签做同样的事情。
<o:conditionalComment if="lt IE 7">
<h:outputText value="<html lang="en" class="lt-ie9 lt-ie8 lt-ie7">" escape="false" />
</o:conditionalComment>
<o:conditionalComment if="IE 7">
<h:outputText value="<html lang="en" class="lt-ie9 lt-ie8">" escape="false" />
</o:conditionalComment>
<o:conditionalComment if="IE 8">
<h:outputText value="<html lang="en" class="lt-ie9">" escape="false" />
</o:conditionalComment>
<o:conditionalComment if="gt IE 8">
<h:outputText value="<!--><html lang="en" class="no-js"><!--" escape="false" />
</o:conditionalComment>
...
<h:outputText value="</html>" escape="false" />
很尴尬,但HTML5 样板(这种方法的起源)本身也很尴尬,IMO。
或者,您可以考虑<my:html>
自己创建一个自定义组件,该组件会生成所需的标记,这样您就可以满足<my:html>...</my:html>
.