モジュール java.xml

パッケージorg.xml.sax


パッケージorg.xml.sax
XML (SAX)のシンプルAPIのインタフェースを提供します。 SAX1およびSAX2 APIの両方をサポートします。

SAX2標準機能フラグ

SAX2の必須の特性の1つに、検証に使用できる機能フラグや変更パーサー・モード(特に検証などのモード)が追加されていることがあります。 機能は(絶対) URIによって識別されるため、だれにでも定義できます。 現在定義されている標準の機能URIには、validationなどの識別子の前に接頭辞http://xml.org/sax/features/が付きます。 setFeatureを使用して機能をオンまたはオフにします。 標準の識別子は次のとおりです。

標準機能
機能ID アクセス デフォルト 説明
external-general-entities 読み取り/書き込み 指定なし このパーサーが一般的な外部エンティティを処理するかどうかを報告する。検証する場合は常にtrue。
external-parameter-entities 読み取り/書き込み 指定なし このパーサーが外部パラメータ・エンティティを処理するかどうかを報告する。検証する場合は常にtrue。
is-standalone (構文解析する) 読取り専用、(構文解析しない) なし 適用外 startDocument()コールバックが終了した後、構文解析中のみ検証される。読取り専用。 文書がXML宣言内のstandalone="yes"を指定した場合、値はtrue。そうでない場合はfalse。
lexical-handler/parameter-entities 読み取り/書き込み 指定なし 「true」の値はLexicalHandlerがパラメータ・エンティティの開始と終了を報告することを示す。
namespaces 読み取り/書き込み true 「true」の値は、使用可能な要素名および属性名の名前空間URIと接頭辞を持たないローカル名を示す。
namespace-prefixes 読み取り/書き込み false 「true」の値は接頭辞付きのXML修飾名と属性(xmlns*属性を含む)が使用できることを示す。
resolve-dtd-uris 読み取り/書き込み true 「true」の値は、宣言のシステムIDが基底URIを基準にして報告前に絶対化されることを示す(デフォルトによるすべてのSAX2 XMLパーサーの動作)。 「false」の値は、IDが絶対化されないことを示す。 パーサーはLocator.getSystemId()の基底URIを提供する。 これは渡されたシステムIDに適用される
  • DTDHandler.notationDecl(),
  • DTDHandler.unparsedEntityDecl()
  • DeclHandler.externalEntityDecl().
これは、宣言の報告に使用されないEntityResolver.resolveEntity()や、絶対化されていないURIをすでに提供しているLexicalHandler.startDTD()には適用されない。
string-interning 読み取り/書き込み 指定なし 要素、接頭辞、属性、エンティティ、表記法、およびローカル名のすべてのXML名と名前空間URIがjava.lang.String.internを使用して保持される場合は「true」の値を持つ。 これによって、より低速なString.equals()呼出しを使用しなくても、文字列定数が等しいかどうかをすばやく判定できるようになる。
unicode-normalization-checking 読み取り/書き込み false XML 1.1勧告のセクション2.13と付録Bで説明されているようなUnicode正規化エラーをパーサーが報告するかどうかを制御する。 trueの場合、Unicode正規化エラーはErrorHandler.error()を使用して報告される。 このようなエラーは、ほかのUnicode関連のエンコーディング・エラーとは違い、それ自体が致命的なエラーではない。
use-attributes2 読取り専用 適用外 このパーサーによってContentHandler.startElement()に渡されたAttributesオブジェクトがorg.xml.sax.ext.Attributes2インタフェースを実装している場合は「true」を返す。 このインタフェースは、属性がデフォルトで設定されたかどうかではなく、ソース・テキストで指定されたかどうかなどのDTD関連の追加情報を公開する。
use-locator2 読取り専用 適用外 このパーサーによってContentHandler.setDocumentLocator()に渡されたLocatorオブジェクトがorg.xml.sax.ext.Locator2インタフェースを実装している場合は「true」を返す。 このインタフェースは使用されている文字エンコーディングやXMLのバージョンなどのエンティティの追加情報を公開する。
use-entity-resolver2 読み取り/書き込み true setEntityResolverorg.xml.sax.ext.EntityResolver2インタフェースを実装しているオブジェクトが渡された場合にそれらの新しいメソッドが使用されるときは「true」を返す。 新しいメソッドが使用されないことを示す場合は「false」を返す。
validation 読み取り/書き込み 指定なし パーサーがすべての妥当性エラーを報告しているかどうかを制御する。trueの場合、すべての外部エンティティが読み取られる。
xmlns-uris 読み取り/書き込み false namespace-prefixes機能が設定されたとき、パーサーが名前空間宣言の属性をhttp://www.w3.org/2000/xmlns/名前空間に存在するものとして処理するかどうかを制御する。 デフォルトでは、SAX2はこのような属性がどの名前空間にも存在しないということを明示している元の「Namespaces in XML」勧告に従う。 このオプションのフラグをtrueに設定することによって、SAX2イベントを下位互換できない元の勧告の今後の改訂版に従わせ、それらの属性を名前空間に置く。
xml-1.1 読取り専用 適用外 パーサーがXML 1.1とXML 1.0の両方をサポートする場合は「true」を返す。 XML 1.0のみをサポートする場合は「false」を返す。

