JavaTM 2 Platform
Standard Ed. 5.0

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 に、SAX でそれらが null であることが許可されている場合でも null 以外の String を受け取る必要がある。同様に、ユーザ指定の ContentHandler は 3 つすべてのパラメータに null 以外の String を受け取る
  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

コンストラクタの概要
protected ValidatorHandler()
          派生クラスのコンストラクタです。
 
メソッドの概要
abstract  ContentHandler getContentHandler()
          拡張された検証結果を受け取る ContentHandler を取得します。
abstract  ErrorHandler getErrorHandler()
          この ValidatorHandler に設定された現在の ErrorHandler を取得します。
 boolean getFeature(String name)
          機能フラグの値を検索します。
 Object getProperty(String name)
          プロパティ値を検索します。
abstract  LSResourceResolver getResourceResolver()
          この ValidatorHandler に設定された現在の LSResourceResolver を取得します。
abstract  TypeInfoProvider getTypeInfoProvider()
          この ValidatorHandlerTypeInfoProvider 実装を取得します。
abstract  void setContentHandler(ContentHandler receiver)
          拡張された検証結果を受け取る ContentHandler を設定します。
abstract  void setErrorHandler(ErrorHandler errorHandler)
          検証で発生したエラーを受け取るように ErrorHandler を設定します。
 void setFeature(String name, boolean value)
          機能フラグの値を設定します。
 void setProperty(String name, Object object)
          プロパティ値を設定します。
abstract  void setResourceResolver(LSResourceResolver resourceResolver)
          検証時のリソース解決をカスタマイズするように LSResourceResolver を設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
インタフェース org.xml.sax.ContentHandler から継承されたメソッド
characters, endDocument, endElement, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping
 

コンストラクタの詳細

ValidatorHandler

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

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

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

メソッドの詳細

setContentHandler

public abstract void setContentHandler(ContentHandler receiver)
拡張された検証結果を受け取る ContentHandler を設定します。

ContentHandler を指定した場合、ValidatorHandler はフィルタとして機能し、基本的に受信イベントを指定された ContentHandler にコピーします。

この実行で ValidatorHandler は、たとえばデフォルトの属性を追加して、イベントを変更することもできます。

ValidatorHandler はある程度イベントをバッファすることができますが、パーサで ValidatorHandler を使用できるようにするには、以下の要件が満たされている必要があります。

  1. ValidatorHandlerContentHandler.startElement(String, String, String, Attributes)ContentHandler.endElement(String, String, String)ContentHandler.startDocument()、または ContentHandler.endDocument() を呼び出す場合に、コールバックが戻る前に、ユーザ指定の ContentHandler で、同じイベントに対して、同じメソッドを呼び出す必要がある
  2. ValidatorHandler は入力に存在していない新しい要素を取得できない
  3. ValidatorHandler は入力に存在していない属性を削除できない

指定された ContentHandler のコールバックメソッドが例外をスローした場合、ValidatorHandler から同じ例外オブジェクトをスローする必要があります。ErrorHandler にはそれらの例外を通知しないでください。

このメソッドは検証の途中でも呼び出すことができます。

パラメータ:
receiver - ContentHandler または null 値

getContentHandler

public abstract ContentHandler getContentHandler()
拡張された検証結果を受け取る ContentHandler を取得します。

戻り値:
このメソッドは getContentHandler() メソッドによって最後に設定されたオブジェクト、またはこの ValidatorHandler が作成されてから、そのメソッドが呼び出されていない場合は null を返す
関連項目:
setContentHandler(ContentHandler)

setErrorHandler

public abstract void setErrorHandler(ErrorHandler errorHandler)
検証で発生したエラーを受け取るように ErrorHandler を設定します。

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

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

ErrorHandler から Throwable がスローされた場合、同じ Throwable オブジェクトがコールスタックのルートに対してスローされます。

ValidatorHandlerErrorHandler に最初に報告する前に 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
     }
 }
 

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

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

getErrorHandler

public abstract ErrorHandler getErrorHandler()
この ValidatorHandler に設定された現在の ErrorHandler を取得します。

戻り値:
このメソッドは setErrorHandler(ErrorHandler) メソッドによって最後に設定されたオブジェクト、またはこの ValidatorHandler が作成されてから、そのメソッドが呼び出されていない場合は null を返す
関連項目:
setErrorHandler(ErrorHandler)

setResourceResolver

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

ValidatorHandler は検証時に外部リソースを検索する必要がある場合に LSResourceResolver を使用しますが、厳密に「外部リソースの検索」を構成するものは、スキーマ言語により異なります。

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


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

LSResourceResolverRuntimeException (またはその派生クラスのインスタンス) をスローすると、ValidatorHandler は構文解析を中止し、validate メソッドの呼び出し側は同じ RuntimeException を受け取ります。

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

