このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

(X)HTML文書へのメタ情報の埋め込み

naoyaさんの「そのページが誰のものなのかを示す識別子を埋め込む仕様を考えています」において、HTML文書にある種のメタ情報を埋め込む方法として、「metaタグを使う」、「名前空間による拡張」、「コメント内に記述」の3つの方法が案として挙げられています。

良し悪しは別にして、方法はもう一つあります。「PI内に記述」です。


<?hatena page-owner="id:naoya" ?>

レガシーHTMLのベースであるSGML構文では、PIの「<?」と「?>」のあいだに入れるデータは自由です。が、XML仕様ではターゲット名(上の例ならhatena)は必要ですし、XML宣言*1XMLスタイルシート宣言の例からも推測できるように、疑似属性構文(i.e. 名前=quoteされた値)を使うのが推奨です。ターゲット名に、[xX][mM][lL]から始まる名前やQNameは使えません(07-21追記:QNameを使えない理由はコチラを見てください)。が、ピリオドは許されるので、Javaのパッケージ名のような <?jp.ne.hatena page-owner="id:naoya" ?>というのも有りです。

文書要素(ルート要素)より前に出現するPI(「プロローグPI」と呼ばれたりもします)は、文書全体の処理に影響を与えるメタ情報記述には割と向いています。特に、そのメタ情報がマークアップボキャブラリに含めにくいときは有効です。つうか、それしか方法がないですね。まー、PIは他の方法が使えないときの最後の手段(last resort)ですな。

コメントも「最後の手段」として使われていますが、PIより削除される可能性が高いです。現実はどうかわかりませんが、仕様上はコメントのほうが軽視されています、本来、人間が補助的に見ればいいものですから。例えば、携帯へのゲートウェイなどでは、空白文字とコメントは削除候補になるでしょう(かといって、PIが生き残るとは保証できませんけど)。

僕自身は、コメントなんか使うならPIのほうがまだマシ、という立場です(07-21追記:その理由はコチラを見てください)。4つの方法のなかでは、名前空間による拡張が一番まっとうだと思います。「XHTMLでもないのに名前空間を使うのは気持ち悪い」という気分は同感しますが、だったらXHTMLにすればいいかと……

余談になりますが、以下のサンプルで:


<html xmlns:hatena="http://www.hatena.ne.jp/info/xmlns#">
...
<hatena:id>naoya</hatena:id>
...

名前空間URIの「#」は不要でしょう。RDFなどの影響か、名前空間URIのおしりに「#」や「/」を付ける習慣がありますが、これは、「URIとローカル名を単純文字列連結した名前をフルネームと考える」ことを前提に、文字列連結後のURIの形を考慮してのことです。QNameという概念が確立された今では、意味がない習慣だと思います。構造を持つQNameの利用・普及を妨げるという意味ではむしろ有害です。

*1:XML宣言は厳密にはPIではありませんが。