- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
//ここにコンテンツを記述します。
#contents
**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
な感じ。
***XMLファイルへの参照を取得する。 [#ca33b1fa]
Relax NGのスキーマファイル(*.rng)からあらかじめjavaファイルを作成しておきます。
ルートノードがhogeだとすると
Hoge hoge=new Hoge([ファイルパス]);
としてインスタンスを作成すれば、xmlファイルへの参照の作成は完了です。
***文字列を取得する。 [#be7928af]
DOMを用いていると、XMLの内容をコンソールに書き出すだけでも面倒ですが、Relaxerでは一つのメソッドでStringインスタンスを取得することができます。
System.out.println(hoge.makeTextDocument());
***XMLの内容をファイルに書き出す [#j7cc7f62]
BufferedWriter writer =
new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(new File([パス])),"EUC-JP"));
writer.write(URelaxer.doc2String4Print(hoge.makeDocument(), "EUC-JP"));
writer.close();
***既存のデータベース用のRelaxNGスキーマを生成する(書き途中!) [#p08d26d9]
rjdbcファイルを作成し(内容は下記参照)
<rjdbc>
<uri>jdbc:postgresql://[hostname]:5432/[DBName](JDBCに渡すヤツね)</uri>
<table>test</table>
<username></username>
<password/>
<driver>org.postgresql.Driver(<-JDBCに渡すヤツね)</driver>
<classpath>[たとえば]c:\hoge\jdbc7.2dev-1.2.jar</classpath>
</rjdbc>
んで
relaxer -rng test.rjdbc
とやるとtest.rngが生成されました。JDBC経由でRDBMSのスキーマを参照し、それようのRelaxNGファイルを生成しているもよう。。((インピーダンスミスマッチする場合はどうなるのかぁ?))と思ってたんだけど、このrngファイルをもとに
relaxer -java -jdbc test.rng
とやっても、元のデータベースのddlはできないみたい。どうも使い道が違うのかなぁ。。
でも[[ここ:http://www2.xml.gr.jp/log.html?MLID=relax-users-j&N=2735]]をみるとそんなようなことを書いてあるしなあ。
***参考にしたサイト [#rd63e82a]
http://www.asahi-net.or.jp/~dp8t-asm/java/tools/Relaxer/man_ja.html
http://www.atmarkit.co.jp/fxml/rensai2/xmltool04/02.html
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}