namespacesプロパティとnamespace-prefixesプロパティのデフォルト値をサポートする必要があります。 それ以外の機能フラグのサポートは完全にオプションです。

SAX2で指定されていないデフォルト値の場合、それぞれのXMLReader実装によってそのデフォルトを指定しますが、機能フラグを公開しないように選択することもできます。 ここで指定されないかぎり、実装によってこれらの標準機能フラグの現在の値を変更できますが、構文解析中は変更できません。

SAX2標準ハンドラおよびプロパティID

パーサー・インタフェースの特性をオブジェクトとして説明する場合、別の名前空間が定義されます。 この名前空間のオブジェクトはURIによって再度識別されます。標準のプロパティURIには、lexical-handlerdom-nodeなどの識別子の前に接頭辞http://xml.org/sax/properties/が付きます。 それらのプロパティはsetProperty()を使用して管理します。 識別子は次のとおりです。

標準プロパティID
プロパティID 説明
declaration-handler 字句構文規則(「文書の要素名は...」)として扱われるものやすべてのSAXパーサーに対して必須であるものを除いて(DTDHandler)ほとんどのDTD宣言を見るために使用する。 オブジェクトはorg.xml.sax.ext.DeclHandlerを実装している必要がある。
document-xml-version startDocument()コールバックが終了した後、構文解析中のみ検証される。読取り専用。 このプロパティはXML 1.0やXML 1.1など、文書の実際のXMLバージョンを説明するリテラル文字列。
dom-node parser.parse()パラメータを無視するDOM Walker型パーサーの場合、これはパーサーが移動するDOM (サブ)ツリーを指定するために使用される。 オブジェクトはorg.w3c.dom.Nodeインタフェースを実装している必要がある。
lexical-handler コメント、CDATA区切り文字、選択された一般のエンティティの取り込み、DTDの最初と最後(および文書要素名の宣言)といった一部のアプリケーションで必須の構文イベントを見るために使用する。 オブジェクトはorg.xml.sax.ext.LexicalHandlerを実装している必要がある。
xml-string パーサーのコールバック中のみ読取り可能。これによって、現在のイベントを扱うTBS文字チャンクを公開する。

これらの標準プロパティはすべてオプションです。 XMLReaderの実装は、XMLReaderをサポートする必要はありません。

APIのノート:
最初は「SAXプロジェクト」で開発されたSAX APIは、1.4以降Java SEによって定義されています。
導入されたバージョン:
1.4
  • クラス
    説明
    非推奨。
    このインタフェースは、名前空間サポートを含むSAX2 Attributesインタフェースで置き換えられています。
    XML属性のリストのためのインタフェースです。
    文書の論理コンテンツの通知を受け取ります。
    非推奨。
    このインタフェースは、名前空間サポートを含むSAX2 ContentHandlerインタフェースで置き換えられています。
    標準DTD関連イベントの通知を受け取ります。
    エンティティを解決するための基本インタフェースです。
    SAXエラー・ハンドラの基本インタフェースです。
    非推奨。
    このクラスは非推奨のDocumentHandlerインタフェースで動作します。
    XMLエンティティの単一の入力ソースです。
    SAXイベントと文書の位置を関連付けるためのインタフェースです。
    非推奨。
    このインタフェースは、名前空間サポートを含むSAX2 XMLReaderインタフェースで置き換えられています。
    SAXの一般的なエラーまたは警告をカプセル化します。
    認識されない識別子のための例外クラスです。
    サポート対象外の操作のための例外クラスです。
    XML構文解析エラーまたは警告をカプセル化します。
    XMLフィルタのインタフェースです。
    コールバックを使ってXML文書を読み取るためのインタフェースです。