6.10 javax.xml.validationパッケージに関する注意事項
javax.xml.validationパッケージに関する注意事項を次の表に示します。
項番 |
注意事項 |
---|---|
1 |
マルチスレッドプログラミングをする場合,SchemaFactoryクラス,Validatorクラス,ValidatorHandlerクラス,TypeInfoProviderクラスはスレッドセーフではありません。したがって,各スレッドは排他的にこれらのオブジェクトにアクセスするようにしてください。 |
2 |
SchemaFactoryクラスのnewInstance(String schemaLanguage)メソッドの引数に指定可能なURIは"http://www.w3.org/2001/XMLSchema"だけです。 |
3 |
SchemaFactoryクラスのisSchemaLanguageSupportedメソッドには, "http://www.w3.org/2001/XMLSchema"を指定してください。その他のスキーマ言語を指定した場合は,falseが戻ります。 |
4 |
SchemaFactoryクラスのnewSchema(Source[] schemas)メソッドの引数schemasの配列要素には,それぞれ異なるtargetNamespaceを持つスキーマ文書を指定してください。同一のtargetNamespaceを持つスキーマ文書,またはtargetNamespaceを持たないスキーマ文書を複数個指定すると,インデックスの小さい配列要素のスキーマ文書が優先されます。 |
5 |
次の条件でSchemaFactoryクラスのnewSchema(Source[] schemas)メソッドを実行すると,例外が発生しない場合があります。
この問題は,次のようにして回避できます。
|
6 |
Validatorクラスのvalidateメソッドによって,ID型の属性の定義を含むスキーマ文書を用いてXML文書を検証する場合は,validate(DOMSource, DOMResult)ではなく,validate(SAXSource),validate(DOMSource),validate(SAXSource, SAXResult)のどれかのメソッドを使用してください。 |
7 |
次の条件がすべて重なるとき,Validatorクラスのvalidate(Source source, Result result)メソッドを実行すると,DOMException例外が発生する場合があります。
したがって,2.のDocumentオブジェクトには子ノードを持たせないようにしてください。 |
8 |
スキーマ文書の中にxsd:ENTITY型,およびxsd:ENTITIES型が含まれるとき,ValidatorHandlerクラスを用いたスキーマ検証はサポートしていません。このような場合は,例えばValidatorクラスなどのほかの方法でスキーマ検証するようにしてください。 |
9 |
スキーマ文書で定義されていない要素および属性から取得したTypeInfoオブジェクトは,妥当性検証失敗時には,xsd:anyType型のTypeInfoオブジェクトと同じになります。 |
10 |
Validatorクラスのvalidate(Source)およびvalidate(Source, Result)の引数SourceにDOMSourceオブジェクトを指定する場合,DOMSourceオブジェクトが保持するNodeオブジェクトは,次に示すすべての条件に従う必要があります。
|
11 |
Validatorクラスのvalidate(Source),validate(Source, Result)の引数SourceにSAXSourceオブジェクトを指定する場合に,そのSAXSourceオブジェクトがXMLReaderオブジェクトを使用するとき,XMLReaderオブジェクトは次に示すすべての条件に従う必要があります。
|
12 |
次の条件がすべて重なるとき,例外コードがNO_MODIFICATION_ALLOWED_ERRであるDOMException例外が発生する場合があります。
|
13 |
javax.xml.validation.SchemaFactoryクラスのnewSchemaメソッドに,XMLReaderを設定したSAXSourceを指定する場合,指定するXMLReaderは次の条件に従う必要があります。
|
14 |
Validatorクラスのvalidate(Source, Result)メソッドの引数に,StAXSourceとStAXResultを指定する場合,StAXSourceとStAXResultには同じエンコーディングを指定してください。 |
15 |
[条件] ValidatorHandlerに設定したContentHandlerのendElementイベントでjavax.xml.validation. TypeInfoProviderクラスのgetElementTypeInfo()メソッドを実行する場合です。 [XML Processorの動作] IllegalStateException例外がスローされます。TypeInfoオブジェクトは返されません。 |