パラメータ:
resourceResolver - 設定する新しいリソースリゾルバ。このパラメータは null も可

getResourceResolver

public abstract LSResourceResolver getResourceResolver()
この ValidatorHandler に設定された現在の LSResourceResolver を取得します。

戻り値:
このメソッドは setResourceResolver(LSResourceResolver) メソッドによって最後に設定されたオブジェクト、またはこの ValidatorHandler が作成されてから、そのメソッドが呼び出されていない場合は null を返す
関連項目:
setErrorHandler(ErrorHandler)

getTypeInfoProvider

public abstract TypeInfoProvider getTypeInfoProvider()
この ValidatorHandlerTypeInfoProvider 実装を取得します。

取得した TypeInfoProvider は構文解析時に照会し、バリデータによって判断された型情報にアクセスできます。

スキーマ言語によっては、型の概念を定義していないものもあり、そうした言語の場合、このメソッドがサポートされないこともあります。しかし、この仕様に準拠するため、W3C XML Schema 1.0 の実装ではこの処理をサポートする必要があります。

戻り値:
バリデータ / スキーマ言語で TypeInfo の概念をサポートしていない場合。サポートしている場合は null 以外の有効な TypeInfoProvider

getFeature

public boolean getFeature(String name)
                   throws SAXNotRecognizedException,
                          SAXNotSupportedException
機能フラグの値を検索します。

機能名は完全修飾 URI です。ValidatorHandler は機能名を認識できますが、一時的にその値を返すことはできません。機能の値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでしか使用できない場合があります。

独自の URI に基づいて作成された名前を使って、実装者が独自の機能を作成することもできます (推奨)。

パラメータ:
name - 機能名。null 以外の完全修飾 URI で表される
戻り値:
機能の現在の値 (true または false)
例外:
SAXNotRecognizedException - 機能の値を割り当て、または取得できない場合
SAXNotSupportedException - ValidatorHandler が機能名を認識するだけで、現時点ではその値を判断できない場合
NullPointerException - name パラメータが null の場合
関連項目:
setFeature(String, boolean)

setFeature

public void setFeature(String name,
                       boolean value)
                throws SAXNotRecognizedException,
                       SAXNotSupportedException
機能フラグの値を設定します。

機能を使用して、ValidatorHandler がスキーマを構文解析する方法を制御できますが、ValidatorHandler は特定のプロパティ名を認識する必要はありません。

機能名は完全修飾 URI です。ValidatorHandler は機能の値を表示できますが、現在の値を変更することはできません。機能の値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでのみ不変または可変である場合があります。

パラメータ:
name - 機能名。null 以外の完全修飾 URI で表される
value - 機能の要求された値 (true または false)
例外:
SAXNotRecognizedException - 機能の値を割り当て、または取得できない場合
SAXNotSupportedException - ValidatorHandler が機能名を認識するだけで要求された値を設定できない場合
NullPointerException - name パラメータが null の場合
関連項目:
getFeature(String)

setProperty

public void setProperty(String name,
                        Object object)
                 throws SAXNotRecognizedException,
                        SAXNotSupportedException
プロパティ値を設定します。

プロパティ名は完全修飾 URI です。ValidatorHandler はプロパティ名を認識できますが、現在の値を変更することはできません。プロパティの値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでのみ不変または可変である場合があります。

ValidatorHandler は特定のプロパティ名の設定を認識する必要はありません。

パラメータ:
name - プロパティ名。null 以外の完全修飾 URI で表される
object - 要求されたプロパティ値
例外:
SAXNotRecognizedException - プロパティの値を割り当て、または取得できない場合
SAXNotSupportedException - ValidatorHandler がプロパティ名を認識するだけで要求された値を設定できない場合
NullPointerException - name パラメータが null の場合

getProperty

public Object getProperty(String name)
                   throws SAXNotRecognizedException,
                          SAXNotSupportedException
プロパティ値を検索します。

プロパティ名は完全修飾 URI です。ValidatorHandler はプロパティ名を認識できますが、一時的にその値を返すことはできません。プロパティの値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでしか使用できない場合があります。

ValidatorHandler は特定のプロパティ名を認識する必要はありません。

独自の URI に基づいて作成された名前を使って、実装者が独自のプロパティを作成することもできます (推奨)。

パラメータ:
name - プロパティ名。null 以外の完全修飾 URI で表される
戻り値:
現在のプロパティ値
例外:
SAXNotRecognizedException - プロパティの値を割り当て、または取得できない場合
SAXNotSupportedException - XMLReader がプロパティ名を認識するだけで、現時点ではその値を判断できない場合
NullPointerException - name パラメータが null の場合
関連項目:
setProperty(String, Object)

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。