JavaTM Platform
Standard Ed. 6

org.xml.sax.ext
クラス DefaultHandler2

java.lang.Object
  上位を拡張 org.xml.sax.helpers.DefaultHandler
      上位を拡張 org.xml.sax.ext.DefaultHandler2
すべての実装されたインタフェース:
ContentHandler, DTDHandler, EntityResolver, ErrorHandler, DeclHandler, EntityResolver2, LexicalHandler

public class DefaultHandler2
extends DefaultHandler
implements LexicalHandler, DeclHandler, EntityResolver2

このクラスは SAX2 の基本となるハンドラクラスを拡張して SAX2 の LexicalHandlerDeclHandler、および EntityResolver2 拡張をサポートします。元の SAX1 resolveEntity() メソッドをオーバーライドする以外は、追加するハンドラのメソッドが返されるだけです。サブクラサはメソッドごとにすべてをオーバーライドできます。

このモジュールは、ソースコード、文書ともに公開ドメインに置かれています。したがって、内容に関する保証は一切提供されません

注:このクラスは、「ContentHandler.setDocumentLocator()」 呼び出しに Locator2 オブジェクトが渡され、また「ContentHandler.startElement()」 呼び出しに Attributes2 オブジェクトが渡されたことをすでに認識している可能性があります。

導入されたバージョン:
SAX 2.0 (extensions 1.1 alpha)

コンストラクタの概要
DefaultHandler2()
          すべての構文解析イベントを無視するハンドラを構築します。
 
メソッドの概要
 void attributeDecl(String eName, String aName, String type, String mode, String value)
          属性型宣言を報告します。
 void comment(char[] ch, int start, int length)
          文書内の任意の位置にある XML コメントを報告します。
 void elementDecl(String name, String model)
          要素型宣言を報告します。
 void endCDATA()
          CDATA セクションの終わりを報告します。
 void endDTD()
          DTD 宣言の終わりを報告します。
 void endEntity(String name)
          エンティティーの終わりを報告します。
 void externalEntityDecl(String name, String publicId, String systemId)
          構文解析済みの外部エンティティー宣言を報告します。
 InputSource getExternalSubset(String name, String baseURI)
          外部サブセットが文書テキストに宣言されなかった場合、何も使用されないことをパーサーに通知します。
 void internalEntityDecl(String name, String value)
          内部エンティティー宣言を報告します。
 InputSource resolveEntity(String publicId, String systemId)
          null のエンティティー名とベース URI を使用して EntityResolver2.resolveEntity() を呼び出します。
 InputSource resolveEntity(String name, String publicId, String baseURI, String systemId)
          基底 URI に対して systemId を解釈処理して結果が絶対 URI となったエンティティーテキストを読み取るようパーサーに通知します。
 void startCDATA()
          CDATA セクションの開始を報告します。
 void startDTD(String name, String publicId, String systemId)
          DTD 宣言がある場合、その開始を報告します。
 void startEntity(String name)
          内部および外部の XML エンティティーの一部の開始を報告します。
 
クラス org.xml.sax.helpers.DefaultHandler から継承されたメソッド
characters, endDocument, endElement, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping, unparsedEntityDecl, warning
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

DefaultHandler2

public DefaultHandler2()
すべての構文解析イベントを無視するハンドラを構築します。

メソッドの詳細

startCDATA

public void startCDATA()
                throws SAXException
インタフェース LexicalHandler の記述:
CDATA セクションの開始を報告します。

CDATA セクションのコンテンツは、正規の characters イベントを介して報告されます。 このイベントは境界の報告だけに使用されます。

定義:
インタフェース LexicalHandler 内の startCDATA
例外:
SAXException - アプリケーションが例外を生成することがある
関連項目:
LexicalHandler.endCDATA()

endCDATA

public void endCDATA()
              throws SAXException
インタフェース LexicalHandler の記述:
CDATA セクションの終わりを報告します。

定義:
インタフェース LexicalHandler 内の endCDATA
例外:
SAXException - アプリケーションが例外を生成することがある
関連項目:
LexicalHandler.startCDATA()

startDTD

