hazardstatementのあれこれ(3)

hazardstatementにはあともう一つおまけがありました.それはhazardsymbolです.紹介しましたようにhazardsymbolはimageの特殊化です.ですのでimageと同じ属性を持っています.だから@placementの初期値はinlineです.
 
確かにDITA 1.2のhazardstatement.modを見ると以下のようになっています.
 
<!ENTITY % hazardsymbol.attributes
             "href 
                        CDATA 
                                  #REQUIRED
 
              scope 
                        (external | 
                         local | 
                         peer | 
                         -dita-use-conref-target) 
                                  #IMPLIED
              keyref 
                        CDATA 
                                  #IMPLIED
              longdescref 
                        CDATA 
                                  #IMPLIED
              height 
                        NMTOKEN 
                                  #IMPLIED
              width 
                        NMTOKEN 
                                  #IMPLIED
              align 
                        CDATA 
                                  #IMPLIED
              scale 
                        NMTOKEN 
                                  #IMPLIED
              scalefit
                        (yes |
                         no |
                         -dita-use-conref-target)
                                  #IMPLIED
              placement 
                        (break | 
                         inline | 
                         -dita-use-conref-target) 
                                  'inline'
              %univ-atts;
              outputclass 
                        CDATA 
                                  #IMPLIED"
>
 
ところが実際の使用方法ではまずinlineと解釈させることはないように思えます.@placement="block"なのです.ところがパーサーを追加すると、記述がなければ@placement="inline"は自動的に付いてしまいます.
 
このように言いますと、「イヤ、インラインでもいいじゃないか?」と言われるかもしれません.しかし様々なDITAユーザーの中には、インライン画像は「そこで与えられたフォントサイズの1.4emにしよう」という運用にされている方もいます.こういう場合、画像はそのままでは意図したものより小さくなってしまうでしょう.やはりブロックとして扱うのが適当です.
 
しかし、いざ実際にオーサリングを始めてみると、いちいち
 
<haradsymbol href="image/exclamation.png" placement="break"/>
 
とするのはとても手間です.ましてや、いったんオーサリングが始まってしまえば後から「placement="break"にしてください」とお願いするのも気が引けます.お客さんはたぶん思わず「エッ!」と言われてしまうでしょう.こういう時はどうしたらいいのでしょうか?本当の正解かどうかわかりませんが、次の2つの手段があるように思います.
 
1.制約モジュールを作って、@placementの初期値をbreakにしてしまう.
2.スタイルシートで、@classが" hazard-d/hazardsymbol "を含んでいる場合、ブロックとして扱ってしまう.
 
私の同僚は後者の方法を取っているようです.ある意味たかだかhazaradstatementの導入なのですが、いろいろと考え準備する必要がありそうです.