|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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
の null 以外の文字列を受け取る必要があります。SAX で null となることが許可されている場合でも当てはまります。同様に、ユーザー指定の ContentHandler
がこれら 3 種類のパラメータの null 以外の文字列を受け取ります。
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)
この ValidatorHandler の機能を設定します。 |
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
を使用できるようにするために、次の要件を満たす必要があります。
ContentHandler.startElement(String, String, String, Attributes)
、ContentHandler.endElement(String, String, String)
、ContentHandler.startDocument()
、または ContentHandler.endDocument()
が ValidatorHandler
で呼び出されたとき、コールバックが返される前にユーザー指定の 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
から正常に戻って検証を続行させたりすることもできます。
Throwable
が ErrorHandler
からスローされると、呼び出しスタックのルートに同じ 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 です。機能名は完全修飾 URI です。 SchemaFactory
は機能の値を表示できますが、現在の値を変更することはできません。機能の値によっては、検証の実行前、実行中、実行後などの特定のコンテキストでのみ不変または可変である場合があります。
実装はすべて、XMLConstants.FEATURE_SECURE_PROCESSING
機能をサポートしている必要があります。この機能については次のとおりです。
true
の場合、実装は実装限界に準拠する XML 処理を制限します。例としては、エンティティー拡張制限や大容量のリソースを消費する XML スキーマなどがあります。セキュリティー上の理由から XML 処理が制限される場合は、登録済みの ErrorHandler.fatalError(SAXParseException exception)
へ呼び出しを介して報告されます。setErrorHandler(ErrorHandler errorHandler)
を参照してください。
false
の場合、実装は、実装限界を考慮せずに、XML 仕様に従って XML を処理します。
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 Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。