public void startDTD(String name,
                     String publicId,
                     String systemId)
              throws SAXException
インタフェース LexicalHandler の記述:
DTD 宣言がある場合、その開始を報告します。

このメソッドは、DOCTYPE 宣言の開始を報告するメソッドです。 文書に DOCTYPE 宣言が含まれていない場合は呼び出されません。

DTDHandler または DeclHandler イベントを介して報告されるすべての宣言は、startDTD イベントから endDTD イベントまでの間に出現することになっています。宣言は、startEntity イベントから endEntity イベントまでの間に出現しないと、内部 DTD サブセットに所属するものと見なされます。DTD のコメントおよび処理命令も、startDTD イベントから endDTD イベントまでの間に、元の (論理的な) 発生順で報告されることになっています。 ただし、DTDHandler イベントや DeclHandler イベントに対する正確な相対位置に出現する必要はありません。

start/endDTD イベントは、ContentHandler の start/endDocument イベント内の最初の startElement イベントの前に出現します。

定義:
インタフェース LexicalHandler 内の startDTD
パラメータ:
name - 文書型名
publicId - 宣言された外部 DTD サブセットの公開識別子。 宣言されていない場合は null
systemId - 宣言された外部 DTD サブセットのシステム識別子。 宣言されていない場合は null。 ドキュメントのベース URI に対しては解決されないことに 注意すること
例外:
SAXException - アプリケーションが例外を生成する ことがある
関連項目:
LexicalHandler.endDTD(), LexicalHandler.startEntity(java.lang.String)

endDTD

public void endDTD()
            throws SAXException
インタフェース LexicalHandler の記述:
DTD 宣言の終わりを報告します。

このメソッドは、DOCTYPE 宣言の終わりを報告するメソッドです。 文書に DOCTYPE 宣言が含まれていない場合は呼び出されません。

定義:
インタフェース LexicalHandler 内の endDTD
例外:
SAXException - アプリケーションが例外を生成することがある
関連項目:
LexicalHandler.startDTD(java.lang.String, java.lang.String, java.lang.String)

startEntity

public void startEntity(String name)
                 throws SAXException
インタフェース LexicalHandler の記述:
内部および外部の XML エンティティーの一部の開始を報告します。

パラメータエンティティー (外部 DTD サブセットを含む) の報告機能はオプションです。 LexicalHandler イベントを報告する SAX2 のドライバのなかには、この機能を実装しないものもあります。 http://xml.org/sax/features/lexical-handler/parameter-entities 機能を使って、パラメータエンティティーの報告を照会または制御することができます。

一般的なエンティティーは、正規名で報告されます。 パラメータエンティティー名の前には「%」が付けられています。 外部 DTD サブセットは「[dtd]」という擬似エンティティー名を持っています。

SAX2 ドライバがこれらのイベントを提供しているときは、その他のすべてのイベントを start/end エンティティーイベント内に正しく入れ子にする必要があります。DeclHandler または DTDHandler のイベントを正しい順序で並べる必要はありません。

スキップされたエンティティーは、ContentHandler インタフェースの一部である skippedEntity イベントを介して報告されます。

SAX が採用しているストリーミングイベントモデルの制約により、以下の状況では一部のエンティティー境界を報告することができません。

これらは通知なく拡張されます。 元のエンティティー境界の位置は示されません。

文字参照の境界 (実際にはエンティティーではない) も報告されない点に注意してください。

すべての start/endEntity イベントを正しく入れ子にする必要があります。

定義:
インタフェース LexicalHandler 内の startEntity
パラメータ:
name - エンティティーの名前。パラメータエンティティーの場合、 この名前は「%」で始まる。 外部 DTD サブセットの場合、「[dtd]」で始まる
例外:
SAXException - アプリケーションが例外を生成することがある
関連項目:
LexicalHandler.endEntity(java.lang.String), DeclHandler.internalEntityDecl(java.lang.String, java.lang.String), DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)

endEntity

public void endEntity(String name)
               throws SAXException
インタフェース LexicalHandler の記述:
エンティティーの終わりを報告します。

