今まで私のWebページの書式は HTML 4.0 (正確には W3C/DTD HTML 4.01 Traditional) に従っていた。 しかし、今後はデータ書式としては XHTML が望ましいと考え、 過去作ったページを徐々に XHTML 1.0 形式に変換している。
ここでの問題は、その変換を手作業で行っていたため、 時間がかかることだった。 そこである程度変換を自動化するために、プログラムを書くことにした。
XHTML への変換の大部分は、 大文字で表されているタグを小文字にすることである。
さて、タグはどのように表現されるのだろうか? 正規表現で書いてみた。
<と>に囲まれている1文字以上の文字列と考えればこうだろう。
<.+>
ところが、これでは<H1>H1をh1にする<H1>
という連なりも一つのタグとみなされてしまう。したがって、
文字列には>が入らない、と考えて次のように変更する。
<[^>]+>
抽出した部分は小文字化したいので、後で参照できるよう()をつける。
(<[^>]+>)
大文字化をするメソッドは downcase である。 文字列を置換するメソッド gsub と組み合わせればよい。 元の文字列 orig から XHTML を満たす文字列 line を得るには次のようになる。
line = orig.gsub(/(<[^\>]+>)/){$1.downcase}
まりんきょ学問所 > Ruby の浮き輪 > XHTML へ