1

今日、私は新しい問題に遭遇しました。

ほとんどの人が既に知っているように、a:target="_blank" は XHTML Strict を検証しません。でも今日は、iPod、iPhone、iPad のアイコンを Web サイトに追加したいと思いました。これに必要なコードは次のとおりです。

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

おそらくご想像のとおり、属性のサイズも有効ではありません。最大の問題は、XHTML1.1 が必須であることです。だから私はHTML5またはtransitionalに行くことができません。カスタム 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」に変更しようとしましたが、うまくいきませんでした。

これを行う正しい方法はありますか?前もって感謝します!

4

4 に答える 4

1

これを行う正しい方法はありますか?

いいえ。

XHTML 1.1 (XHTML 1.1 Strict などはありません) を使用するかsizes、要素に属性を持つものを使用できますlink

カスタム DTD を使用している場合は、XHTML 1.1 を使用していないことになります (カスタム言語を使用していることになります)。

于 2012-06-11T09:33:14.503 に答える
1

サイズの代わりにいつでも type を使用できます。

<link rel="apple-touch-icon" type="72x72" href="/theme/mobile/72x72.png" />
于 2013-02-14T22:25:54.670 に答える
0

好みに応じて、これを行うには 2 つの正しい方法があります。

上記の例は正しいように見えますが、どのブラウザーで印刷しようとしていたのか]>わかりません。おそらく、ATTLIST の末尾にある余分なスペースである可能性があります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
    <!ATTLIST link sizes CDATA #IMPLIED>
]>

もう 1 つのオプション (おそらく少し簡単ですが) は、HTML5 の XML シリアル化 (XHTML5 と呼ばれることが多い)を選択することです。size 属性が HTML5 に追加されたので、最も理にかなっているように思われます。これを使用すると、 HTML5 バリデーターが DTD の代わりに検証目的で RELAX NG Schema を選択するため、doctype を完全に除外できますが、 HTML5 ポリグロットを使用して、一般的な移植性と IE8 以下との互換性のために、doctype をそのままにしておくことをお勧めします。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
于 2012-06-16T23:04:56.480 に答える
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"
于 2014-07-08T23:37:03.640 に答える