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

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

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

参照用 記事

ユニバーサルなIDの構文と規約

naoyaさんの「CSS signature」に、CSSがらみで、HTML body要素のid属性にユニバーサルなIDをふる話があります。

SGML/XMLのIDは、本来文書スコープでの一意性しか保証しません(下に仕様を引用)が、適当なコンベンションのもとで、ユニバーサルな一意識別に使う、ってのは別に悪いことではないでしょう。

Values of type ID MUST match the Name production. A name MUST NOT appear more than once in an XML document as a value of this type; i.e., ID values MUST uniquely identify the elements which bear them.

ですが(ブラケット内は檜山が追加):

signature [bodyのID値] に使う id の命名規則があいまいで...という指摘がありました。

ヤッパリ、これは問題。

naoyaさんの例のなかで、id="d-hatena-ne-jp_naoya" とか id="operacom" とかが出てきてますが、ユニバーサルなIDとなると、現実的にはドメイン名を適当にエンコードして入れるしかないですね。ドメイン名、というかURIを、ID値すなわち名前文字列にどうエンコードするかがとりあえずの問題。

IDにドットを入れるのは別にかまわないので、id="opera.com" としてもいいのですけど、CSSではドットが特殊文字(クラスセレクタ用)なので、セレクタ側で「\.」のようにエスケープしないといけないのがイヤですね。

ドットをハイフンやアンダスコアに変換すると、もともとのハイフン/アンダスコアと区別がつなかくて再現できなくなる恐れがあります。適当な文字か文字列(例えばZ)をエスケープ用に使うしかないでしょう。ueno-zoo.jp/panda なら uenoZ-Zzoo-jp_panda とか。

URIにおける「%」、quoted printablの「=」、プログラミング言語の「0x」、XMLの「&#」のように、なんかエスケープのトリガーを決めて、その後は文字番号でもいいかもしれません。

いずれにしても、「URI→名前文字列」変換はできないことではないので、どこかが決めてしまえば、意外とそれで通ってしまうような気もします。(次に関連エントリー。)