|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object javax.xml.validation.ValidatorHandler
public abstract class ValidatorHandler
SAX ストリームに有効なストリーミングバリデータ。
ValidatorHandler
オブジェクトはスレッドセーフでなく、再入不可能なオブジェクトです。つまり、アプリケーション側で常に複数のスレッドから 1 つの ValidatorHandler
オブジェクトが使用されないように確認する必要があります。
ValidatorHandler
は、SAX イベントが、関連付けられた Schema
に記述された一連の制約に従っているかどうかをチェックし、さらに SAX イベントを変更することもできます。たとえば、デフォルトの値の追加などができます。
ValidatorHandler
は ContentHandler
から拡張されていますが、以下のように基本となる ContentHandler
を洗練させています。
uri
、localName
、および qname
に、SAX でそれらが null であることが許可されている場合でも null 以外の String を受け取る必要がある。同様に、ユーザ指定の ContentHandler
は 3 つすべてのパラメータに null 以外の String を受け取るValidatorHandler
の ContentHandler.startPrefixMapping(String,String)
および ContentHandler.endPrefixMapping(String)
が正しく呼び出されているかを確認する必要がある。同様に、ユーザ指定の ContentHandler
は startPrefixMapping/endPrefixMapping イベントを受け取る。ValidatorHandler
が追加の名前空間バインディングを取得する場合、ユーザ指定の ContentHandler
は追加された startPrefixMapping/endPrefixMapping イベントを受け取るContentHandler.startElement(String,String,String,Attributes)
メソッドの Attributes
は xmlns* 属性を含む場合と含まない場合がある
startDocument メソッドが呼び出されるたびに ValidatorHandler
は自動的にリセットされます。
この仕様では、ValidatorHandler
のすべての実装で認識する必要がある次の機能を定義しています。
http://xml.org/sax/features/namespace-prefixes
この機能は ValidatorHandler
が元の SAX イベントストリームに存在しない名前空間バインディングを取得する方法を制御します。この機能が true に設定されている場合は、ユーザの ContentHandler
で ContentHandler.startElement(String,String,String,Attributes)
コールバックの Attributes
オブジェクトの対応する xmlns*
属性を確認する必要があります。そうでない場合は、ユーザ指定の ContentHandler
に渡される Attributes
にxmlns*
属性が追加されません。
この切り替えにかかわらず、名前空間バインディングは、常にユーザ指定の ContentHandler
の ContentHandler.startPrefixMapping(String,String)
および ContentHandler.endPrefixMapping(String)
を介してアプリケーションに通知されます。
この機能は ValidatorHandler
で SAX イベントを受け取る方法には影響を与えません。SAX イベントの拡張方法を変更するだけです。
この機能はデフォルトで false
に設定されます。
コンストラクタの概要 | |
---|---|
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()
この ValidatorHandler の TypeInfoProvider 実装を取得します。 |
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 |
コンストラクタの詳細 |
---|
protected ValidatorHandler()
このコンストラクタは何も行いません。
派生クラスでは、null ErrorHandler
および null LSResourceResolver
の ValidatorHandler
オブジェクトを作成する必要があります。
メソッドの詳細 |
---|
public abstract void setContentHandler(ContentHandler receiver)
ContentHandler
を設定します。
ContentHandler
を指定した場合、ValidatorHandler
はフィルタとして機能し、基本的に受信イベントを指定された ContentHandler
にコピーします。
この実行で ValidatorHandler
は、たとえばデフォルトの属性を追加して、イベントを変更することもできます。
ValidatorHandler
はある程度イベントをバッファすることができますが、パーサで ValidatorHandler
を使用できるようにするには、以下の要件が満たされている必要があります。
ValidatorHandler
で ContentHandler.startElement(String, String, String, Attributes)
、ContentHandler.endElement(String, String, String)
、ContentHandler.startDocument()
、または ContentHandler.endDocument()
を呼び出す場合に、コールバックが戻る前に、ユーザ指定の ContentHandler
で、同じイベントに対して、同じメソッドを呼び出す必要があるValidatorHandler
は入力に存在していない新しい要素を取得できないValidatorHandler
は入力に存在していない属性を削除できない
指定された ContentHandler
のコールバックメソッドが例外をスローした場合、ValidatorHandler
から同じ例外オブジェクトをスローする必要があります。ErrorHandler
にはそれらの例外を通知しないでください。
このメソッドは検証の途中でも呼び出すことができます。
receiver
- ContentHandler
または null 値public abstract ContentHandler getContentHandler()
ContentHandler
を取得します。
getContentHandler()
メソッドによって最後に設定されたオブジェクト、またはこの ValidatorHandler
が作成されてから、そのメソッドが呼び出されていない場合は null を返すsetContentHandler(ContentHandler)
public abstract void setErrorHandler(ErrorHandler errorHandler)
ErrorHandler
を設定します。
エラーハンドラを使用して、検証時のエラー処理プロセスをカスタマイズできます。ErrorHandler
を設定すると、検証で発見されたエラーはまず ErrorHandler
に送られます。
エラーハンドラはハンドラから SAXException
をスローして、検証をただちに中断することができます。または、エラーを画面に出力したり、ErrorHandler
から正常に戻って検証を続行させたりすることもできます。
ErrorHandler
から Throwable
がスローされた場合、同じ Throwable
オブジェクトがコールスタックのルートに対してスローされます。
ValidatorHandler
は ErrorHandler
に最初に報告する前に SAXException
をスローすることはできません。
ErrorHandler
が null の場合、実装は次の ErrorHandler
が設定されているかのように動作します。
class DraconianErrorHandler implementsErrorHandler
{ public void fatalError(SAXParseException
e ) throwsSAXException
{ throw e; } public void error(SAXParseException
e ) throwsSAXException
{ throw e; } public void warning(SAXParseException
e ) throwsSAXException
{ // noop } }
新しい ValidatorHandler
オブジェクトが作成されると、最初にこのフィールドは null に設定されます。
errorHandler
- 設定する新しいエラーハンドラ。このパラメータは null も可public abstract ErrorHandler getErrorHandler()
ValidatorHandler
に設定された現在の ErrorHandler
を取得します。
setErrorHandler(ErrorHandler)
メソッドによって最後に設定されたオブジェクト、またはこの ValidatorHandler
が作成されてから、そのメソッドが呼び出されていない場合は null を返すsetErrorHandler(ErrorHandler)
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
LSResourceResolver
を設定します。
ValidatorHandler
は検証時に外部リソースを検索する必要がある場合に LSResourceResolver
を使用しますが、厳密に「外部リソースの検索」を構成するものは、スキーマ言語により異なります。
LSResourceResolver
が null の場合、実装は次の LSResourceResolver
が設定されているかのように動作します。
class DumbLSResourceResolver implementsLSResourceResolver
{ publicLSInput
resolveResource( String publicId, String systemId, String baseURI) { return null; // always return null } }
LSResourceResolver
が RuntimeException
(またはその派生クラスのインスタンス) をスローすると、ValidatorHandler
は構文解析を中止し、validate
メソッドの呼び出し側は同じ RuntimeException
を受け取ります。
新しい ValidatorHandler
オブジェクトが作成されると、最初にこのフィールドは null に設定されます。
resourceResolver
- 設定する新しいリソースリゾルバ。このパラメータは null も可public abstract LSResourceResolver getResourceResolver()
ValidatorHandler
に設定された現在の LSResourceResolver
を取得します。
setResourceResolver(LSResourceResolver)
メソッドによって最後に設定されたオブジェクト、またはこの ValidatorHandler
が作成されてから、そのメソッドが呼び出されていない場合は null を返すsetErrorHandler(ErrorHandler)
public abstract TypeInfoProvider getTypeInfoProvider()
ValidatorHandler
の TypeInfoProvider
実装を取得します。
取得した TypeInfoProvider
は構文解析時に照会し、バリデータによって判断された型情報にアクセスできます。
スキーマ言語によっては、型の概念を定義していないものもあり、そうした言語の場合、このメソッドがサポートされないこともあります。しかし、この仕様に準拠するため、W3C XML Schema 1.0 の実装ではこの処理をサポートする必要があります。
TypeInfo
の概念をサポートしていない場合。サポートしている場合は null 以外の有効な TypeInfoProvider
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
機能名は完全修飾 URI です。ValidatorHandler
は機能名を認識できますが、一時的にその値を返すことはできません。機能の値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでしか使用できない場合があります。
独自の URI に基づいて作成された名前を使って、実装者が独自の機能を作成することもできます (推奨)。
name
- 機能名。null 以外の完全修飾 URI で表される
SAXNotRecognizedException
- 機能の値を割り当て、または取得できない場合
SAXNotSupportedException
- ValidatorHandler
が機能名を認識するだけで、現時点ではその値を判断できない場合
NullPointerException
- name パラメータが null の場合setFeature(String, boolean)
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)
public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException
プロパティ名は完全修飾 URI です。ValidatorHandler
はプロパティ名を認識できますが、現在の値を変更することはできません。プロパティの値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでのみ不変または可変である場合があります。
ValidatorHandler
は特定のプロパティ名の設定を認識する必要はありません。
name
- プロパティ名。null 以外の完全修飾 URI で表されるobject
- 要求されたプロパティ値
SAXNotRecognizedException
- プロパティの値を割り当て、または取得できない場合
SAXNotSupportedException
- ValidatorHandler
がプロパティ名を認識するだけで要求された値を設定できない場合
NullPointerException
- name パラメータが null の場合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 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。