Top / Relaxer / log4j.dtd

Log4jのXML形式のConfigファイルをRelaxerを用いて入出力できれば便利だなぁと思って色々試行錯誤したときのメモ。

要件

  • Log4jの制御をWEB上で行えるようにしたい。
  • Log4jの状態をWEB上で確認できるようにしたい。

メモ

幸いlog4j.dtdがあるのでここからRELAXNGスキーマを作ればよいと思ったんだけど、log4j.dtdがDTDのくせに名前空間を考慮して作成されているみたいで、dtdInstやDTD2RELAXがエラーになっちゃう。最終的にはTrangを使用するのがよいという結論に落ち着きました。

Trangをつかってみる

Trangよりダウンロード。で、

java -jar ./trang.jar log4j.dtd log4j.rng <- 全く元のlog4j.dtdです
relaxer -java -java.package:nu.mine.kino.log4j.binding
        -java.xml.namespace log4j.rng <- 上で作成したlog4j.rngです。

でOKでした。いままでなにやってたんだろー。。。。

ようするに

参考
RELAX分割検証参照モデル

以下、試行錯誤

log4j.dtd -> log4j.rngに変換したい。

やり方は

  • log4j.dtdは名前空間込みでdtd定義されているので要素名のlog4j:などを消去*1*2
  • DTDinstで中間ファイルを作成
    java -jar dtdinst.jar log4j.dtd > log4.tmp.xml
  • Xalanで変換(xslはDTDinstに添付されている)
  • ちょっと古いバージョンでrngが作成されるのと、また、
     <start>
       <ref name="hogehoge"/>
     </start>
    が出力されないので、適当に修正。。
  • relaxerでJavaクラス生成
    relaxer -java.package:nu.mine.kino.binding.log4j
            -dir:../source/nu/mine/kino/binding/log4j log4j.rng 

こうやると何故かクラス名にElement..ってprefixがついちゃう。けすにはrngのなかのrefを置換かぁ??


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Relaxer / log4j.dtd

現在のアクセス:7608


*1 log4j.dtdはlog4jのtarに入ってる
*2 こうした瞬間にlog4jの名前空間とまざっちゃうよなぁ

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2004-11-25 (木) 20:33:31 (7089d)