名前空間を有効にする †ファイルを出力するときに名前空間が出力されないなあと思っていたら、Relaxerコマンド時に指定が必要みたいです。たとえば relaxer -java.package:nu.mine.kino.log4j.binding -dir:. -java.xml.namespace log4j.rng な感じ。 XMLファイルへの参照を取得する。 †Relax NGのスキーマファイル(*.rng)からあらかじめjavaファイルを作成しておきます。 ルートノードがhogeだとすると Hoge hoge=new Hoge([ファイルパス]); としてインスタンスを作成すれば、xmlファイルへの参照の作成は完了です。 文字列を取得する。 †DOMを用いていると、XMLの内容をコンソールに書き出すだけでも面倒ですが、Relaxerでは一つのメソッドでStringインスタンスを取得することができます。 System.out.println(hoge.makeTextDocument()); XMLの内容をファイルに書き出す †BufferedWriter writer = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(new File([パス])),"EUC-JP")); writer.write(URelaxer.doc2String4Print(hoge.makeDocument(), "EUC-JP")); writer.close(); 既存のデータベース用のRelaxNGスキーマを生成する(書き途中!) †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ファイルを生成しているもよう。。*1と思ってたんだけど、このrngファイルをもとに relaxer -java -jdbc test.rng とやっても、元のデータベースのddlはできないみたい。どうも使い道が違うのかなぁ。。 でもここをみるとそんなようなことを書いてあるしなあ。 参考にしたサイト †http://www.asahi-net.or.jp/~dp8t-asm/java/tools/Relaxer/man_ja.html http://www.atmarkit.co.jp/fxml/rensai2/xmltool04/02.html この記事は 現在のアクセス:6022 |