定義:
インタフェース LexicalHandler 内の endEntity
パラメータ:
name - 終了するエンティティーの名前
例外:
SAXException - アプリケーションが例外を生成することがある
関連項目:
LexicalHandler.startEntity(java.lang.String)

comment

public void comment(char[] ch,
                    int start,
                    int length)
             throws SAXException
インタフェース LexicalHandler の記述:
文書内の任意の位置にある XML コメントを報告します。

このコールバックは、文書要素の内外に存在するコメント (外部 DTD サブセット内のコメントも含む) に対して使用されます。DTD 内のコメントは、start/endDTD イベントと start/endEntity イベント (使用されている場合) の内部に正しく入れ子にする必要があります。

定義:
インタフェース LexicalHandler 内の comment
パラメータ:
ch - コメントに含まれる文字を格納する配列
start - 配列内の開始位置
length - 配列から読み取られる文字数
例外:
SAXException - アプリケーションが例外を生成することがある

attributeDecl

public void attributeDecl(String eName,
                          String aName,
                          String type,
                          String mode,
                          String value)
                   throws SAXException
インタフェース DeclHandler の記述:
属性型宣言を報告します。

有効な (最初の) 属性宣言だけが報告されます。型は、「CDATA」、「ID」、「IDREF」、「IDREFS」、「NMTOKEN」、「NMTOKENS」、「ENTITY」、「ENTITIES」、区切り文字 「|」 と、削除されたすべての空白文字とともに括弧に入れられたトークングループ、または削除されたすべての空白文字とともに括弧に入れられたトークングループの直前にある空白文字の、直前の「NOTATION」という語のどれかの文字列になります。

値はアプリケーションに報告され、適正に正規化されてエンティティー参照と文字列参照を拡張した値になります。

定義:
インタフェース DeclHandler 内の attributeDecl
パラメータ:
eName - 関連要素名
aName - 属性の名前
type - 属性型を示す文字列
mode - 属性のデフォルトモード (#IMPLIED、#REQUIRED、または #FIXED) を示す文字列。 いずれにも当てはまらない場合は null
value - 属性のデフォルト値を示す文字列。 存在しない場合は null
例外:
SAXException - アプリケーションが例外を生成することがある

elementDecl

public void elementDecl(String name,
                        String model)
                 throws SAXException
インタフェース DeclHandler の記述:
要素型宣言を報告します。

コンテンツモデルは、文字列「EMPTY」、文字列「ANY」、または括弧に入れられたグループ (オプションで出現インジケータを伴う) で構成されます。このモデルは、すべてのパラメータエンティティーが完全に解決され、すべての空白文字が削除されるように正規化されます。 また、囲む括弧を含みます。その他の正規化 (重複した括弧の削除、出現インジケータの簡易化など) はパーサーによって随意行われます。

定義:
インタフェース DeclHandler 内の elementDecl
パラメータ:
name - 要素型名
model - コンテンツモデルを示す正規文字列
例外:
SAXException - アプリケーションが例外を生成することがある

externalEntityDecl

public void externalEntityDecl(String name,
                               String publicId,
                               String systemId)
                        throws SAXException
インタフェース DeclHandler の記述:
構文解析済みの外部エンティティー宣言を報告します。

有効な (最初の) エンティティー宣言だけが報告されます。

システム識別子が URL の場合、パーサーはこれをアプリケーションに渡す前に完全に解決する必要があります。

定義:
インタフェース DeclHandler 内の externalEntityDecl
パラメータ:
name - エンティティーの名前。パラメータエンティティーの場合、 名前は「%」で始まる
publicId - エンティティーの公開識別子。 指定されなかった場合は null
systemId - エンティティーのシステム識別子
例外:
SAXException - アプリケーションが例外を生成することがある
関連項目:
DeclHandler.internalEntityDecl(java.lang.String, java.lang.String), DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

internalEntityDecl

public void internalEntityDecl(String name,
                               String value)
                        throws SAXException
インタフェース DeclHandler の記述:
内部エンティティー宣言を報告します。

有効な (最初の) エンティティー宣言だけが報告されます。通常のエンティティーとは異なり、値に含まれるすべてのパラメータエンティティーは拡張されます。

定義:
インタフェース DeclHandler 内の internalEntityDecl
パラメータ:
name - エンティティーの名前。パラメータエンティティーの場合、 名前は「%」で始まる
value - エンティティーの置換テキスト
例外:
SAXException - アプリケーションが例外を生成することがある
関連項目:
DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String), DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getExternalSubset

