di要素section要素と同じような経緯だろう。フラグメントの参照という観点からすると、入れ子構造でないと意図した範囲にフラグメントIDを付加することが出来ない。
連続的な要素群をフラグメントとしてグループ化するには、それらを纏めて子要素とし、新しい代表を制作する必要がある。たとえば、section要素の場合は、見出しと本文を纏めて子要素とし、自らが新しい代表となっている。
XSLTでdocument()関数を使用する場合、引数のURIにフラグメントIDまで指定することで(正確にはフラグメントIDはURIではないが)、特定のノード集合だけを取り出すことが出来る。こいういった用法の場合、di要素が登場すると「用語『ほげ』に関する一連の定義」を簡単に取り出すことが出来るようになる。dt要素やdd要素だけではこれは不可能だ。
思うに、「並んでいるんだからグループだろう」という暗黙的なグループ化は今後無くなるだろう。XMLの構造的に、兄弟を比較するよりも親で判断する方がグループの判断が簡単になるからだ。Xpathでも「並んでいるんだから」的グループの表現は面倒だし、XSLTでフラットな要素群を構造化するのも非常に手間が掛かる。
旧来的なa要素によるIDの付加はジャンプの着地地点にはなるが、ブロック要素をまたぐフラグメントを作ることが出来ない。暗黙的なグループ化もこれと同じで用語の名前にIDが振られていても、用語の説明までは参照できないのだ。
ちなみにdi要素であってdiv要素でないのは、div要素では意味が広すぎてXMLアプリケーションが意味を判断しきれないからだ。section要素やdi要素をあらかじめ特定の意味に制限することによりXMLアプリケーションが効率よく仕事をすることが出来るようになる。trやul要素と同じだ。
くそ、前売り券の発売日は明日のはずだ! 話が違うぞ!
明日は窓口の受付開始と共にシネマライズに殺到せよ。特典を見逃すわけにはいかない。
グッドラック!