<ui-select>的W3C验证

fav*_*avo 8 html w3c-validation angularjs ui-select

我在一个网站中使用angular-ui-select,其中样式化的选择字段配置了一个名为的自己的标签ui-select.这很好用,但是进行W3C验证会导致此错误:

元素ui-select不允许作为元素的孩子div在这方面.(抑制此子树中的更多错误.)

这是一个示例代码:

<!doctype html>
<html lang="en">
<head><title>x</title></head>
<body>
 <div>
  <ui-select></ui-select>
 </div>
</body></html>
Run Code Online (Sandbox Code Playgroud)

我知道<ui-select>预计不会有,但我怎么能更好地处理这个?

我可以将其包装到不同的标签中,还是有不同的方法ui-select而不是使用HTML标记?

sid*_*ker 17

这里是W3C HTML5验证器维护者.关于验证器行为的简短答案现在是,验证器将为您在文档中使用的任何自定义元素发出错误,并且目前没有办法让用户可以解决它 - 并且它将继续一段时间的方式,直到我们找到解决方案.

我们正在讨论如何解决这个问题.更改验证器只是忽略带有连字符的任何元素名称作为一个完整的解决方案是不可行的,因为这样做的结果是我们不能实际检查它可能具有的任何子元素 - 我们只需要忽略整个子树,因为否则会导致其他错误.因此,这不是一个理想的解决方案.

无论如何,我很想找到一个解决这个问题的好方法,所以如果其他人有想法,我想听听他们.关于此发送想法/建议的两个好地方是public-webapps@w3.org邮件列表 https://lists.w3.org/Archives/Public/public-webapps/和whatwg@whatwg.org邮件列表https: //whatwg.org/mailing-list#specs

我自己想到的一个想法是,我们可以让验证器以与当前处理<div>元素相同的方式处理所有自定义元素(就文档中允许的位置以及允许包含的子元素而言).这也不太理想,但至少它会提供一种方法来检查自定义元素的子树中的后代元素中的错误.


更新2017-02-06:W3C HTML Checker现在支持自定义元素

因此,在2016-12-16 添加了对W3C HTML Checker(验证器)的自定义元素的支持,几天后对其进行了改进,以便对禁止的名称进行更详细的检查.

我最终想到在checker架构中实现它的技巧 - 它的核心是一个基于RelaxNG语法/模式的验证器 - 是添加一个预处理过滤器,它接受任何在元素名称中带有连字符的元素,并将它们放在一个单独的XML命名空间中.

然后我更新了RelaxNG模式,以允许任何位于该XML命名空间的元素.(这很具有讽刺意味,因为我非常讨厌XML名称空间及其引起的所有问题.)

所以我们现在正在寻找类似于自定义属性名称的东西- 可能只是将它们定义为包含连字符的任何属性名称(如自定义元素名称).

但是,在更新HTML规范以允许HTML规范之前,不能将HTML检查器更改为允许自定义属性名称.为此,请参阅HTML规范问题跟踪器中讨论的提案.


MrE*_*MrE 5

这确实是AngularJS的一个长期存在的问题.

你可以做的一些事情:

<ui-select>您可以使用<div ui-select>,而不是使用该元素,但在参数上仍然会失败.

一个前缀x-data-将通过的参数,但我不确定ui-select支持.

HTML W3C验证很有用,但我认为HTML电子邮件最重要,因此它们不会被筛选为垃圾邮件.它对搜索引擎也有好处,但实际上并不那么重要.

如果你看' 为什么验证 ',原因主要是清洁,易于调试和整体良好实践.

Angular(un?)幸运地扩展了HTML5的可能性领域,当然,这种方式偏离了最新的HTML规范.