HTML5传递元素导致Eclipse警告';未知标签';

HTML5传递元素导致Eclipse警告';未知标签';,eclipse,html,jsf,main,passthrough-elements,Eclipse,Html,Jsf,Main,Passthrough Elements,我的JSFtemplate.xhtml文件如下所示: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h=

我的JSF
template.xhtml
文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:jsf="http://xmlns.jcp.org/jsf">

<h:head>
    ...
</h:head> 
<h:body>
    <header jsf:id="head">
        ...
    </header>
    <nav jsf:id="nav">
        ...
    </nav>
    <main jsf:id="main">
        ...
    </main>
    <footer jsf:id="foot">
        ...
    </footer>
</h:body>
</html>

...
...
...
...
...
Eclipse抱怨

未知标记(主)


我想知道我的文件是否存在某种形式的错误,或者Eclipse无法正确验证这一点。

这不是JSF的问题。在删除passthrough元素触发器时,您仍然会遇到完全相同的问题
jsf:id
。如果不在XHTML文件中的任何位置使用JSF标记/属性,您甚至仍然会遇到完全相同的问题

标记在HTML5中相对较新(它只是在中添加的)。当前XHTML文档中的其他HTML5标记已经存在得更长了(早在2008年)。Eclipse根本无法将
识别为在默认XML命名空间中注册的标记,如
http://www.w3.org/1999/xhtml
。Eclipse拥有一个已注册标记的内部列表。如果升级到最新的Eclipse(SR)版本并不能解决问题,那么最好将此问题报告给Eclipse人员。同时,只需选择快速修复选项“忽略HTML5验证中的‘main’元素”


与具体问题无关,XML prolog不属于这个问题。摆脱它。此外,我还想知道“header”、“nav”、“main”和“footer”作为整个JSF组件的必要性。我真的没有看到任何有用的现实世界的设备与此。您很可能只需要将它们保持为纯HTML。这样可以避免不必要的开销

另见:

Wow,所以他们保持html5的名称空间相同?完全错过了那部分。这使得html规范的人更喜欢(imo,数据前缀而不是真正的前缀也是一个奇怪的选择,因为抛弃真正好的交叉验证等等…)感谢您的精彩解释和进一步的提示。因此,为了澄清最后一点:在真正需要JSF组件之前,只需
而不是
。尽可能长时间地从最低限度开始。只有标签、输入、消息和转发器组件是必需的。其他是可选的。