public InputSource getExternalSubset(String name,
                                     String baseURI)
                              throws SAXException,
                                     IOException
外部サブセットが文書テキストに宣言されなかった場合、何も使用されないことをパーサーに通知します。

定義:
インタフェース EntityResolver2 内の getExternalSubset
パラメータ:
name - 文書のルート要素の識別。利用可能な DOCTYPE 宣言または実際のルート要素からの 名前
baseURI - 文書の基底 URI。外部サブテキストを選択する追加ヒントとして機能する。 XMLReader には InputSource だけが指定されたために null でないかぎり 常に絶対 URI である
戻り値:
パーサーによって使用される新しい外部サブセットを記述する InputSource オブジェクト。外部サブセットが提供されない場合は null が示される
例外:
SAXException - SAX 例外。ほかの例外をラップしている可能性がある
IOException - 新しい InputStream や Reader、または不正な URL の作成失敗を示している可能性がある

resolveEntity

public InputSource resolveEntity(String name,
                                 String publicId,
                                 String baseURI,
                                 String systemId)
                          throws SAXException,
                                 IOException
基底 URI に対して systemId を解釈処理して結果が絶対 URI となったエンティティーテキストを読み取るようパーサーに通知します。古い DefaultHandler.resolveEntity() はこのメソッドを呼び出すためにオーバーライドされるので、このメソッドは null 名、基底 URI、およびすでに絶対化されている systemId で呼び出すことができます。

定義:
インタフェース EntityResolver2 内の resolveEntity
パラメータ:
name - 解決される外部エンティティーの識別。 外部サブセットの「[dtd]」や パラメータエンティティーを示す「%」で開始される名前、 またはそれ以外の一般エンティティーの名前。SAX2 パーサーによって呼び出される場合は null ではない
publicId - 参照される外部エンティティーの公開識別子 (XML 仕様で要求されるように正規化されている)。 提供されなかった場合は null
baseURI - 相対的な systemID を基準にした URI の解釈。 XMLReader は InputSource に指定された可能性があるので、null でないかぎり常に絶対 URI。この URI は、関連する宣言を開始する「<」に関連付けられている XML 仕様によって定義される
systemId - 参照される外部エンティティーのシステム識別子。 相対または絶対 URI。 SAX2 パーサーによって呼び出される場合は null ではなく、宣言されたエンティティーと外部サブセットだけが、そうしたパーサーによって解決される
戻り値:
パーサーによって使用される新しい入力ソースを記述する InputSource オブジェクト。 null を返すことによって、基底 URI に対するシステム ID を解決し、結果として得られる URI につなげるように パーサーに指示する
例外:
SAXException - SAX 例外。ほかの例外をラップしている可能性がある
IOException - 新しい InputStream や Reader、または不正な URL の作成失敗を示している可能性がある

resolveEntity

public InputSource resolveEntity(String publicId,
                                 String systemId)
                          throws SAXException,
                                 IOException
null のエンティティー名とベース URI を使用して EntityResolver2.resolveEntity() を呼び出します。このクラスを使用するには、そのメソッドをオーバーライドするだけでかまいません。

定義:
インタフェース EntityResolver 内の resolveEntity
オーバーライド:
クラス DefaultHandler 内の resolveEntity
パラメータ:
publicId - 公開識別子。使用できない場合は null
systemId - XML 文書に含まれているシステム識別子
戻り値:
新しい入力ソース。デフォルトの動作が必要な場合は null
例外:
SAXException - SAX 例外。 ほかの例外をラップしている可能性がある
IOException - Java 固有の入出力例外。 通常、InputSource の新しい InputStream または Reader が生成されると発生する
関連項目:
EntityResolver.resolveEntity(java.lang.String, java.lang.String)

JavaTM Platform
Standard Ed. 6

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

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