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

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

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

[参照用 記事]

Comment vs PI

昨日の「メタ情報の埋め込み」の件、少し続きを。日記への“コメント”と混乱しそうなので、<!-- -->のことはcommentと書きます。

コメント(queueさん、ななしさん)のご指摘のように、実情として、PIが無闇と削除されてしまったり、思わぬ副作用があるなら、commentと比べてPIが良いとは主張できなくなります。が、僕が「commentなんか使うならPIのほうがまだマシ」と、(少なくとも理念的には)思う理由を述べておきます。

まず、commentに比べてPIの構文が標準化されている点を挙げます。(SGMLではなくてXMLに従うなら)ターゲット名は必須であり、ターゲット名によりどの処理系に対するヒントであるかを判断できます。ターゲット名にQNameは使えませんが、ドメイン名をベースにした長い名前を使えば実用上は一意的にターゲットを指定できると言っていいでしょう。

ターゲット名に続くデータ部には、公式の構文は存在しませんが、習慣上は疑似属性を使うことが一般化しているので、次のように、空内容要素と同等な構造的構文を持つと考えることができます。


<page-owner xmlns="http://xmlns.hatena.ne.jp/info"
owner-id="id:naoya" />
↑
↓
<?jp.ne.hatena.info pi-type="page-owner"
owner-id="id:naoya" ?>

また、由来や原則から言えば、PIはその名(processing instruction)のとおり、記述的マークアップとは直交する(理想)または相性が悪い(現実)、処理系向け指令/ヒントを書くための構文コンストラクトです。ですから、人間向けのcommentよりはプログラムが読む情報を入れる場所として適切と言えるでしょう。

commentとPIのどちらが削除されにくいか、実情はわかりませんが、例えば XML canonicalizationを行うと、uncommented canonical formではcommentが削除されます。PIは残ります。

「Comment vs PI」(この2者のみ、他の方法は議論の外)で、僕がPIに一票を投じる理由はこんなところです。