ライン要素に関するメモ

XHTML 2.0のライン要素(The l element)についてだが、私はてっきりbr要素が変形しただけのただの物理要素だと思い込んでいた。しかし原文をよく見返してみると、The l element represents a semantic line of text.ともあるように、わりとセマンティックな要素らしい。
意味的な行要素というのがいまいちピンとこないが、ドラフトには“コンピュータコード”や“詩”のマークアップに用いられるとのこと。Basic系などのプログラミング言語では改行が重要な意味を持つので、それには一応納得できる。
しかし「コンピュータコードと詩」と聞いて、ぱっと思いつくのは “pre要素” と新しく提案された “blockcode要素” である。それらは慣習的にpre要素によってマーク付けされていたし、今後はbloclcode要素も大いに用いられるだろう。それらを用いずして、わざわざ物理的概念寄りな“行”という名を冠した要素を使うだろうか。手間の面でも、毎行毎行ライン要素をマーク付けしていくほうがより煩雑な作業である事は議論に値しない。
で、ライン要素を用いるメリットはというと、例文にも挙げられているが CSS2 の counterプロパティ との相性がひどく良い。

1: Option Explicit
2
3: Private Sub Form_Load()
4:   dim Greet as string
5:   Greet = "Hello World"
6:   MsgBox Greet
7: End Sub

このように、CSSを用いてプログラムコード行番号を付けることができる。
l要素はblockquoteとquoteの関係のように、blockcode要素のインライン版とも考えてみたが、あいにくそのポジションにはcode要素という先輩がいる。やはり意味を持たない行要素と捉える方が良いらしい。となると、blockcodeとl要素を共存させるマーク付けにしてみたらどうだろうか。

<blockcode>
<l> Option Explicit</l>
<l></l>
<l> Private Sub Form_Load()</l>
<l>   dim Greet as string</l>
<l>   Greet = "Hello World"</l>
<l>   MsgBox Greet</l>
<l> End Sub</l>
</blockcode>

プログラムコード群をグループ化するのなら、p要素よりもこちらのほうが意味的にも妥当だろう。blockcodeはデフォルトで改行してくれるが、わざわざこうやって明示しても問題は無いはずだ。個人的にはblockcodeで済ませると思うが。
すると、物理的な用途のために(例えばaddress要素内での改行)ライン要素を使うことは間違いなのだろうか。だんだんよくわからなくなってきた。
ところでl要素における、white-saceプロパティのデフォルト値は何なんだろう。nowrapでも別におかしくないような気もするが。改行された時点で“行”では無くなるし。まあ、“セマンティックな行”なのだから、恐らく途中で自動折り返しが入っても問題無いのだろうけれど。ちなみにドラフトには Whether the line should wrap or not depends on styling properties of the element.とある。
どうやら説明を読む限りでは display: block では無いらしい。どちらかというと

l:before{ content: "\a" }
l:after{ content: "\a" }

というかたちに近いのではなかろうか。ちなみにこれをOperaでやると、2行分改行が開いてしまったけれども。