Schemaと照合してXMLドキュメントをチェックするプロセッサです。
バリデータ・オブジェクトはスレッドセーフではなく、再入不可能です。 つまり、アプリケーション側で、どのような場合でも1つのValidatorオブジェクトが複数のスレッドから使用されることがないようにする必要があります。また、validateメソッドが呼び出されている間、アプリケーションは再帰的にvalidateメソッドを呼び出すことができません。
- 導入されたバージョン:
- 1.5
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明abstract ErrorHandlerこのValidatorに設定されている現在のErrorHandlerを取得します。booleangetFeature(String name) 機能フラグの値を検索します。getProperty(String name) プロパティ値を検索します。abstract LSResourceResolverこのValidatorに設定されている現在のLSResourceResolverを取得します。abstract voidreset()このValidatorを元の構成にリセットします。abstract voidsetErrorHandler(ErrorHandler errorHandler) validateメソッドの呼出しで発生したエラーを受け取るようにErrorHandlerを設定します。voidsetFeature(String name, boolean value) 機能フラグの値を設定します。voidsetProperty(String name, Object object) プロパティ値を設定します。abstract voidsetResourceResolver(LSResourceResolver resourceResolver) 検証時のリソース解決をカスタマイズするようにLSResourceResolverを設定します。void指定された入力を検証します。abstract void指定された入力を検証し、追加された検証結果を指定された出力に送ります。
-
コンストラクタの詳細
-
Validator
protected Validator()派生クラスのコンストラクタです。このコンストラクタは何も行いません。
派生クラスでは、
nullErrorHandlerおよびnullLSResourceResolverを持つValidatorオブジェクトを作成する必要があります。
-
-
メソッドの詳細
-
reset
public abstract void reset()このValidatorを元の構成にリセットします。Validatorは、Schema.newValidator()で作成された時点の状態にリセットされます。reset()は、既存のValidatorの再使用を許可するように設計されているため、新しいValidatorの作成に関連するリソースを節約できます。Validatorをリセットした場合、同じLSResourceResolverまたはErrorHandlerObject(たとえば、Object.equals(Object obj))を持つことは保証されません。 機能的に同じLSResourceResolverおよびErrorHandlerを持つことは保証されます。 -
validate
public void validate(Source source) throws SAXException, IOException 指定された入力を検証します。これは
nullのresultを持つvalidate(Source source, Result result)の簡易メソッドです。- パラメータ:
source- 検証されるXML。 XMLドキュメントまたはXML要素であることが必要でnullは不可。 下位互換性のために、ドキュメントと要素以外のすべての検証結果は実装に依存している。 実装は、入力を認識し処理するか、IllegalArgumentExceptionをスローする必要がある。- スロー:
IllegalArgumentException-Sourceが検証を実装できないXMLアーティファクトである場合(処理命令など)。SAXException-ErrorHandlerがSAXExceptionをスローした場合、または致命的エラーが検出され、ErrorHandlerが正常に復帰した場合。IOException- バリデータがSAXSourceを処理中で、ベースとなるXMLReaderがIOExceptionをスローした場合。NullPointerException-sourceがnullの場合。- 関連項目:
-
validate
public abstract void validate(Source source, Result result) throws SAXException, IOException 指定された入力を検証し、追加された検証結果を指定された出力に送ります。このメソッドは受け付ける
Source/Resultの型に関して、次の制約を設けています。受け付ける Source/ResultStreamSourceSAXSourceDOMSourceStAXSourcenullOK OK OK OK StreamResultOK IllegalArgumentExceptionIllegalArgumentExceptionIllegalArgumentExceptionSAXResultIllegalArgumentExceptionOK IllegalArgumentExceptionIllegalArgumentExceptionDOMResultIllegalArgumentExceptionIllegalArgumentExceptionOK IllegalArgumentExceptionStAXResultIllegalArgumentExceptionIllegalArgumentExceptionIllegalArgumentExceptionOK 1つの
Sourceを別の種類のResultに検証するには、恒等変換を使用します(TransformerFactory.newTransformer()を参照)。検証で発見されたエラーは指定された
ErrorHandlerに送られます。ドキュメントが有効である、またはドキュメントにいくらかのエラーがあるが、それらはすべて致命的でなく、
ErrorHandlerで例外がスローされていない場合、メソッドは正常に復帰します。- パラメータ:
source- 検証されるXML。 XMLドキュメントまたはXML要素であることが必要でnullは不可。 下位互換性のために、ドキュメントと要素以外のすべての検証結果は実装に依存している。 実装は、入力を認識し処理するか、IllegalArgumentExceptionをスローする必要がある。result- 拡張された可能性のあるXMLを受け取るResultオブジェクト。 呼出し側で必要がなければ、このパラメータはnullも可。DOMResultが使用され、バリデータがDOMSourceからDOMResultへ同じDOMノードを渡すだけのときは(source.getNode()==result.getNode()の場合)、DOMツリー全体がコピーされるか、ソースで指定されたノードが変更されることがある。- スロー:
IllegalArgumentException-ResultタイプがSourceタイプと一致しない場合、またはSourceがXMLアーティファクトである場合は、実装では(たとえば、処理命令)を検証できません。SAXException-ErrorHandlerがSAXExceptionをスローした場合、または致命的エラーが発見され、ErrorHandlerが正常に復帰した場合。IOException- バリデータがSAXSourceを処理中で、ベースとなるXMLReaderがIOExceptionをスローした場合。NullPointerException-sourceパラメータがnullである場合。- 関連項目:
-
setErrorHandler
public abstract void setErrorHandler(ErrorHandler errorHandler) validateメソッドの呼出しで発生したエラーを受け取るようにErrorHandlerを設定します。エラー・ハンドラを使用して、検証時のエラー処理プロセスをカスタマイズできます。
ErrorHandlerを設定すると、検証で発見されたエラーはまずErrorHandlerに送られます。エラー・ハンドラはハンドラから
SAXExceptionをスローして、検証をただちに中断することができます。 または、エラーを画面に出力したり、ErrorHandlerから正常に戻って検証を続行させたりすることもできます。ThrowableがErrorHandlerからスローされると、validateメソッドの呼出し元には同じThrowableオブジェクトがスローされます。Validatorは、最初にErrorHandlerへ報告してからでないと、SAXExceptionをスローすることができません。ErrorHandlerがnullの場合、実装は次のErrorHandlerが設定されたかのように動作します。class DraconianErrorHandler implements
ErrorHandler{ public void fatalError(SAXParseExceptione ) throwsSAXException{ throw e; } public void error(SAXParseExceptione ) throwsSAXException{ throw e; } public void warning(SAXParseExceptione ) throwsSAXException{ // noop } }新しい
Validatorオブジェクトが作成されると、最初にこのフィールドはnullに設定されます。- パラメータ:
errorHandler- 設定する新しいエラー・ハンドラ。 このパラメータはnullも可。
-
getErrorHandler
public abstract ErrorHandler getErrorHandler()このValidatorに設定されている現在のErrorHandlerを取得します。- 戻り値:
- このメソッドは、
setErrorHandler(ErrorHandler)メソッドによって最後に設定されたオブジェクトを返す。または、このValidatorが作成されてから、そのメソッドが呼び出されていない場合はnullを返す。 - 関連項目:
-
setResourceResolver
public abstract void setResourceResolver(LSResourceResolver resourceResolver) 検証時のリソース解決をカスタマイズするようにLSResourceResolverを設定します。Validatorは、検証中に外部リソースの場所を確認する必要があるときにLSResourceResolverを使用しますが、「外部リソースの検索」を厳密に構成するものはスキーマ言語により異なります。LSResourceResolverがnullの場合、実装は次のLSResourceResolverが設定されたかのように動作します。class DumbLSResourceResolver implements
LSResourceResolver{ publicLSInputresolveResource( String publicId, String systemId, String baseURI) { return null; // always return null } }LSResourceResolverがRuntimeException(またはその派生クラスのインスタンス)をスローすると、Validatorは構文解析を異常終了し、validateメソッドの呼出し元は同じRuntimeExceptionを受け取ります。新しい
Validatorオブジェクトが作成されると、最初にこのフィールドはnullに設定されます。- パラメータ:
resourceResolver- 設定する新しいリソース・リゾルバ。 このパラメータはnullも可。
-
getResourceResolver
public abstract LSResourceResolver getResourceResolver()このValidatorに設定されている現在のLSResourceResolverを取得します。- 戻り値:
- このメソッドは、
setResourceResolver(LSResourceResolver)メソッドによって最後に設定されたオブジェクトを返す。または、このValidatorが作成されてから、そのメソッドが呼び出されていない場合はnullを返す。 - 関連項目:
-
getFeature
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException 機能フラグの値を検索します。機能名は完全指定URIです。
Validatorは機能名を認識できますが、一時的にその値を返すことはできません。 機能の値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでしか使用できない場合があります。独自のURIに基づいて作成された名前を使って、実装者が独自の機能を作成することもできます(推奨)。
- パラメータ:
name- 機能名。null以外の完全指定URIで表される。- 戻り値:
- 機能の現在の値(trueまたはfalse)。
- スロー:
SAXNotRecognizedException- 機能値を割り当てられない、または取得できない場合。SAXNotSupportedException-Validatorが機能名を認識するだけで、現時点ではその値を判断できない場合。NullPointerException- nameパラメータがnullである場合。- 関連項目:
-
setFeature
public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException 機能フラグの値を設定します。機能を使用して、
Validatorがスキーマを構文解析する方法を制御できますが、Validatorは特定の機能名を認識する必要はありません。機能名は完全指定URIです。
Validatorは機能の値を表示できますが、現在の値を変更することはできません。 機能の値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでのみ不変または可変である場合があります。- パラメータ:
name- 機能名。null以外の完全指定URIで表される。value- 機能の要求された値(trueまたはfalse)。- スロー:
SAXNotRecognizedException- 機能値を割り当てられない、または取得できない場合。SAXNotSupportedException-Validatorが機能名を認識するだけで、要求された値を設定できない場合。NullPointerException- nameパラメータがnullである場合。- 関連項目:
-
setProperty
public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException プロパティ値を設定します。プロパティ名は完全指定URIです。
Validatorはプロパティ名を認識できますが、現在の値を変更することはできません。 プロパティの値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでのみ不変または可変である場合があります。JAXP 1.5またはそれ以降を実装する実装はすべて、
XMLConstants.ACCESS_EXTERNAL_DTDおよびXMLConstants.ACCESS_EXTERNAL_SCHEMAプロパティをサポートしている必要があります。-
ソースまたはスキーマ・ファイル内の外部DTDへのアクセスが、
XMLConstants.ACCESS_EXTERNAL_DTDプロパティで指定されたプロトコルに制限されます。 このプロパティの制限が原因で検証中にアクセスが拒否された場合は、validate(Source)メソッドによってSAXExceptionがスローされます。schemaLocation属性によって設定された外部参照へのアクセスが、
XMLConstants.ACCESS_EXTERNAL_SCHEMAプロパティで指定されたプロトコルに制限されます。 このプロパティの制限が原因で検証中にアクセスが拒否された場合は、validate(Source)メソッドによってSAXExceptionがスローされます。
- パラメータ:
name- プロパティ名。null以外の完全指定URIで表される。object- 要求されたプロパティ値。- スロー:
SAXNotRecognizedException- プロパティ値を割り当てられない、または取得できない場合。SAXNotSupportedException-Validatorがプロパティ名を認識するだけで、要求された値を設定できない場合。NullPointerException- nameパラメータがnullである場合。
-
-
getProperty
public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException プロパティ値を検索します。プロパティ名は完全指定URIです。
Validatorはプロパティ名を認識できますが、一時的にその値を返すことはできません。 プロパティの値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでしか使用できない場合があります。Validatorは特定のプロパティ名を認識する必要はありません。独自のURIに基づいて作成された名前を使って、実装者が独自のプロパティを作成することもできます(推奨)。
- パラメータ:
name- プロパティ名。null以外の完全指定URIで表される。- 戻り値:
- 現在のプロパティ値。
- スロー:
SAXNotRecognizedException- プロパティ値を割り当てられない、または取得できない場合。SAXNotSupportedException- XMLReaderがプロパティ名を認識するだけで、現時点ではその値を判断できない場合。NullPointerException- nameパラメータがnullである場合。- 関連項目:
-