public interface LexicalHandler
このモジュールは、ソースコード、文書ともに公開ドメインに置かれています。したがって、内容に関する保証は一切提供されません。詳細については、http://www.saxproject.org を参照してください。
コメントや CDATA セクションの境界といった XML 文書に関する字句上の情報を提供する、SAX2 用のオプション拡張ハンドラです。このハンドラを認識するために、XML リーダーは不要です。また、このハンドラは、SAX2 のコアのみのディストリビューションには含まれていません。
字句ハンドラ内のイベントは、文書内の個々の要素だけでなく文書全体に適用されます。すべての字句ハンドライベントは、コンテンツハンドラの startDocument イベントから endDocument イベントまでの間に発生します。
XML リーダーの LexicalHandler を設定するには、プロパティー名として http://xml.org/sax/properties/lexical-handler
、その値としてこのインタフェースを実装するオブジェクト (または null) を指定して、setProperty
メソッドを使用します。リーダーが字句イベントを報告しない場合、ハンドラを登録しようとすると SAXNotRecognizedException
がスローされます。
修飾子と型 | メソッドと説明 |
---|---|
void |
comment(char[] ch, int start, int length)
文書内の任意の位置にある XML コメントを報告します。
|
void |
endCDATA()
CDATA セクションの終わりを報告します。
|
void |
endDTD()
DTD 宣言の終わりを報告します。
|
void |
endEntity(String name)
エンティティーの終わりを報告します。
|
void |
startCDATA()
CDATA セクションの開始を報告します。
|
void |
startDTD(String name, String publicId, String systemId)
DTD 宣言がある場合、その開始を報告します。
|
void |
startEntity(String name)
内部および外部の XML エンティティーの一部の開始を報告します。
|
void startDTD(String name, String publicId, String systemId) throws SAXException
このメソッドは、DOCTYPE 宣言の開始を報告するメソッドです。文書に DOCTYPE 宣言が含まれていない場合は呼び出されません。
DTDHandler
イベントまたは DeclHandler
イベントを介して報告されるすべての宣言は、startDTD イベントから endDTD
イベントまでの間に出現することになっています。宣言は、startEntity
イベントから endEntity
イベントまでの間に出現しないと、内部 DTD サブセットに所属するものと見なされます。DTD のコメントおよび処理命令も、startDTD イベントから endDTD イベントまでの間に、元の (論理的な) 発生順で報告されることになっています。ただし、DTDHandler イベントや DeclHandler イベントに対する正確な相対位置に出現する必要はありません。
startDTD/endDTD イベントは、ContentHandler からの startDocument イベントと endDocument イベントの間で、最初の startElement
イベントの前に出現します。
name
- 文書型名。publicId
- 宣言された外部 DTD サブセットの公開識別子。宣言されていない場合は null。systemId
- 宣言された外部 DTD サブセットのシステム識別子。宣言されていない場合は null。(文書のベース URI に対しては解決されません)SAXException
- アプリケーションが例外を発生させる場合があります。endDTD()
, startEntity(java.lang.String)
void endDTD() throws SAXException
このメソッドは、DOCTYPE 宣言の終わりを報告するメソッドです。文書に DOCTYPE 宣言が含まれていない場合は呼び出されません。
SAXException
- アプリケーションが例外を発生させる場合があります。startDTD(java.lang.String, java.lang.String, java.lang.String)
void startEntity(String name) throws SAXException
パラメータエンティティー (外部 DTD サブセットを含む) の報告機能はオプションです。LexicalHandler イベントを報告する SAX2 のドライバの中には、この機能を実装しないものもあります。http://xml.org/sax/features/lexical-handler/parameter-entities
機能を使って、パラメータエンティティーの報告を照会または制御できます。
一般的なエンティティーは、正規名で報告されます。パラメータエンティティー名の前には「%」が付けられています。外部 DTD サブセットは「[dtd]」という擬似エンティティー名を持っています。
SAX2 ドライバがこれらのイベントを提供しているときは、その他のすべてのイベントを start/end エンティティーイベント内に正しく入れ子にする必要があります。DeclHandler
または DTDHandler
のイベントを正しい順序で並べる必要はありません。
スキップされたエンティティーは、ContentHandler インタフェースの一部である skippedEntity
イベントを介して報告されます。
SAX が採用しているストリーミングイベントモデルの制約により、次の状況では一部のエンティティー境界を報告することができません。
これらは通知なく拡張されます。元のエンティティー境界の位置は示されません。
文字参照の境界 (実際にはエンティティーではない) も報告されません。
すべての start/endEntity イベントを正しく入れ子にする必要があります。
name
- エンティティーの名前。パラメータエンティティーの場合、この名前は「%」で始まります。外部 DTD サブセットの場合は「[dtd]」となります。SAXException
- アプリケーションが例外を発生させる場合があります。endEntity(java.lang.String)
, DeclHandler.internalEntityDecl(java.lang.String, java.lang.String)
, DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)
void endEntity(String name) throws SAXException
name
- 終了するエンティティーの名前。SAXException
- アプリケーションが例外を発生させる場合があります。startEntity(java.lang.String)
void startCDATA() throws SAXException
CDATA セクションのコンテンツは、正規の characters
イベントを介して報告されます。このイベントは境界の報告だけに使用されます。
SAXException
- アプリケーションが例外を発生させる場合があります。endCDATA()
void endCDATA() throws SAXException
SAXException
- アプリケーションが例外を発生させる場合があります。startCDATA()
void comment(char[] ch, int start, int length) throws SAXException
このコールバックは、文書要素の内外に存在するコメント (外部 DTD サブセット内のコメントも含む) に対して使用されます。DTD 内のコメントは、start/endDTD イベントと start/endEntity イベント (使用されている場合) の内部に正しく入れ子にする必要があります。
ch
- コメントに含まれる文字を格納する配列。start
- 配列内の開始位置。length
- 配列から使用される文字数。SAXException
- アプリケーションが例外を発生させる場合があります。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.