PSGML で xmlns= を入力する
Emacsを使って HTMLを書くときに有効なのが、 PSGMLだ。 これさえ使えば、比較的楽に validな [X]HTMLを書ける。しかし、なぜだか html要素の xmlns属性を入れられそうで入れられなくて、 XHTMLファイルを編集 する度にいらいらとしていた。が、ようやくそんないらいらの日々に別れを告 げられることになった。
PSGMLを使って XHTMLを書くとき、 html要素の開始タグのところで C-c C-a して属性値の編集をしようとすると、以下のようなバッファが現れる。
<html -- Edit values and finish with C-c C-c -- lang = #DEFAULT -- NMTOKEN: #IMPLIED -- xml:lang = #DEFAULT -- NMTOKEN: #IMPLIED -- dir = #DEFAULT -- (ltr rtl): #IMPLIED -- id = #DEFAULT -- ID: #IMPLIED -- xmlns = #FIXED http://www.w3.org/1999/xhtml -EEJ:**-F1 *Edit attributes* [3] (SGML edit attributes Fill)--Top---------
ここで、 lang や xml:lang の値を適当なものに設定してから、 xmlnsの値の
ところに行って (#FIXED
が消えることを祈りつつ) 編集をしようとし
てみると、 read-only だと言って怒られる。そこで、きっと #FIXEDな属性値
は何も考えなくてもちゃんと挿入されるに違いない、という確信を持って C-c
C-c してみても、全然挿入されない。あれこれと調べてみたのだが (と言って
もドキュメントやソースに対して grepを多用しただけ) どうもこういうもの
らしく、 xmlnsの値を何も考えずに挿入する簡単な方法はないらしい。
今までは、きわめて強い敗北感を抱きつつ、 #FIXEDの右側にある URLをコピー & ペーストしていた。 (それくらい覚えればいいという話もあるが、正しく覚 えていても、間違ってタイプすることだってあるわけで……、って、単に覚え るのがめんどうなだけですが…。) 敗北感を抱く前に、毎回 PSGMLに新しいバージョンが出ていないか、などなど、 自分で努力しないで解決する方法がないものか調べてみていた。しかし、いつ もそれほどまじめに調べなかったせいで、結局敗北感を味わうはめになってい た。ちなみに、 ALPHA版として出ている 1.3.1でも状況は同じのようだ。
今日も XHTMLの編集をすべくファイルを開いたものの、この敗北感を味わいた くなかったので、再び Google大先生に聞いてみることにした。どちらかとい うと僕は検索が下手なのだろう。結構あれこれと試した結果、やはり敗北感を味 わいそうな予感が強くなってきた。しかし、もう一度だけ、というつもりで検 索した結果、 この問題をずばり解決してくれるパッチを発見した。これを当てれば、 #FIXEDという表示が消え、設定されるべき属性値が read-only で表示される ようになるのだ。そして、当然 C-c C-c すると、ちゃんと xmlns属性も挿入 されるのである。
ということで、今回は単に後々自分でパッチをもう一度探さないといけな くなったときに便利なように書いてみただけなのでした。