CSSでXMetaLの表示をカスタマイズする

ちょうどお客様のところでやった例があったので、特殊化した要素のXMetaLでの表示をカスタマイズしてみました.今回このカスタマイズを紹介します.お客様の例をそのまま出すわけにはゆきませんので次のような例を考えてみました.
 
それは「チェックマーク」の特殊化です.よく機器マニュアルで、機種/機能のマトリクス表に対して、○/×を記入した一覧を作ることがあります.日本語マニュアルだったら、このように○/×で意味がわかるのですが、英語圏では通用しません.
 
 
英語圏では、Check mark(U+2713)とX mark(U+2717)です.ですからたいてい翻訳が入ることになります.でも元の意味として表しているものは同じなのですから、特殊化して要素で表しておけば翻訳の手間が省けることになります.あとは、各国語用のスタイルシートでCJKだったら○/×、英語圏だったらCheck markとX markというふうに出力を切り替えてやれば良い訳です.DTDはこんなふうにしてみました.("dc"はDon't careの略)
 
<!ELEMENT check EMPTY>
<!ATTLIST check value (yes|no|dc) #REQUIRED>
 
DTDを作る作業が終わったら、XMetaLのTools-Select Specialized DITA DTDで、作成したDTDファイルを選んであらかじめ決めておいた公開識別子を割り当てます.そうすると例えばDTDのファイルがantenna_topic.dtdだった場合、C:\Program Files\XMetaL 6.0\Author\DITA\XACs\antenna_topicというフォルダが作成され、check要素を含んだtopicが使えるようになります.以下が入力したサンプルです.
 
イメージ 1
 
ここからがミソですが、check要素は空要素で@valueで意味を指定するのでそのままでは、見たときAttribute Inspectorを見ないとどのような値が指定されているのかわかりません.これは相当不便です.ここで@value="yes"のときはCheck mark、"no"のときはX mark、"dc"のときは"-"をXMetaL上で表示するようにしてみます.これなら見てすぐ意味がわかります.
 
XMetaLの表示の制御はCSSで行います.このDTDの場合、上述のフォルダにあるカスタマイズ用のantenna_topic_ditabase-specialized.cssに次のような記述を加えます.
@charset "utf-8";
check[value="yes"]:before{
 font-family:Wingdings;
 font-size:1.5em;
 color:#0000FF;
 content: "ü";
}
check[value="no"]:before{
 font-family:Wingdings;
 font-size:1.5em;
 color:#0000FF;
 content: "û";
}
check[value="dc"]:before{
 font-family:Arial;
 font-size:1.5em;
 color:#0000FF;
 content: "-";
}
そうすると、空要素を示す◇の前に@valueにあったマークが表示がされるようになります.
 
イメージ 2
 
CSSで表示をカスタマイズできるのは強力ですね.こんどはoXygenも出来るかどうか試してみたいと思います.