###前提・実現したいこと
下記ディレクトリ構成のXSDファイル構成において
schemaLocationに手を加えずに参照先を変え、
Antからのxjc実行によるJavaのクラスファイルを生成したいと考えております。
※ファイル自体は外部からの提供ファイルのため、変更を加えない方向で検討したいと思っております。
※B.xsdのschemaLocationをディレクトリに合せた変更をすれば正常にクラスファイル生成ができることは確認しています。
[フォルダ階層] /resource ├A.xsd └hoge └B.xsd [A.xsd] <?xml version="1.0" encoding="utf-8" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:simpleType name="A"> ~中略~ </xsd:simpleType> <xsd:attributeGroup name="AattbuteG"> <xsd:attribute name="Afoo" type="xsd:int" /> </xsd:attributeGroup> </xsd:schema> [B.xsd] <?xml version="1.0" encoding="utf-8" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:include schemaLocation="A.xsd" /> <xsd:element name="BTest"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="A"> <xsd:attributeGroup ref="AattbuteG" /> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:schema>
- イタリックテキスト
B.xsdのschemaLocationを変更することなく、
xjc実行時にA.xsdを../A.xsdに読み替える、
又は、
予めA.xsdをパスに保持しておき、B.xsdが読み込まれた際に、パスから取得するような動作
もしくは、
C.xsdを自作し、A.xsdとB.xsdの階層関係を保持して読み込ませる等
は可能でしょうか?
###発生している問題・エラーメッセージ
特に何も指定せず、B.xsdのxjc実行を行うと下記のエラーが発生します。
WARNING] schema_reference.4: Failed to read schema document 'A.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not xsd:schema.
[exec] line 2 of file:/ファイルパス/B.xsd
###該当のソースコード
<exec executable="xjc" resultproperty="xjc.result"> <arg line="-d resource"/> <arg line="-extension"/> </exec>
###試したこと
【1】
B.xsdのschemaLocationを"../A.xsd"と指定し、xjcを実行し、正常に作成ができることは確認済み。
※但し、外部ファイルのため、極力修正したくありません。
【2】
C.xsdを作成し、includeでA.xsdとB.xsdをフォルダパスを指定し、xjc実行、同様のエラーが発生しました。
###補足情報(言語/FW/ツール等のバージョンなど)
xjc -version
xjc version "JAXB 2.1.10 in JDK 6"
JavaTM Architecture for XML Binding(JAXB) Reference Implementation, (build JAXB2.1.10 in JDK 6)
java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
Eclipse Platform
Version: 3.5.2
Build id: M20100211-1343
回答1件
あなたの回答
tips
プレビュー