如果输入接受属性包含MIME类型列表,则W3C验证错误

时间:2014-08-19 19:35:08

标签: html html5 validation file-upload

我尝试使用<input type="file" ...>元素的accept属性将文件打开对话框限制为RTF文件。 Internet资源表明此属性可以包含以逗号分隔的扩展名和MIME类型列表。它确实有效,但有一个验证问题:

此HTML5代码

<!DOCTYPE html>
<html>
  <meta charset="utf-8" />
  <title>Test</title>
</head>
<body>

<form>
  <input type="file" accept=".rtf, text/rtf, application/rtf, text/richtext" />
  <input type="submit"/>
</form>

</body>
</html>

使用HTML5 validator

导致此错误
  

错误值.rtf,text / rtf,application / rtf,属性的text / richtext   接受元素输入:期望一个令牌字符或/但看到,   代替。

这是W3C验证器的实验性HTML5一致性检查器中的错误吗?

1 个答案:

答案 0 :(得分:4)

来自spec

  

可以指定accept属性为用户代理提供   提示将接受哪些文件类型。

     

如果指定,该属性必须包含一组comma-separated tokens,每个ASCII case-insensitive必须是valid MIME type with no parameters匹配   对于以下之一:

     
      
  • 字符串audio/*
      表示接受声音文件。
  •   
  • 字符串video/*
      表示接受视频文件。
  •   
  • 字符串image/*
      表示接受图像文件。
  •   
  • A {{3}}
      表示接受指定类型的文件。
  •   
  • 第一个字符为“。”的字符串。 (U + 002E)字符
      表示接受具有指定文件扩展名的文件。
  •   

我尝试了验证器,

  • <input type="file" accept="text/rtf, application/rtf, text/richtext" />验证。
  • <input type="file" accept=".rtf" />无法验证。

所以问题是.rtf,应该被接受,因为它属于允许令牌的最后一类。

此外,规范提供了此示例,但未验证

<input type="file" accept=".doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document">

然后,这是验证器的问题。