今天我遇到了一个新问题。
正如大多数人可能已经知道的那样,a:target =“_ blank”不会验证XHTML Strict。但今天我想在网站上添加iPod,iPhone和iPad的图标。这需要的代码是:
<link rel="apple-touch-icon" href="logo_144.png" sizes="144x144" />
正如您猜测的那样,属性大小也无效。最大的问题是XHTML1.1是必须的。所以我不能去HTML5或过渡。我发现我可以使用自定义DTD,这不是首选。我还发现可以添加一些自定义DTD线来扩展原始版本。代码是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
<!ATTLIST link sizes CDATA #IMPLIED >
]>
这显然没有完成这项工作,打印了']&gt;'进入页面,给我更多的错误,如没有charset。我试图将'PUBLIC'改为'SYSTEM'而没有任何运气。
有没有正确的方法呢?提前谢谢!
答案 0 :(得分:1)
有没有正确的方法呢?
没有
您可以使用XHTML 1.1(没有XHTML 1.1 Strict之类的东西),也可以在sizes
元素上使用link
属性。
如果您使用自定义DTD,那么您不再使用XHTML 1.1(您使用的是自定义语言)。
答案 1 :(得分:1)
您始终可以使用type而不是size。
<link rel="apple-touch-icon" type="72x72" href="/theme/mobile/72x72.png" />
答案 2 :(得分:0)
根据您的偏好,有两种正确的方法可以执行此操作。
您的上述示例看起来是正确的,我不确定您正在尝试打印]>
的哪个浏览器 - 它可能是ATTLIST末尾的额外空间:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
<!ATTLIST link sizes CDATA #IMPLIED>
]>
另一个 - 可能稍微容易一点 - 选择是选择the XML serialization of HTML5 (often called XHTML5);因为在HTML5中添加了size属性,它似乎最有意义。使用此功能,您可以将文档类型完全排除为HTML5 validator opts for RELAX NG Schema for validation purposes instead of DTDs,但通常建议使用HTML5 Polyglot
将doctype保留为一般可移植性以及与IE8及以下版本的兼容性<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
答案 3 :(得分:0)
如果您想要抑制属性大小验证错误以便验证文档的其余部分,您可以在验证时动态插入<!ATTLIST link sizes CDATA #IMPLIED>
。这是一个xmllint
示例:
sed '/<!DOCTYPE/ {
s/\([^>]*\)/\1 [<!ATTLIST link sizes CDATA #IMPLIED>]/
}
' input.html | \
xmllint --noout --valid - 2>/dev/null || \
echo "Not valid: input.html"