XMLアーキテクチャにDITA(Wikipediaへのリンク)というのがありまして、それをPDFにしたりHTMLにしたりする仕事をしています.今回はHTML5への変換の質問です.

簡単に言いますと、表題のとおりolの行頭番号にfont-weight:bold;を適用したいのですがやり方がわかりません.

まずDITAには作業の手順を示すsteps/stepという要素があります.例えば次のようにオーサリングされます.

    <steps>
        <step>
            <cmd>コマンド1</cmd>
        </step>
        <step>
            <cmd>コマンド2</cmd>
            <substeps>
                <substep>
                    <cmd>サブステップのコマンド1</cmd>
                </substep>
                <substep>
                    <cmd>サブステップのコマンド2</cmd>
                </substep>
                <substep>
                    <cmd>サブステップのコマンド3</cmd>
                </substep>
            </substeps>
        </step>
        <stepsection>ここでstepsectionでリストが区切られます.</stepsection>
        <step>
            <cmd>コマンド3</cmd>
            <substeps>
                <substep>
                    <cmd>サブステップのコマンド1</cmd>
                </substep>
                <substep>
                    <cmd>サブステップのコマンド2</cmd>
                </substep>
            </substeps>
        </step>
        <step>
            <cmd>コマンド4</cmd>
        </step>
    </steps>

これは単純に考えればHTML5のolに落とせば良いのですが、曲者にtopicsectionという要素があって、リストの間にコメントを入れられるのです.これには決して行頭番号を振ってはなりません.

従って、HTML5に変換するときはol/@startを使用して例えば以下のようになります.

<section class="ol steps">
   <ol class="li step" start="1">
      <li class="li step">
         <span class="ph cmd">コマンド1</span>
      </li>
      <li class="li step">
         <span class="ph cmd">コマンド2</span>
         <ol class="ol substeps list-style-lower-alpha">
            <li class="li substep">
               <span class="ph cmd">サブステップのコマンド1</span>
            </li>
            <li class="li substep">
               <span class="ph cmd">サブステップのコマンド2</span>
            </li>
            <li class="li substep">
               <span class="ph cmd">サブステップのコマンド3</span>
            </li>
         </ol>
      </li>
   </ol>
   <div class="li stepsection">ここでstepsectionでリストが区切られます.</div>
   <ol class="li step" start="3">
      <li class="li step">
         <span class="ph cmd">コマンド3</span>
         <ol class="ol substeps list-style-lower-alpha">
            <li class="li substep">
               <span class="ph cmd">サブステップのコマンド1</span>
            </li>
            <li class="li substep">
               <span class="ph cmd">サブステップのコマンド2</span>
            </li>
         </ol>
      </li>
      <li class="li step">
         <span class="ph cmd">コマンド4</span>
      </li>
   </ol>
</section>

これで途中にstepsectionが入っても手順番号を再開することができます.

さてここでお客様からの要望で、手順番号にfont-weight:bold;を適用してもらいたいとの話になりました.実現方法を考えましたが、

  • olでlist-style-type:none;を適用、およびカウンタをリセット
  • liでカウンタをインクリメントし、li::beforeでcontent:counter(カウンタ名)、およびfont-weight:bold;の適用

というようによくWebに紹介されている手法しか思いつきません.ところがこの方法だと、olでカウンタをリセットするときにol/@startの値を設定する術がないように考えられます.

PDFへの変換ならXSL-FOで何の苦も無くできるのですが、HTML5+CSSでどうしたらよいかわからなくなってしまいました.

上記のようにol/@startの値をカウンタに引き継ぐ方法がありましたらご教示ください.

以上