是否可以使用JSF+;具有HTML 4/5的Facelets?

是否可以使用JSF+;具有HTML 4/5的Facelets?,html,jsf,jsf-2,xhtml,facelets,Html,Jsf,Jsf 2,Xhtml,Facelets,Facelets依赖于XML名称空间来处理XHTML。HTML4怎么样?据我所知,HTML5不支持名称空间。HTML5还有一些XHTML中没有的新元素。甚至HTML4和XHTML在它们支持的元素和属性方面也存在一些差异 问题是:是否可以使用Facelets呈现HTML4/5文档?如果是,怎么做?我读到,这应该是可能的,但我自己还没有做到。也许您应该在xHTML包装代码中使用HTML5。如果我能再次找到我掌握的信息来源,我会看看的 [编辑] 看起来,MyFaces在谷歌代码之夏做了一些工作来支持H

Facelets依赖于XML名称空间来处理XHTML。HTML4怎么样?据我所知,HTML5不支持名称空间。HTML5还有一些XHTML中没有的新元素。甚至HTML4和XHTML在它们支持的元素和属性方面也存在一些差异


问题是:是否可以使用Facelets呈现HTML4/5文档?如果是,怎么做?

我读到,这应该是可能的,但我自己还没有做到。也许您应该在xHTML包装代码中使用HTML5。如果我能再次找到我掌握的信息来源,我会看看的

[编辑] 看起来,MyFaces在谷歌代码之夏做了一些工作来支持HTML5呈现。我还不知道它是否应该被有效地使用

请给我们一个反馈,如果你得到它的工作。
[/EDIT]

提供了一些关于如何在HTML5中使用名称空间来帮助从XHTML迁移的有用信息。也许您可以尝试按照名称空间的建议应用名称空间,看看会发生什么?

由于Facelets是一种基于XML的视图技术,它从本质上吸收并发出XML标记,因此您不能将其与HTML4 doctype一起使用。HTML4 doctype描述了几个不能自动关闭的元素,如


。但是,对于XML,您必须关闭它们,如
,等等。因此,使用HTML4 doctype绝对不是Facelets的选项(也就是说,当您尊重标准和/或害怕w3验证器时,即使不是所有WebBrowser,它也会在大多数WebBrowser上完美工作)

另一方面,HTML5允许XML标记。具体规定如下:

例如:

<link type="text/css" href="style.css"/>
这使得HTML5合法有效(对于客户端):

您甚至可以从ajax中引用它,如
中所示

实际上,XHTML被夸大了。它的唯一目的是使用基于XML的工具简化HTML开发,这些工具可以在服务器端操作/转换/生成HTML页面(如Facelet)。但有些初学者也不使用任何XML工具就使用它,并按原样输出,因为它“太酷了”——原因不明

别误会我。XHTML作为服务器端视图技术非常优秀。但根本不是作为客户端标记技术。它在客户端完全没有价值

另见:

在相关说明中,请查看这篇IBM developerWorks文章:

MyFaces具有html5的扩展。试试这个

XHTML是为了与HTML4兼容而设计的。不是吗?@Thor:。至于兼容性,w3验证程序只会在您关闭非自动关闭元素时发出警告(而不是错误),同时针对HTML4进行验证。在过去的几天里,Stackoverflow是不稳定的,我之前对你的答案的评论似乎已经丢失了。不管怎样,谢谢你的回答。问题是这行不通。使用html5 doctype使“©;”等HTML实体不可用。javax.faces.view.facelets.FaceletException:错误解析/WEB-INF/templates/basic.xhtml:Error tracked[line:82]引用了实体“copy”,但没有声明。xhtml在客户端有大量的值。用极其简单的验证来代替关于终止某些标记的各种奇怪规则怎么样?
<!DOCTYPE html>
<html lang="en"
    xmlns:f="http://xmlns.jcp.org/jsf/core" 
    xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Title</title>
    </h:head>
    <h:body>
        <h:outputText value="#{bean.text}" />
    </h:body>
</html>
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Title</title>
    </head>
    <body>
        Some text
    </body>
</html>
<!DOCTYPE html>
<html lang="en"
    xmlns:jsf="http://xmlns.jcp.org/jsf"
    xmlns:f="http://xmlns.jcp.org/jsf/core" 
    xmlns:h="http://xmlns.jcp.org/jsf/html"
>
    <h:head>
        <title>Title</title>
    </h:head>
    <h:body>
        <header jsf:id="header">Header</header>
        <nav jsf:id="nav">Nav</nav>
        <main jsf:id="main">Main</main>
        <footer jsf:id="footer">Footer</footer>
    </h:body>
</html>