HTML5 传递元素导致 Eclipse 警告 'Unknown tag'

HTML5 Pass-Through element causes Eclipse warning 'Unknown tag'

我的 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 抱怨

Unknown tag (main).

我想知道我的文件是否格式不正确,或者 Eclipse 无法正确验证它。

这不是 JSF 问题。删除直通元素触发器 jsf:id 时,您仍然会遇到完全相同的问题。如果不在 XHTML 文件中的任何地方使用 JSF tags/attributes,您甚至仍然会遇到完全相同的问题。

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


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

另请参阅:

  • XML prolog / instruction not removed from XHTML output
  • JavaServer Faces 2.2 and HTML5 support, why is XHTML still being used