|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface EntityResolver2
外部エンティティー参照を入力ソースにマッピングしたり、不足する外部サブセットを提供したりする拡張インタフェースです。XMLReader.setEntityResolver()
メソッドを使用してパーサーにこのインタフェースの実装を提供します。パーサーがこのインタフェースのメソッドを使用する場合、古い SAX 1.0 EntityResolver.resolveEntity()
メソッドではなく、このインタフェースの EntityResolver2.resolveEntity()
メソッドを使用します。
このモジュールは、ソースコード、文書ともに公開ドメインに置かれています。したがって、内容に関する保証は一切提供されません。
外部エンティティーのためにこのインタフェースを定義するようにカスタマイズする必要がある場合、SAX アプリケーションは「true」(機能が認識された場合のデフォルト値) に設定された「http://xml.org/sax/features/use-entity-resolver2」機能フラグを持つ XMLReader を使用する必要があります。そのフラグが認識されない場合やその値が false の場合、またはリゾルバがこのインタフェースを実装しない場合には、EntityResolver
メソッドだけを使用します。
このインタフェースはエンティティー解決を変更する 3 種類のアプリケーションをサポートします。「Old Style」アプリケーションはこのインタフェースについては認識せず、EntityResolver を提供します。「Transitional Mode」は EntityResolver2 を提供し、EntityResolver2 をサポートするすべてのシステム (パーサーまたはその他のツール) にあるメソッドの利点が自動的に得られます (多相性のため)。「Old Style」アプリケーションも 「Transitional Mode」アプリケーションも SAX2 パーサーとともに動作します。「New style」アプリケーションは、SAX2 パーサー上以外ではこの特定の機能をサポートできません。元の SAX 1.0 スタイルエンティティー解決メソッドが呼び出された場合、 これらのアプリケーションは機能フラグが「true」の値を持つように要求し、提供する EntityResolver2 実装によって例外をスローできます。
XMLReader.setEntityResolver(org.xml.sax.EntityResolver)
メソッドの概要 | |
---|---|
InputSource |
getExternalSubset(String name,
String baseURI)
アプリケーションは、明確に定義していない文書の外部サブセットを提供できます。 |
InputSource |
resolveEntity(String name,
String publicId,
String baseURI,
String systemId)
アプリケーションは外部エンティティー参照を入力ソースへマッピングするか、一般的な URI 解決を使用するようパーサーに通知できます。 |
インタフェース org.xml.sax.EntityResolver から継承されたメソッド |
---|
resolveEntity |
メソッドの詳細 |
---|
InputSource getExternalSubset(String name, String baseURI) throws SAXException, IOException
startDTD()
を通してすでに文書には外部サブセットが含まれていたかのように報告されます。
また、このメソッドは DOCTYPE 宣言を持たない文書にも使用できます。ルート要素が検出されても DOCTYPE 宣言が見つからなかった場合にこのメソッドが呼び出されます。外部サブセットの値を返す場合、このルート要素はルート要素として宣言され、無効になる文書の最初に DOCTYPE 宣言をつなぐ効果をもたらします。そのパーサーコールバックのシーケンスは論理的には次のケースと似ています。
... comments and PIs from the prolog (as usual) startDTD ("rootName", source.getPublicId (), source.getSystemId ()); startEntity ("[dtd]"); ... declarations, comments, and PIs from the external subset endEntity ("[dtd]"); endDTD (); ... then the rest of the document (as usual) startElement (..., "rootName", ...);
InputSource ではこれ以上の解決は取得されません。このメソッドを実装することで resolveEntity()
を呼び出して DTD エンティティーのローカルキャッシュを使用するなどの利点を得られます。また、妥当性を検証せず、外部パラメータエンティティーを含んでいないプロセッサではこのメソッドを使用できません。
外部エンティティーに対して好ましくないネットワークアクセスを常に要求する XML プロセッサと互換性がある場合、このメソッドに使用するとデータの検証も容易になります。 また、ほかの理由には DTD 以外のポリシーをインポートします。妥当性を検証できない原因には、文書に DTD を含めるよう要求します。 これによって属性がむらなく処理されます。たとえば、XPath プロセッサは、広く使用されている参照の型を処理する前に型「ID」を持つ属性を認識する必要があります。
警告: 外部サブセットを返すと入力文書が変更されます。一般のエンティティーに定義を与えることによって不正な文書を整形できます。
name
- 文書のルート要素の識別。利用可能な DOCTYPE 宣言または実際のルート要素からの 名前baseURI
- 文書の基底 URI。外部サブテキストを選択する追加ヒントとして機能する。XMLReader に InputSource しか提供されなかったために null となる場合を除き、常に絶対 URI である
SAXException
- SAX 例外。ほかの例外をラップしている可能性がある
IOException
- 新しい InputStream や Reader、または不正な URL の作成失敗を示している可能性があるInputSource resolveEntity(String name, String publicId, String baseURI, String systemId) throws SAXException, IOException
EntityResolver
インタフェースに比べて柔軟性があり、OASIS XML Catalogs 仕様で定義されたより複雑なカタログスキーマの実装をサポートします。
このリゾルバメソッドを使用するように設定されたパーサーは、リゾルバメソッドを呼び出して XML テキストの参照によって含まれている外部エンティティーに使用する入力ソースを決定します。その場合、文書エンティティーと getExternalSubset()
によって返された外部エンティティーは除外されます。妥当性を検証できないプロセッサが機能フラグを使用してエンティティー (パラメータエンティティーまたは一般エンティティー) のクラスを含めないように設定されていると、このメソッドはそれらのエンティティーでは呼び出されません。
ここで使用されるエンティティー命名スキーマは、LexicalHandler
または ContentHandler.skippedEntity()
メソッドで使用されるものと同じです。
name
- 解決される外部エンティティーの識別。外部サブセットの「[dtd]」や パラメータエンティティーを示す「%」で開始される名前、 またはそれ以外の一般エンティティーの名前。SAX2 パーサーによって呼び出される場合は null ではないpublicId
- 参照される外部エンティティーの公開識別子 (XML 仕様で要求されるように正規化されている)。 提供されなかった場合は nullbaseURI
- 相対的な systemID を基準にした URI の解釈。XMLReader は InputSource に指定された可能性があるので、null でないかぎり常に絶対 URI。この URI は、関連する宣言を開始する「<」に関連付けられている XML 仕様によって定義されるsystemId
- 参照される外部エンティティーのシステム識別子。相対 URI または絶対 URI。SAX2 パーサーによって呼び出される場合は null ではなく、宣言されたエンティティーと外部サブセットだけが、そうしたパーサーによって解決される
SAXException
- SAX 例外。ほかの例外をラップしている可能性がある
IOException
- 新しい InputStream や Reader、または不正な URL の作成失敗を示している可能性がある
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。