6.20.2 スキーマコンパイラに関する注意事項
スキーマコンパイラに関する注意事項を次の表に示します。
項番1〜項番28の注意事項に該当するスキーマは,スキーマコンパイラで処理しないでください。項番29〜項番44については,注意事項に留意して使用してください。
項番 |
注意事項 |
---|---|
1 |
[条件] 繰り返し指定のある内容モデルに次のすべての条件が該当する場合です。
(例) <xs:complexType> <xs:sequence maxOccurs="unbounded"> <xs:element name="A" type="xs:string" /> <xs:element name="B" type="xs:int" nillable="true" /> <xs:element name="C" type="xs:float" nillable="true"/> <xs:element name="D" type="xs:double" /> </xs:sequence> </xs:complexType> [XML Processorの動作] コレクションの最適化を適用します。@XmlElementRefs/@XmlElementRefではなく@XmlElements/@XmlElementでアノテートされたコレクションを出力します。この出力javaソースを使用してアンマーシャル・マーシャルを実行した場合,不正な動作をすることがあります。 |
2 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] エラーが発生します。 (例) [ERROR] .\hitachi\com1\ObjectFactory.java(指定されたパスが見つかりません。[errno=3, syscall=CreateFileW]) |
3 |
[条件] xs:schema要素のtargetNamespace属性に指定したURIを":"または"/"で分割した文字列の先頭文字が,次のすべての条件に該当する場合です。
[XML Processorの動作] 不正なパッケージ名であるというエラーが発生します。 (例) [ERROR] The package name 'publicid.__-.w3c.dtd_html_4_01.en' used for this schema is not a valid package name. |
4 |
[条件] xs:schema要素のtargetNamespace属性およびxmlns属性に指定するURIが,次の文字だけで構成されている場合です。
[XML Processorの動作] java.lang.ArrayIndexOutOfBoundsExceptionなどの,規定されていない例外が発生する場合があります。 |
5 |
[条件] 次のどちらかの条件に該当する場合です。
[XML Processorの動作] 1つの一般的内容プロパティではなく,複数のプロパティの生成を試みて,エラーが発生します。一般的内容プロパティの詳細については,JSR 222 The Java Architecture for XML Binding 2.1の6.12.3を参照してください。 (例) [ERROR] Property "Any" is already defined. Use <jaxb:property> to resolve this conflict. なお,jaxb:propertyカスタムバインディングを指定し,複数の@XmlAnyElement注釈されたプロパティを出力したjavaソースを使用してアンマーシャル・マーシャルを実行した場合,不正な動作をすることがあります。 |
6 |
[条件] 次のどちらかの条件に該当する場合です。
[XML Processorの動作] 派生した型の子要素を取得するメソッドが生成されません。 |
7 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] 条件1.のname属性を基に,Javaクラスの列挙定数名を生成します。 |
8 |
[条件] 次のどれかに示すXMLスキーマ要素に,カスタムバインディングを指定する場合です。
[XML Processorの動作] このようなスキーマ文書を用いた場合のJAXB実行時の動作は規定されていません。 |
9 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] カスタムバインディングが不正であるというエラーが出力されます。 (例) [ERROR] compiler was unable to honor this class customization. It is attached to a wrong place, or its inconsistent with other bindings. |
10 |
[条件] 匿名複合型で型定義されている局所要素定義(=xs:complexTypeを子要素として持つxs:element)に対しjaxb:classカスタムバインディングを指定する場合です。 [XML Processorの動作] エラーが出力されます。 (例) Exception in thread "main" java.lang.IllegalArgumentException: Illegal class inheritance loop. Outer class <要素名> may not subclass from inner class: <要素名> |
11 |
[条件] 複合型定義のxs:restrictionの中で指定されたxs:choice, xs:sequenceまたはxs:allに対し,jaxb:propertyカスタムバインディングを指定する場合です。 [XML Processorの動作] エラーが出力されます。 (例) [ERROR] compiler was unable to honor this property customization. It is attached to a wrong place, or its inconsistent with other bindings. |
12 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] KECX06051-E cvc-enumeration-valid: Value 'true' is not facet-valid with respect to enumeration '[false]'. It must be a value from the enumeration.が発生します。 map属性に指定した"true"は正しい値ですが,xs:complexType要素にjaxb:typesafeEnumClassカスタムバインディングを指定すること自体が不正です。 |
13 |
[条件] 次のどちらかの条件に該当する場合です。
[XML Processorの動作] エラーは発生しないで,javaクラスが生成されます。 |
14 |
[条件] jaxb:globalBindingsのcollectionType属性に空文字列を指定する場合です。 [XML Processorの動作] java.lang.StringIndexOutOfBoundsException例外をスローします。 |
15 |
[条件] 次のどれかの条件に該当する場合です。
[XML Processorの動作] エラーは発生しません。このような場合のJAXB実行時の動作は規定されていません。 |
16 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] エラーは発生しません。このような場合のJAXB実行時の動作は規定されていません。 |
17 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] エラーが出力されます。map属性を指定していない場合,デフォルトの動作は,"true"または"1"を指定したときの動作となります。 |
18 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] エラーは出力されないで,プロパティを含むjavaソースが出力されます。 |
19 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] エラーは出力されないで,JAXBElementを含むjavaソースが出力されます。 |
20 |
[条件] 次のどちらかの条件に該当する場合です。
[XML Processorの動作] エラーは出力されないで,javaソースが出力されます。 |
21 |
[条件] jaxb:propertyカスタムバインディングのattachmentRef属性を使用する場合です。 [XML Processorの動作] スキーマコンパイル中に次のエラーが出力されます。 [ERROR] KECX06031-E cvc-complex-type.3.2.2: Attribute 'attachmentRef' is not allowed to appear in element 'jaxb:property'. |
22 |
[条件] jaxb:globalBindingsカスタムバインディングのunderscoreBinding属性に,"asWordSeparator"または"asCharInWord"以外の文字列を指定する場合です。 [XML Processorの動作] NullPointerException例外をスローします。 |
23 |
[条件] jaxb:globalBindingsカスタムバインディングのtypesafeEnumMemberName属性に,"skipGeneration"を指定する場合です。 [XML Processorの動作] 次のエラーが出力されます。 KECX06051-E cvc-enumeration-valid: Value 'skipGeneration' is not facet-valid with respect to enumeration '[generateError, generateName]'. It must be a value from the enumeration. [回避策] typesafeEnumMemberName属性を指定しない場合,デフォルトの動作は"skipGeneration"の動作となります。 |
24 |
[条件] 次のjaxb:globalBindingsカスタムバインディングのカスタム化指定を,複数指定した場合です。
[XML Processorの動作] このような場合のJAXB実行時の動作は規定されていません。 |
25 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] primitive型ではなく,ラッパークラス型で出力されます。 |
26 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] エラーは発生しません。このような場合のJAXB実行時の動作は規定されていません。 |
27 |
[条件] バイナリ型の単純内容を持ったxs:complexTypeに,jaxb:inlineBinaryDataを指定する場合です。 [XML Processorの動作] カスタムバインディングが不正であるというエラーが出力されます。 (例) [ERROR] compiler was unable to honor this inlineBinaryData customization. It is attached to a wrong place, or its inconsistent with other bindings. |
28 |
[条件] 次のどれかの条件に該当する場合です。
[XML Processorの動作] エラーは発生しません。 |
29 |
標準仕様では,カスタムバインディングjaxb:javadocを用いることで,生成されるJavaクラスのドキュメンテーションコメントの内容をカスタマイズする方法が規定されています。jaxb:javadocを指定しない場合でも,デフォルトのドキュメンテーションコメントが生成されますが,その内容は標準仕様では規定されていません。 |
30 |
[条件] xs:totalDigits,xs:maxExclusive,xs:maxInclusive,xs:minExclusive,xs:minInclusiveファセットのどれかで指定された範囲が,intまたはlongの範囲に収まるような単純型定義が存在する場合です。 [XML Processorの動作] xs:totalDigitsファセットを用いた場合は,常にjava.math.BigIntegerが生成されます。 xs:maxExclusive,xs:maxInclusive,xs:minExclusive,xs:minInclusiveファセットを用いた場合は,JSR 222 The Java Architecture for XML Binding 2.1の6.2.2に示されているアルゴリズムに従ってJava型が生成されます。 |
31 |
[条件] 次のどれかを含むモデルグループ定義が存在する場合です。
[XML Processorの動作] 作成されるクラス名に,モデルグループ名は付けられません。 |
32 |
[条件] xs:element局所要素定義にjaxb:classカスタムバインディングを指定する場合です。 [XML Processorの動作] JAXBElement<T>を継承する,作成されたクラスを返す要素ファクトリメソッドを作成します。 (例) public class ObjectFactory { public Base.Bar createBaseBar(String value) { return new Base.Bar(value); } ・・・・ }
|
33 |
[条件] 次のすべての条件に該当する場合です。
[XML Processorの動作] 要素定義に対応する要素ファクトリメソッドは生成されますが,そのファクトリメソッドを使用してインスタンスを生成できません。 |
34 |
[条件] スキーマ文書が次のどちらかに該当する場合です。
[XML Processorの動作] 名前衝突エラーにならないで,@XmlElementRef/@XmlElementRefsでアノテートされた一般的内容リストとして処理されます。内容リストの詳細については,JSR 222 The Java Architecture for XML Binding 2.1の6.12.3を参照してください。 |
35 |
[条件] xs:anyのprocessContents属性に"lax"または"skip"を指定する場合です。 [XML Processorの動作] バインドされるプロパティのデータ型は,processContents属性が"lax"の場合,java.lang.Object型,"skip"の場合org.w3c.dom.Element型となります。 |
36 |
[条件] xs:element要素のfixed属性を指定する場合です。 [XML Processorの動作] 指定したfixed属性の値は,生成されるJavaソースの@XmlElementおよび@XmlElementDeclのdefaultValue要素に反映されません。 [回避策] fixed属性の値をデフォルト値として反映させたい場合は,fixed属性ではなくdefault属性を指定してください。 |
37 |
[条件] xs:enumeration要素のvalue属性に,生成されるjava定数識別子が衝突するような文字列を指定する場合です。 (例) 「name-with-dashes」と「name_with_dashes」 [XML Processorの動作] 列挙定義を出力しません。エラーは発生しません。 |
38 |
[条件] xs:schema要素のtargetNamespace属性に指定したURIが,次のすべての条件に該当する場合です。
[XML Processorの動作] 生成されるjavaソースのパッケージ名はドメイン名が逆順にされ,"www."は削除されます。 |
39 |
[条件] 要素名や属性名に次のどれかを指定する場合です。
[XML Processorの動作] 名前衝突エラーにならないで,フィールドやメソッド名が生成されます。javaキーワードやjavaリテラルの場合"_"を付けたフィールド名が作成されます。 |
40 |
[条件] 再定義された複合型定義が存在する場合です。 [XML Processorの動作] 再定義された複合型定義は,"_"が付加されたクラス名でなく,接頭辞Originalが付加されたクラス名が生成されます。 |
41 |
[条件] 次のすべての条件が該当する場合です。
[XML Processorの動作] モデルグループ定義はクラスにマッピングされないため,jaxb:modelGroupNameの指定は生成されるソースに反映されません。 |
42 |
[条件] 次のすべての条件が該当する場合です。
[XML Processorの動作] 仕様書と異なるjava識別子が生成されます。 (例)
|
43 |
[条件] 次のすべての条件が該当する場合です。
[XML Processorの動作] 適切なjava識別子への変換が実施されません。 |
44 |
[条件] jaxb:globalBindingsカスタムバインディングで,uid属性のないjaxb:serializableを指定する場合です。 [XML Processorの動作] エラーは発生しません。このような場合のJAXB実行時の動作は規定されていません。 |