PSGML で xmlns= を入力する

投稿: 2004年8月16日

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属性も挿入 されるのである。

ということで、今回は単に後々自分でパッチをもう一度探さないといけな くなったときに便利なように書いてみただけなのでした。