- ベストアンサー
XMLShemaからXML文書を作成
こんにちは VB2005でXML文書をアプリを作成指定しています。 XML文書を読み込んでバリデーションをかけて、OKであれば処理続けていくプログラムです。 実際の業務でバリデーションのために使用する XMLSchemaをもらったのですが、階層が深くなかなか複雑なようで、 ファイルの数は100個近くあります。 プログラムのテストのために、指定のXMLSchema全ての構造体を反映したXMLファイルを作成したいのですが、 手動ではかなり厳しいです。 ちなみに、メインとなるXSDファイルがありますが、 その中では、子要素となる構造を定義したXSDファイルを importやincludeしているだけです。 このようなXSDファイルを指定して、全ての構造を網羅したXMLファイルを作成してくれるツールは存在しますでしょうか? もしくは、そのようなツールを作成するプログラムのサンプルでも結構です。 以上、よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
昔 XML Schema を扱う仕事をしていた時に,JAXBを使って XML Schema からJavaのコードを自動生成した記憶があるのですが…。 http://www.stackasterisk.jp/tech/java/jaxb01_01.jsp や http://www.atmarkit.co.jp/fxml/rensai2/xmltool02/01.html は参考にならないでしょうか? 後者ではMarshallerを使ってXML文書を出力する例も紹介しているので,もしかしたらお役に立つかもしれません。 ただ, > 全ての構造を網羅したXMLファイルを作成してくれる これは無理だと思います。XML Schema には繰り返しやoptionもあるので,一つの文書で全てのパターンを網羅することは無理だと思います。また,複数の文書であったとしても,例えば繰り返しを何回行うかには無限のパターンがあり得るため,やはり全てのパターンを網羅することは難しいと思います。 ただ,上述のJAXBを使えば,その手間はかなり減らせるかもしれません。 JAXBはJWSDPの一部なので,参考URLでダウンロードできます。
その他の回答 (2)
- aton
- ベストアンサー率47% (160/334)
No.2です。 > やりたいことは、XML Schema に定義されている全てのElementとAttributeの > タグ名称と親子関係を表すXMLファイルを作りたいということで、 > 繰返しの箇所は発生回数一回として扱いたいです。 > これも無理でしょうか・・・ スキーマ定義の中に xsd:choice が存在する場合,いずれにせよファイル1つの作成で済ませることは無理だと思いますが,全ての要素の出現回数を1に固定してよいのであれば,有限個のファイルで収めることは可能だと思います。 なお,JAXBはあくまでJavaのソースを自動生成してくれるツールなので,実際にXMLファイルを吐くコードは自分で書く必要があります。その手間がどれくらいになるのかはスキーマの複雑さにもよりますが,人力でXML Schemaをパースするよりは間違いが少なくなり,手間も省けると思います。 例えば,XHTMLのようなかなり複雑な構造でも,JAXBを使って文書生成している人が居るようなので, http://www.ruimo.com/2006/03/03/1141390674449.html 試してみる価値はあると思います。
お礼
ありがとうございます。 JAXBを使ってやってみようと思ったのですが、 今回作ろうとしているXMLSchemaからXML文書を作成するツールはいろんなところで使われるようで、 そのマシンにJAVAがインストールされていることを前提にするのはNGとのことでした・・・ ですので、他の方法を探してみます。 せっかく紹介してくださったのにすみません。 ありがとうございました。
XSDもXMLの一種でしょ? http://www.google.co.jp/search?q=XSD%20XML&hl=ja&lr=lang_ja 何ならxsltで整形できるんじゃない? 処理はそれこそ今時のxslt使えるブラウザで。
お礼
回答ありがとうございます。 お礼が遅くなり申し訳ありません。 XML⇒XMLの変換と考えればよいのでは、と言うことですよね。 考えてみます。ありがとうございました。
お礼
回答ありがとうございます。 JAXBは初めて聞きました・・・。勉強して試してみます。 やりたいことは、XML Schema に定義されている全てのElementとAttributeの タグ名称と親子関係を表すXMLファイルを作りたいということで、 繰返しの箇所は発生回数一回として扱いたいです。 これも無理でしょうか・・・ 無理でしたら、教えていただいたサイトを参考に、一度大まかな全体の構成を作成し、 最終的には人の手でチェックしながら修正していく、と言うことにするしかないのかもしれないですね ありがとうございました。