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の導入なのですが、いろいろと考え準備する必要がありそうです.