#topicpath ---- //ここにコンテンツを記述します。 #contents ***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>[いわゆるURI(JDBCに渡すヤツね)]</uri> <table>test</table> <username></username> <password/> <driver>org.postgresql.Driver(<-JDBCに渡すヤツね)</driver> <classpath>[たとえば]c:\hoge\postgresql.jar</classpath> </rjdbc> んで relaxer -rng test.rjdbc とやるとtest.rngが生成された!JDBC経由でRDBMSのスキーマを参照し、それようのRelaxNGファイルを生成しているようだ。。恐るべし。。((インピーダンスミスマッチする場合はどうなるのかぁ?)) 参考 http://www.asahi-net.or.jp/~dp8t-asm/java/tools/Relaxer/man_ja.html **文法覚え書き [#j68fcd6e] ***0 or 1 (optional) [#r93b8a03] 基本的に要素の個数の定義は、その定義を <optional> <zeroOrMore> <oneOrMore> などでくくってあげることで表現する。たとえば <element name="menubar"> <zeroOrMore> <- ココ <ref name="menu"/> </zeroOrMore> <- ココ </element> などのように。 あってもなくてもよい要素(0 or 1) (DTDの?)は <optional> でくくればよい。 ***0...n (zeroOrMore) [#tf290aba] 0...n の要素 (DTDの*)は <zeroOrMore> でくくればよい。 ***1...n (oneOrMore) [#z63d447e] 1...n の要素 (DTDの+)は <oneOrMore> でくくればよい。 ***属性の定義 [#r72ef7d7] 属性は <element name="item"> <attribute name="className"> <data type="token"/> </attribute> <data type="token"/> </element> と書く。((要素の定義と同じだ。)) ***あってもなくてもよい属性 [#p7421550] 要素と同様、 <element name="item"> <optional> <attribute name="className"> <data type="token"/> </attribute> </optional> <data type="token"/> </element> optionalでくくるだけ。簡単。 ***要素の選択 [#ue889951] たとえばmenuタグでもitemタグでもどちらでもよいとき、つまり <!ELEMENT menu (title, (item | menu)*)> は <define name="menu"> <element name="menu"> <element name="title"> <data type="token"/> </element> <zeroOrMore> <choice> <-選択 <ref name="menu"/> <- menu か <element name="item"> <- item のどちらか <data type="token"/> </element> </choice> </zeroOrMore> </element> </define> とかく。 ***参考にしたサイト [#rd63e82a] http://www.atmarkit.co.jp/fxml/rensai2/xmltool04/02.html ---- この記事は #vote(おもしろかった,そうでもない) #comment #topicpath SIZE(10){現在のアクセス:&counter;}