- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
dtdInstを使ったり、色々やってみたんですが、結論としてTrangを使用するのがよいみたいです。
***Trangをつかえば楽?? [#gfc918cd]
Log4jのXML形式のConfigファイルをRelaxerを用いて入出力できれば便利だなぁと思って色々試行錯誤したときのメモ。
***要件 [#z820428f]
-Log4jの制御をWEB上で行えるようにしたい。
-Log4jの状態をWEB上で確認できるようにしたい。
***メモ [#l7829f8f]
幸いlog4j.dtdがあるのでここからRELAXNGスキーマを作ればよいと思ったんだけど、log4j.dtdがDTDのくせに名前空間を考慮して作成されているみたいで、dtdInstやDTD2RELAXがエラーになっちゃう。最終的にはTrangを使用するのがよいという結論に落ち着きました。
***Trangをつかってみる [#gfc918cd]
[[Trang:http://www.thaiopensource.com/relaxng/trang.html]]よりダウンロード。で、
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です。
relaxer -java -java.package:nu.mine.kino.log4j.binding
-java.xml.namespace log4j.rng <- 上で作成したlog4j.rngです。
でOKでした。いままでなにやってたんだろー。。。。
ようするに
-[[RELAX NG 入門:QName:http://www.kohsuke.org/relaxng/tutorial.ja.html#IDALJZR]]に対応してるってことかな??
:参考|[[RELAX分割検証参照モデル:http://www.xml.gr.jp/relax/dandVRefereceModel-j.html]]
**以下、試行錯誤 [#q8e61ff5]
***log4j.dtd -> log4j.rngに変換したい。 [#a9211394]
やり方は
-log4j.dtdは名前空間込みでdtd定義されているので要素名のlog4j:などを消去((log4j.dtdはlog4jのtarに入ってる))((こうした瞬間にlog4jの名前空間とまざっちゃうよなぁ))。
-[[DTDinst:http://www.thaiopensource.com/relaxng/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を置換かぁ??
***名前空間を有効にする [#c57e01b7]
ファイルを出力するときに名前空間が出力されないなあと思っていたら、Relaxerコマンド時に指定が必要みたいです。たとえば
relaxer -java.package:nu.mine.kino.log4j.binding -dir:.
-java.xml.namespace log4j.rng
な感じ。
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}