best way to go from DITA to attractive PDF? (2)

前回挙げた

1.もっとXSLTスタイルシートの技術がなくとも出力スタイルをカスタマイズできるようにすること.
2.部分的なスタイルの変更をDITAの特殊化やスタイルシート自体の修正なしにできるようにすること.


という試作品として、これを可能とするためにDTDの特殊化をしてみました.まだDTDだけでXML Schemaの方は未完成です.また特殊化に対応させてスタイルシートも修正してみました.以下はちょっと試してみました結果です.

イメージ 1


これはすべて<p>でオーサリングしてありますが、スタイルシートはこの表示のためには変更してありません.逆にオーサリングで特殊化で加えたfo属性にスタイルを指定できるようにしてあります.fo属性はすべての処理の後XSL-FOのオブジェクトにプロパティとして反映されます.以下のような感じです.


<p>The quick brown fox jumps over the lazy dog</p>
<p fo="text-decoration:line-through;color:mediumvioletred;font-size:1.5em;">The quick brown fox jumps over the lazy dog</p>
<p fo="text-decoration:underline;color:steelblue;font-size:1.5em;">The quick brown fox jumps over the lazy dog</p>
<p fo="border:1pt solid black;padding:1mm;color:teal;font-size:1.5em;">The quick brown fox jumps over the lazy dog</p>
<p fo="padding:1mm;color:white;font-size:1.5em;background-color:darkblue;">The quick brown fox jumps over the lazy dog</p>

実は今ある製品の仕様書をこのDTD+スタイルシートでで作っているのですが、ほぼ手放せなくなってしまいました.自分でスタイルをコントロールできるのって「快感」です.

今まではPDFに出力してみてイマイチのレイアウトがあっても、スタイルシートを変更して特別処理を加えねばならず、正直やる気になりませんでした.しかし今ではちょっとした修正だったら、fo属性に直接XSL-FOの最終的に適用すべき属性を書けば良いので、細かな修正がスタイルシートには一切手を加えずにできます.

例えばテーブルなんかでも標準的なスタイルが気に入らなければ自分で自由にカスタマイズできます.

イメージ 2


これが修正したsimpletableのヘッダー部分です.

<sthead fo="text-align:center;background-color:lavender;font-family:MS-Gothic;">
  <stentry fo="border-bottom-width:2pt;border-bottom-style:double;">項番</stentry>
  <stentry fo="border-bottom-width:2pt;border-bottom-style:double;">項目</stentry>
  <stentry fo="border-bottom-width:2pt;border-bottom-style:double;">内容</stentry>
</sthead>


自分で言うのも変ですがとてもおもしろいです.まだ試験中ですが、ものになりそうだったらDTDスタイルシートを公開したいと思います.