您不应该在 doctype 声明中使用内部子集,因为浏览器根本不理解它,或者根本不理解 DTD。
如果您使用简单的附加属性,出于某种原因,通常最好对它足够小心,或者“手动检查”。但是要执行基于 DTD 的验证,您需要构建一个外部 DTD,基于您希望用作基础的 DTD,并在其中添加额外的标记。在这种情况下,您将复制 HTML 4.01 过渡 DTD 并替换
<!ATTLIST LI
%attrs;>
经过
<!ATTLIST LI
rel CDATA #IMPLIED
%attrs;>
(也就是说,您需要提供允许的属性的完整列表,并添加您的自定义属性,而不是声明一个只允许您的属性的属性列表 [除非那是您真正想要的]。)
然后,您将使用一个 doctype 声明,该声明通过其 URL 引用您的修改副本,其中
<!DOCTYPE HTML SYSTEM "dtdurl">
其中 dtdurl 是 DTD 的绝对 URL。更多信息:为 HTML 验证创建自己的 DTD。
通常不建议添加您自己的属性,因为它们可能会与在某些未来版本中添加到 HTML 的属性发生冲突。根据 HTML5 草案,data-
名称data-rel
以rel
.