モジュール java.xml
パッケージ javax.xml.validation

クラスValidator


  • public abstract class Validator
    extends Object
    Schemaと照合してXMLドキュメントをチェックするプロセッサです。

    バリデータ・オブジェクトはスレッドセーフではなく、再入不可能です。 つまり、アプリケーション側で、どのような場合でも1つのValidatorオブジェクトが複数のスレッドから使用されることがないようにする必要があります。また、validateメソッドが呼び出されている間、アプリケーションは再帰的にvalidateメソッドを呼び出すことができません。

    導入されたバージョン:
    1.5
    • コンストラクタの詳細

      • Validator

        protected Validator()
        派生クラスのコンストラクタです。

        このコンストラクタは何も行いません。

        派生クラスでは、null ErrorHandlerおよびnull LSResourceResolverを持つValidatorオブジェクトを作成する必要があります。

    • メソッドの詳細

      • reset

        public abstract void reset()
        このValidatorを元の構成にリセットします。

        Validatorは、Schema.newValidator()で作成された時点の状態にリセットされます。reset()は、既存のValidatorの再使用を許可するように設計されているため、新しいValidatorの作成に関連するリソースを節約できます。

        Validatorをリセットした場合、同じLSResourceResolverまたはErrorHandler Object (たとえば、Object.equals(Object obj))を持つことは保証されません。 機能的に同じLSResourceResolverおよびErrorHandlerを持つことは保証されます。

      • validate

        public abstract void validate​(Source source,
                                      Result result)
                               throws SAXException,
                                      IOException
        指定された入力を検証し、追加された検証結果を指定された出力に送ります。

        このメソッドは受け付けるSource/Resultの型に関して、次の制約を設けています。

        受け付けるSource /Result
        StreamSource SAXSource DOMSource StAXSource
        null OK OK OK OK
        StreamResult OK IllegalArgumentException IllegalArgumentException IllegalArgumentException
        SAXResult IllegalArgumentException OK IllegalArgumentException IllegalArgumentException
        DOMResult IllegalArgumentException IllegalArgumentException OK IllegalArgumentException
        StAXResult IllegalArgumentException IllegalArgumentException IllegalArgumentException OK

        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 - ErrorHandlerSAXExceptionをスローした場合、または致命的エラーが発見され、ErrorHandlerが正常に復帰した場合。
        IOException - バリデータがSAXSourceを処理中で、ベースとなるXMLReaderIOExceptionをスローした場合。
        NullPointerException - sourceパラメータがnullである場合。
        関連項目:
        validate(Source source)
      • setErrorHandler

        public abstract void setErrorHandler​(ErrorHandler errorHandler)
        validateメソッドの呼出しで発生したエラーを受け取るようにErrorHandlerを設定します。

        エラー・ハンドラを使用して、検証時のエラー処理プロセスをカスタマイズできます。 ErrorHandlerを設定すると、検証で発見されたエラーはまずErrorHandlerに送られます。

        エラー・ハンドラはハンドラからSAXExceptionをスローして、検証をただちに中断することができます。 または、エラーを画面に出力したり、ErrorHandlerから正常に戻って検証を続行させたりすることもできます。

        ThrowableErrorHandlerからスローされると、validateメソッドの呼出し元には同じThrowableオブジェクトがスローされます。

        Validatorは、最初にErrorHandlerへ報告してからでないと、SAXExceptionをスローすることができません。

        ErrorHandlerがnullの場合、実装は次のErrorHandlerが設定されたかのように動作します。

         class DraconianErrorHandler implements ErrorHandler {
             public void fatalError( SAXParseException e ) throws SAXException {
                 throw e;
             }
             public void error( SAXParseException e ) throws SAXException {
                 throw e;
             }
             public void warning( SAXParseException e ) throws SAXException {
                 // noop
             }
         }
         

        新しいValidatorオブジェクトが作成されると、最初にこのフィールドはnullに設定されます。

        パラメータ:
        errorHandler - 設定する新しいエラー・ハンドラ。 このパラメータはnullも可。
      • setResourceResolver

        public abstract void setResourceResolver​(LSResourceResolver resourceResolver)
        検証時のリソース解決をカスタマイズするようにLSResourceResolverを設定します。

        Validatorは、検証中に外部リソースの場所を確認する必要があるときにLSResourceResolverを使用しますが、外部リソースの検索を厳密に構成するものはスキーマ言語により異なります。

        LSResourceResolverがnullの場合、実装は次のLSResourceResolverが設定されたかのように動作します。

         class DumbLSResourceResolver implements LSResourceResolver {
             public LSInput resolveResource(
                 String publicId, String systemId, String baseURI) {
        
                 return null; // always return null
             }
         }
         

        LSResourceResolverRuntimeException (またはその派生クラスのインスタンス)をスローすると、Validatorは構文解析を異常終了し、validateメソッドの呼出し元は同じRuntimeExceptionを受け取ります。

        新しいValidatorオブジェクトが作成されると、最初にこのフィールドはnullに設定されます。

        パラメータ:
        resourceResolver - 設定する新しいリソース・リゾルバ。 このパラメータは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(String, boolean)
      • 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である場合。
        関連項目:
        getFeature(String)
      • 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である場合。
        関連項目:
        setProperty(String, Object)