XHTML 2.0 の仕様では、セクション明示の手段として section
要素が、見出しの要素として h
要素が、それぞれ提案されていました。
ただし、個人的には、この方法にはいささか不具合を感じます。
h
要素がどの見出しレベルなのか、その section
要素がどの階層に属するのかを、すぐには理解出来ません。 section
要素の入れ子を遡れば理解出来ますが、人間の目には非常に構造が分かりにくいものとなります。ただし、字下げをうまく使えば、少しは分かりやすくなる可能性もあります。section
という「長い名前」は、マーク附けを煩しくします。section
要素に h
要素が「必ず入っていなければならない」という記述がありません。個人的には、セクションと見出しの明示には、 ISO-HTML の仕様を採り入れるのが最も自然かと考えられます。 見出しを含めたセクション s1
, s2
, …各要素でも、 見出しを除いた本文セクション div1
, div2
, …各要素、いずれでも構いません。
sn
要素を用いる方法XHTML 2.0 と類似した方法です。
body
要素には、(ブロック要素)*, s1
要素, ブロック要素* が、この順番で出現する。sn
要素には、hn
要素, ((ブロック要素) | s(n+1)
%block
は、見出しやセクション各要素を除いた一般的なブロック要素を示すとします。
<!ELEMENT body ((%block;)*,s1,(%block;)*) > <!ELEMENT s1 (h1,(%block;|s2)*) > ....
block.elements
は、見出しやセクション各要素を除いた一般的なブロック要素の定義への参照を示すとします。**.qname
は、 **
要素の定義への参照を示すとします。<element name="body"> <zeroOrMore> <ref name="block.elements"/> </zeroOrMore> <ref name="s1.qname"/> <zeroOrMore> <ref name="block.elements"/> </zeroOrMore> </element> <define name="s1.qname"> <element name="s1"> <ref name="h1.qname"/> <zeroOrMore> <choice> <ref name="block.elements"/> <ref name="s2.qname"/> </choice> </zeroOrMore> </element> </define> ....
divn
要素を用いる方法ISO-HTML の「Pre-HTML」で用いられた方法を、ほぼそのまま採用すれば良いと考えられます。
body
要素には、(ブロック要素)*, h1
要素, div1
要素, (ブロック要素)* が、この順番で出現する。divn
要素には、(ブロック要素)*, ( h(n+1)
要素, div(n+1)
要素 )*, (ブロック要素)*が、この順番で入る。%block
は、見出しやセクション各要素を除いた一般的なブロック要素を示すとします。
<!ELEMENT body ((%block;)*,h1,div1,(%block;)*) > <!ELEMENT div1 ((%block;)*,(h2,div2)*,(%block;)*) > ....
block.elements
は、見出しやセクション各要素を除いた一般的なブロック要素の定義への参照を示すとします。**.qname
は、 **
要素の定義への参照を示すとします。<element name="body"> <zeroOrMore> <ref name="block.elements"/> </zeroOrMore> <ref name="h1.qname"/> <ref name="div1.qname"/> <zeroOrMore> <ref name="block.elements"/> </zeroOrMore> </element> <define name="div1.qname"> <element name="div1"> <zeroOrMore> <ref name="block.elements"/> </zeroOrMore> <zeroOrMore> <ref name="h2.qname"/> <ref name="div2.qname"/> </zeroOrMore> <zeroOrMore> <ref name="block.elements"/> </zeroOrMore> </element> </define> ....
divn
, sn
, hn
の対応に関しては ISO-HTML で取り決めが明文化されているため、これを流用すれば良い。シンプルで、かつ人間が見て分かりやすいソースを記述するためならば、セクションの明示は「全くしない」方が良いと考えられます。また、見出しを正しく使っていさえすれば、それだけで既に「セクションの明示」になり得ます。見出し階層から実際のセクションを類推することは、機械的に困難では無いと考えられます。
ただ、現行の XML や DOM をはじめとした XML 各種仕様が「データベースを前提とした」作りになっている以上、何らかのセクション要素でセクションの明示をするのはやむを得ない処置であると思います。実際、セクションの明示が無い XHTML 文書の中から、 DOM を用いてセクションの内容を抽出するのは、それほど容易なことではありません。
だからこそ、メンテナンス性を向上させる上でも「人間が見ても分かる」セクションの明示方法を摸索する必要があるのでは、と考えるわけです。