// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents

dtdInstを使ったり、色々やってみたんですが、結論としてTrangを使用するのがよいみたいです。
***Trangをつかえば楽?? [#gfc918cd]
 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です。



**以下、試行錯誤 [#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;}



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS