2012-06-11 25 views
1

今天我遇到了一个新问题。XHTML 1.1通过<链接尺寸“严格扩展”“>

由于大多数人可能已经知道,a:target =“_ blank”未验证XHTML Strict。但今天我想为iPod,iPhone和iPad添加图标到网站。这段代码需要的是:

<link rel="apple-touch-icon" href="logo_144.png" sizes="144x144" /> 

正如你probally猜测属性大小是无效的。最大的问题是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 > 
]> 

这,这显然没有做这个工作,印有“]>”直接进入页面,给了我更多的错误,比如没有字符集。我试图在没有任何运气的情况下将'PUBLIC'改为'SYSTEM'。

有没有正确的方法来做到这一点?提前致谢!

回答

1

有没有正确的方法来做到这一点?

您可以使用XHTML 1.1(有没有这样的事情作为XHTML 1.1严格),也可以使用的东西与link元件上的sizes属性。

如果您使用自定义DTD,那么您不再使用XHTML 1.1(您正在使用自定义语言)。

+0

太糟糕了,我认为这是可能的,因为有些人用上面的XHTML 1.0过渡的方法。而不是XHTML 1.1总是严格?接下来,当我将该行添加到DTD本身时,它仍然验证为XHTML 1.1。 – Sietse

+1

当该技术被使用时,它将停止使用XHTML 1.0 Transitional或XHTML 1.1,并成为一些自定义语言。 – Quentin

+0

XHTML 1.1需要XHTML 1。0严格起点,但它不被称为Strict(因为没有必要将它与不存在的XHTML 1.1 Transitional和XHTML 1.1框架集区分开来) – Quentin

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中添加了大小属性,因此这似乎是最有意义的。利用这一点,你可以完全排除文档类型为HTML5 validator opts for RELAX NG Schema for validation purposes instead of DTDs,但一般建议离开DOCTYPE在一般的便携性,并与IE8的兼容性及以下使用HTML5 Polyglot

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
1

您可以随时使用类型,而不是规模。

<link rel="apple-touch-icon" type="72x72" href="/theme/mobile/72x72.png" /> 
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"