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

クラスValidatorHandler

java.lang.Object
javax.xml.validation.ValidatorHandler
すべての実装されたインタフェース:
ContentHandler

public abstract class ValidatorHandler extends Object implements ContentHandler
SAXストリームに有効なストリーミング・バリデータ。

ValidatorHandlerオブジェクトはスレッドに対して安全ではなく、再入不可能です。 つまり、アプリケーション側で、どのような場合でも1つのValidatorHandlerオブジェクトが複数のスレッドから使用されることがないようにする必要があります。

ValidatorHandlerは、SAXイベントが関連するSchemaに記述された制約セットに従っているかどうかをチェックします。また、デフォルト値の追加などによって、SAXイベントを変更することもできます。

ValidatorHandlerContentHandlerからの拡張ですが、次のようにベースとなるContentHandlerを洗練させます。

  1. startElementおよびendElementイベントは、urilocalNameおよびqnameのnull以外の文字列を受け取る必要があります。これは、SAXでnullが許可されている場合でも当てはまります。 同様に、ユーザー指定のContentHandlerがこれら3種類のパラメータのnull以外の文字列を受け取ります。
  2. アプリケーションでは、ValidatorHandlerContentHandler.startPrefixMapping(String,String)ContentHandler.endPrefixMapping(String)が正しく呼び出されるようにする必要があります。 同様に、ユーザー指定のContentHandlerがstartPrefixMappingおよびendPrefixMappingイベントを受け取ります。 ValidatorHandlerが追加の名前空間バインディングを導入する場合、ユーザー指定のContentHandlerは追加のstartPrefixMappingおよびendPrefixMappingイベントを受け取ります。
  3. ContentHandler.startElement(String,String,String,Attributes)メソッドのAttributesには、xmlns*属性が含まれる場合と、含まれない場合があります。

startDocumentメソッドが呼び出されるたびにValidatorHandlerは自動的にリセットされます。

認識されるプロパティと機能

この仕様では、ValidatorHandlerのすべての実装で認識する必要がある次の機能を定義しています。

http://xml.org/sax/features/namespace-prefixes

この機能はValidatorHandlerが元のSAXイベント・ストリームに存在しない名前空間バインディングを取得する方法を制御します。 この機能がtrueに設定されている場合は、ユーザーのContentHandlerContentHandler.startElement(String,String,String,Attributes)コールバックのAttributesオブジェクトの対応するxmlns*属性を確認する必要があります。 そうでない場合は、ユーザー指定のContentHandlerに渡されるAttributesxmlns*属性が追加されません。

この切替えにかかわらず、名前空間バインディングは、常にユーザー指定のContentHandlerContentHandler.startPrefixMapping(String,String)およびContentHandler.endPrefixMapping(String)メソッドを介してアプリケーションに通知されます。

この機能はValidatorHandlerでSAXイベントを受け取る方法には影響を与えません SAXイベントの拡張方法を変更するだけです。

この機能はデフォルトでfalseに設定されます。

導入されたバージョン:
1.5