【问题标题】:XHTML 1.1 Strict expand with <link sizes"">XHTML 1.1 Strict expand with <link sizes"">
【发布时间】:2014-07-09 07:46:40
【问题描述】:

今天我遇到了一个新问题。

大多数人可能已经知道,a:target="_blank" 不是 validate 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 >
]>

这显然没有完成这项工作,将“]>”打印到页面中,给了我更多错误,例如没有字符集。我试图将 'PUBLIC' 更改为 'SYSTEM' 没有任何运气。

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

【问题讨论】:

    标签: validation xhtml doctype dtd


    【解决方案1】:

    有正确的方法吗?

    没有。

    您可以使用 XHTML 1.1(没有 XHTML 1.1 Strict 之类的东西),也可以在 link 元素上使用带有 sizes 属性的东西。

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

    【讨论】:

    • 太糟糕了,我认为这是可能的,因为有些人使用上面的方法和 XHTML 1.0 过渡。 XHTML 1.1 不是一直很严格吗?接下来,当我将这一行添加到 DTD 本身时,它仍然验证为 XHTML 1.1。
    • 当该技术被使用时,它不再是 XHTML 1.0 过渡或 XHTML 1.1,而是成为某种自定义语言。
    • XHTML 1.1 以 XHTML 1.0 Strict 为出发点,但不叫 Strict(因为没有必要将其与不存在的 XHTML 1.1 Transitional 和 XHTML 1.1 Frameset 区分开来)跨度>
    • 这很清楚。但即使我这样尝试:w3.org/TR/2001/REC-xhtml-modularization-20010410/…(页面底部)我仍然得到同样的错误。所以当我使用自定义 DTD 并内联添加代码时,它甚至是不可能的?
    • 不适用于一些常见的标签汤解析器。由于浏览器缺乏对 SGML/XML 的支持,HTML 5 放弃了 DTD 的想法。
    【解决方案2】:

    您始终可以使用类型而不是大小。

    <link rel="apple-touch-icon" type="72x72" href="/theme/mobile/72x72.png" />
    

    【讨论】:

      【解决方案3】:

      有两种正确的方法可以做到这一点,具体取决于您的偏好。

      您上面的示例看起来正确,我不确定您正在尝试使用哪个浏览器打印]&gt; - 它可能是 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 属性,这似乎是最有意义的。使用它,您可以将 doctype 完全排除为 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">
      

      【讨论】:

        【解决方案4】:

        如果您想抑制属性大小验证错误以验证文档的其余部分,您可以在验证时即时插入 &lt;!ATTLIST link sizes CDATA #IMPLIED&gt;。这是一个xmllint 示例:

        sed '/<!DOCTYPE/ {
                s/\([^>]*\)/\1 [<!ATTLIST link sizes CDATA #IMPLIED>]/
            }
            ' input.html | \
        xmllint --noout --valid - 2>/dev/null || \
        echo "Not valid: input.html"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-30
          • 1970-01-01
          • 1970-01-01
          • 2010-12-28
          • 2010-09-21
          • 1970-01-01
          相关资源
          最近更新 更多