ヘッダーをスキップ
Oracle® Database XML C++ APIリファレンス
11gリリース2 (11.2)
E94919-01
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

5 C++用のパーサーAPIパッケージ

パーサー・インタフェースには、パーサー例外、バリデータ、パーサー、DOMParser、SAXParserが含まれます。

この章には、次の項が含まれます。


関連項目:

  • 『Oracle XML Developer's Kitプログラマーズ・ガイド』

  • 『Oracle XML DB開発者ガイド』



パーサーのデータ型

表5-1Parserパッケージのデータ型の概要を示します。

表5-1 データ型の概要: パーサー・パッケージ

データ型 説明

ParserExceptionCode


例外のパーサー実装です。

DOMParserIdType


パーサーの識別子を定義します。

SAXParserIdType


ノードの型を定義します。

SchValidatorIdType


バリデータの識別子を定義します。



ParserExceptionCode

例外のパーサー実装です。

定義

typedef enum ParserExceptionCode {
   PARSER_UNDEFINED_ERR = 0,
   PARSER_VALIDATION_ERR = 1, 
   PARSER_VALIDATOR_ERR = 2, 
   PARSER_BAD_ISOURCE_ERR = 3, 
   PARSER_CONTEXT_ERR = 4,
   PARSER_PARAMETER_ERR = 5, 
   PARSER_PARSE_ERR = 6, 
   PARSER_SAXHANDLER_SET_ERR = 7, 
   PARSER_VALIDATOR_SET_ERR = 8 } 
ParserExceptionCode;

DOMParserIdType

パーサーの識別子を定義します。

定義

typedef enum DOMParserIdType {      DOMParCXml         = 1    } DOMParserIdType;
ypedef enum CompareHowCode {
   START_TO_START = 0,
   START_TO_END = 1, 
   END_TO_END = 2, 
   END_TO_START = 3 }
CompareHowCode;

SAXParserIdType

パーサーの識別子を定義します。

定義

typedef enum SAXParserIdType {
   SAXParCXml = 1 } 
SAXParserIdType;

SchValidatorIdType

バリデータの識別子を定義します。これらの識別子は、特定のバリデータ・オブジェクトを作成する必要がある場合に、XMLツール・ファクトリのパラメータとして使用されます。

定義

typedef enum SchValidatorIdType {
   SchValCXml        = 1
} SchValidatorIdType;

DOMParserインタフェース

表5-2DOMParserインタフェースで使用できるメソッドの概要を示します。

表5-2 DOMParserメソッドの概要: パーサー・パッケージ

関数 概要

getContext()


パーサーのXMLコンテキスト(割当てとエンコーディング)を戻します。

getParserId()


パーサーIDを取得します。

parse()


ドキュメントを解析します。

parseDTD()


DTDドキュメントを解析します。

parseSchVal()


ドキュメントを解析し、検証します。

setValidator()


このパーサーのバリデータを設定します。



getContext()

各パーサー・オブジェクトは個別のOracle XMLコンテキスト内で割り当てられ、実行されます。このメンバー関数は、このコンテキストへのポインタを戻します。

構文

virtual Context* getContext() const = 0;

戻り値

(Context*) パーサーのコンテキストへのポインタ。


getParserId()

構文

virtual DOMParserIdType getParserId() const = 0;

戻り値

(DOMParserIdType) パーサーID


parse()

ドキュメントを解析し、ツリーのルート・ノードを戻します。

構文

virtual DocumentRef< Node>* parse(
   InputSource* isrc_ptr,
   boolean DTDvalidate = FALSE,
   DocumentTypeRef< Node>* dtd_ptr = NULL,
   boolean no_mod = FALSE,
   DOMImplementation< Node>* impl_ptr = NULL)
throw (ParserException) = 0;
パラメータ 説明
isrc_ptr
入力ソース
DTDvalidate
DTDで検証された場合はTRUE
dtd_ptr
DTD参照
no_mod
変更が許可されていない場合はTRUE
impl_ptr
オプションのDomImplementationポインタ

戻り値

(DocumentRef) ドキュメント・ツリー


parseDTD()

DTDドキュメントを解析します。

構文

virtual DocumentRef< Node>* parseDTD(
   InputSource* isrc_ptr,
   boolean no_mod = FALSE,
   DOMImplementation< Node>* impl_ptr = NULL)
throw (ParserException) = 0;
パラメータ 説明
isrc_ptr
入力ソース
no_mod
変更が許可されていない場合はTRUE
impl_ptr
オプションのDomImplementationポインタ

戻り値

(DocumentRef) DTDドキュメント・ツリー。


parseSchVal()

ドキュメントを解析し、検証します。対応するパラメータがNULL以外の場合、バリデータを設定します。

構文

virtual DocumentRef< Node>* parseSchVal(
   InputSource* src_par,
   boolean no_mod = FALSE,
   DOMImplementation< Node>* impl_ptr = NULL,
   SchemaValidator< Node>* tor_ptr = NULL)
throw (ParserException) = 0;
パラメータ 説明
isrc_ptr
入力ソース
no_mod
変更が許可されていない場合はTRUE
impl_ptr
オプションのDomImplementationポインタ
tor_ptr
スキーマ・バリデータ

戻り値

(DocumentRef) ドキュメント・ツリー


setValidator()

parseSchValで別のバリデータが指定されている場合を除き、すべての検証についてバリデータを設定します。

構文

virtual void setValidator(
SchemaValidator< Node>* tor_ptr) = 0;
パラメータ 説明
tor_ptr
スキーマ・バリデータ


GParserインタフェース

表5-3GParserインタフェースで使用できるメソッドの概要を示します。

表5-3 GParserメソッドの概要: パーサー・パッケージ

関数 概要

SetWarnDuplicateEntity()


複数のエンティティ宣言がある場合に警告を発生させるかどうかを指定します。

getBaseURI()


ドキュメントのベースURIを戻します。

getDiscardWhitespaces()


要素間の空白が破棄されているかどうかを確認します。

getExpandCharRefs()


文字参照が展開されているかどうかを確認します。

getSchemaLocation()


このドキュメントのスキーマの位置を取得します。

getStopOnWarning()


警告の発生時にドキュメント処理が停止されるかどうかを取得します。

getWarnDuplicateEntity()


複数のエンティティ宣言がある場合に警告が発生するかどうかを取得します。

setBaseURI()


ドキュメントのベースURIを設定します。

setDiscardWhitespaces()


書式を整えるための空白を破棄するかどうかを設定します。

setExpandCharRefs()


文字参照を展開するかどうかを設定します。

setSchemaLocation()


ドキュメントのスキーマの位置を設定します。

setStopOnWarning()


警告の発生時にドキュメント処理を停止させるかどうかを設定します。



SetWarnDuplicateEntity()

エンティティが2回以上宣言されている場合に警告を発生させるかどうかを指定します。

構文

void setWarnDuplicateEntity(
   boolean par_bool);
パラメータ 説明
par_bool
エンティティ宣言が複数ある場合に警告を発生させる場合はTRUE


getBaseURI()

ドキュメントのベースURIを戻します。通常は、URIからロードされたドキュメントにのみ、ベースURIが自動的に設定されます。他のソース(stdin、バッファなど)からロードされたドキュメントには通常、ベースURIは設定されていませんが、相対URIを解決するために、setBaseURIを使用してベースURIが設定されている場合もあります。

構文

oratext* getBaseURI() const;

戻り値

(oratext*) 現在のドキュメントのベースURI(またはNULL)。


getDiscardWhitespaces()

入力ドキュメントの改行やインデントなど、要素間にある、書式を整えるための空白が破棄されているかどうかを確認します。デフォルトでは、すべての入力文字が維持されます。

構文

boolean getDiscardWhitespaces() const;

戻り値

(boolean) 要素間の空白が破棄されている場合はTRUE


getExpandCharRefs()

DOMデータで文字参照が展開されているかどうかを確認します。デフォルトでは、文字参照は参照が表す文字に置き換えられます。ただし、ドキュメントが保存されると、それらの文字エンティティは再度表示されません。ロードと保存の後も状態を維持するには、文字参照を展開しないようにします。

構文

boolean getExpandCharRefs() const;

戻り値

(boolean) 文字参照が展開されている場合はTRUE


getSchemaLocation()

ドキュメントのスキーマの位置を取得します。データベースにドキュメントをロードするときに、最適なレイアウトを判断するために使用します。

構文

oratext* getSchemaLocation() const;

戻り値

(oratext*) スキーマの位置


getStopOnWarning()

TRUEが戻される場合、警告はエラーと同様に処理され、解析、検証などは即時停止します。デフォルトでは、警告が発行されても処理は続けられます。

構文

boolean getStopOnWarning() const;

戻り値

(boolean) 警告の発生時にドキュメント処理を停止させる場合はTRUE


getWarnDuplicateEntity()

エンティティが2回以上宣言されている場合に警告が発生するかどうかを取得します。

構文

boolean getWarnDuplicateEntity() const;

戻り値

(boolean) エンティティ宣言が複数ある場合に警告を発生させる場合はTRUE


setBaseURI()

ドキュメントのベースURIを設定します。通常は、URIからロードされたドキュメントにのみ、ベースURIが自動的に設定されます。他のソース(stdin、バッファなど)からロードされたドキュメントには通常、ベースURIは設定されていませんが、相対URIを解決するために、setBaseURIを使用してベースURIが設定されている場合もあります。

構文

void setBaseURI( oratext* par);
パラメータ 説明
par
ベースURI


setDiscardWhitespaces()

入力ドキュメントの要素(改行とインデント)間にある、書式を整えるための空白を破棄するかどうかを設定します。デフォルトでは、すべての入力文字が維持されます。

構文

void setDiscardWhitespaces(
   boolean par_bool);
パラメータ 説明
par_bool
空白を破棄する場合はTRUE


setExpandCharRefs()

DOMデータで文字参照を展開するかどうかを設定します。通常、文字参照は参照が表す文字に置き換えられます。ただし、ドキュメントが保存されると、それらの文字エンティティは再度表示されません。ロードと保存の後も状態を維持するには、文字参照を展開しないようにします。

構文

void setExpandCharRefs( 
   boolean par_bool);
パラメータ 説明
par_bool
文字参照を破棄する場合はTRUE


setSchemaLocation()

ドキュメントのスキーマの位置を設定します。データベースにドキュメントをロードするときに、最適なレイアウトを判断するために使用します。

構文

 void setSchemaLocation(
   oratext* par);
パラメータ 説明
par
スキーマの位置


setStopOnWarning()

TRUEを設定すると、警告はエラーと同様に処理され、解析、検証などは即時停止します。デフォルトでは、警告が発行されても処理は続けられます。

構文

void setStopOnWarning( 
   boolean par_bool);
パラメータ 説明
par_bool
警告によりドキュメント処理を停止させる場合はTRUE


ParserExceptionインタフェース

表5-4ParserExceptionインタフェースで使用できるメソッドの概要を示します。

表5-4 ParserExceptionメソッドの概要: パーサー・パッケージ

関数 概要

getCode()


例外に埋め込まれたOracle XMLエラー・コードを取得します。

getMesLang()


エラー・メッセージの現在の言語(エンコーディング)を取得します。

getMessage()


Oracle XMLエラー・メッセージを取得します。

getParserCode()


例外に埋め込まれたパーサー例外コードを取得します。



getCode()

XmlExceptionから継承された仮想メンバー関数です。

構文

virtual unsigned getCode() const = 0;

戻り値

(unsigned) 数値のエラー・コード(正常に終了した場合は0)。


getMesLang()

XmlExceptionから継承された仮想メンバー関数です。

構文

virtual oratext* getMesLang() const = 0;

戻り値

(oratext*) エラー・メッセージの現在の言語(エンコーディング)。


getMessage()

XmlExceptionから継承された仮想メンバー関数です。

構文

virtual oratext* getMessage() const = 0;

戻り値

(oratext *) エラー・メッセージ


getParserCode()

これは実行時の例外状況の、ParserExceptionCodeで定義されたパーサーおよびバリデータの例外コードを戻す、実装で定義済のメンバー関数のプロトタイプを定義する仮想メンバー関数です。

構文

virtual ParserExceptionCode getParserCode() const = 0;

戻り値

(ParserExceptionCode) 例外コード


SAXHandlerインタフェース

表5-5SAXHandlerインタフェースで使用できるメソッドの概要を示します。

表5-5 SAXHandlerメソッドの概要: パーサー・パッケージ

関数 概要

CDATA()


CDATAの通知を受け取ります。

XMLDecl()


XML宣言の通知を受け取ります。

attributeDecl()


属性の宣言の通知を受け取ります。

characters()


文字データの通知を受け取ります。

comment()


コメントの通知を受け取ります。

elementDecl()


要素の宣言の通知を受け取ります。

endDocument()


文書の終了通知を受け取ります。

endElement()


要素の終わりの通知を受け取ります。

notationDecl()


表記法宣言の通知を受け取ります。

parsedEntityDecl()


解析対象エンティティ宣言の通知を受け取ります。

processingInstruction()


処理命令の通知を受け取ります。

startDocument()


ドキュメントの始まりの通知を受け取ります。

startElement()


要素の始まりの通知を受け取ります。

startElementNS()


要素の始まりの通知を受け取ります(名前空間を認識)。

unparsedEntityDecl()


解析対象外エンティティ宣言の通知を受け取ります。

whitespace()


空白文字の通知を受け取ります。



CDATA()

このイベントはCDATAをTextと異なるものとして処理します。データがデータ・エンコーディングに追加され、長さがバイトではなく文字数で戻されます。これはOracleの拡張機能です。

構文

virtual void CDATA( 
   oratext* data,
   ub4 size) = 0;
パラメータ 説明
data
CDATAへのポインタ
size
CDATAのサイズ


XMLDecl()

このイベントはXML宣言(XMLDecl)をマークします。startDocumentイベントが常に最初に処理され、このイベントは2番目のイベントになります。エンコーディング・フラグにより、エンコーディングが指定されているかどうかが示されます。スタンドアロン・フラグの場合、指定されていない場合は-1が戻され、それ以外の場合はFALSEの場合は0TRUEの場合は1が戻されます。このメンバー関数は、Oracleの拡張機能です。

構文

virtual void XMLDecl( 
   oratext* version,
   boolean is_encoding,
   sword standalone) = 0;
パラメータ 説明
version
XMLDeclのバージョン文字列
is_encoding
エンコーディングが指定されているかどうか
standalone
スタンドアロン値フラグの値


attributeDecl()

このイベントはDTDの属性宣言をマークします。Oracle拡張機能であり、SAX標準ではありません。

構文

virtual void attributeDecl(
   oratext* attr_name,
   oratext *name, 
   oratext *content) = 0;
パラメータ 説明
attr_name

name

content
属性宣言の本体


characters()

このイベントは文字データをマークします。

構文

virtual void characters(
   oratext* ch,
   ub4 size) = 0;
パラメータ 説明
ch
データへのポインタ
size
データの長さ


comment()

このイベントはXML文書のコメントをマークします。コメントのデータはデータ・エンコーディングに追加されます。Oracle拡張機能であり、SAX標準ではありません。

構文

virtual void comment(
   oratext* data) = 0;
パラメータ 説明
data
コメントのデータ


elementDecl()

このイベントはDTDの要素宣言をマークします。Oracle拡張機能であり、SAX標準ではありません。

構文

virtual void elementDecl( 
   oratext *name, 
   oratext *content) = 0;
パラメータ 説明
name
要素名
content
要素の内容


endDocument()

文書の終了通知を受け取ります。

構文

virtual void endDocument() = 0;

endElement()

このイベントは要素の終わりをマークします。名前は要素のtagName(名前空間を認識する要素の場合は修飾名の場合があります)で、データ・エンコーディングに含まれます。

構文

virtual void endElement( oratext* name) = 0;

notationDecl()

このイベントはDTDの表記法の宣言をマークします。表記法名、公開識別子、およびシステム識別子はすべてデータ・エンコーディングに含まれます。識別子はいずれもオプションで、NULLでもかまいません。

構文

virtual void notationDecl(
   oratext* name,
   oratext* public_id,
   oratext* system_id) = 0;
パラメータ 説明
name
表記法名
public_id
表記法の公開識別子
sysem_id
表記法のシステム識別子


parsedEntityDecl()

DTDの解析対象のエンティティ宣言をマークします。解析対象エンティティの名前、公開識別子、システム識別子および表記法名がすべてデータ・エンコーディングに追加されます。これはOracleの拡張機能です。

構文

virtual void parsedEntityDecl(
   oratext* name,
   oratext* value,
   oratext* public_id,
   oratext* system_id,
   boolean general) = 0;
パラメータ 説明
name
エンティティ名
value
内部エンティティの場合はエンティティの値
public_id
エンティティの公開識別子
sysem_id
エンティティのシステム識別子
general
汎用エンティティかどうか(パラメータ・エンティティの場合はFALSE)


processingInstruction()

このイベントは処理命令をマークします。PIのターゲットとデータはデータ・エンコーディングに含まれます。ターゲットは必須ですが、データはNULLでもかまいません。

構文

virtual void processingInstruction( 
   oratext* target,
   oratext* data) = 0;
パラメータ 説明
target
PIのターゲット
data
PIのデータ


startDocument()

ドキュメントの始まりの通知を受け取ります。

構文

virtual void startDocument() = 0;

startElement()

このイベントは要素の先頭を示します。

構文

virtual void startElement( 
   oratext* name,
   NodeListRef< Node>* attrs_ptr) = 0;
パラメータ 説明
name
要素名
attrs_ptr
要素の属性のリスト


startElementNS()

このイベントは要素の先頭を示します。これは新しいSAX 2で、名前空間を認識することに注意してください。要素の修飾名、ローカル名、名前空間URIはすべての属性パートと同様に、データ・エンコーディングに含まれます。

構文

virtual void startElementNS(
   oratext* qname,
   oratext* local,
   oratext* ns_URI,
   NodeListRef< Node>* attrs_ptr) = 0;
パラメータ 説明
qname
要素の修飾名
local
要素の名前空間のローカル名
ns_URI
要素の名前空間URI
attrs_ref
要素の属性のNodeList


unparsedEntityDecl()

DTDの解析対象外エンティティ宣言をマークします。解析対象外のエンティティ名、公開識別子、システム識別子および表記法名はすべてデータ・エンコーディングに含まれます。

構文

virtual void unparsedEntityDecl(
   oratext* name,
   oratext* public_id,
   oratext* system_id,
   oratext* notation_name) = 0;
};
パラメータ 説明
name
エンティティ名
public_id
エンティティの公開識別子
sysem_id
エンティティのシステム識別子
notation_name
エンティティの表記法名


whitespace()

このイベントは改行、行間のインデントなどの無視できる空白データをマークします。

構文

virtual void whitespace(
   oratext* data,
   ub4 size) = 0;
パラメータ 説明
data
データへのポインタ
size
データの長さ


SAXParserインタフェース

表5-6SAXParserインタフェースで使用できるメソッドの概要を示します。

表5-6 SAXParserメソッドの概要: パーサー・パッケージ

関数 概要

getContext()


パーサーのXMLコンテキスト(割当てとエンコーディング)を戻します。

getParserId()


パーサーIDを戻します。

parse()


ドキュメントを解析します。

parseDTD()


DTDを解析します。

setSAXHandler()


SAXハンドラを設定します。



getContext()

各パーサー・オブジェクトは個別のOracle XMLコンテキスト内で割り当てられ、実行されます。このメンバー関数は、このコンテキストへのポインタを戻します。

構文

virtual Context* getContext() const = 0;

戻り値

(Context*) パーサーのコンテキストへのポインタ。


getParserId()

パーサーIDを戻します。

構文

virtual SAXParserIdType getParserId() const = 0;

戻り値

(SAXParserIdType) パーサーID


parse()

ドキュメントを解析します。

構文

virtual void parse( 
   InputSource* src_ptr,
   boolean DTDvalidate = FALSE,
   SAXHandlerRoot* hdlr_ptr = NULL)
throw (ParserException) = 0;
パラメータ 説明
src_ptr
入力ソース
DTDValidate
DTDで検証する場合はTRUE
hdlr_ptr
SAXハンドラ・ポインタ


parseDTD()

DTDを解析します。

構文

virtual void parseDTD( 
   InputSource* src_ptr,
   SAXHandlerRoot* hdlr_ptr = NULL)
throw (ParserException) = 0;
パラメータ 説明
src_ptr
入力ソース
hdlr_ptr
SAXハンドラ・ポインタ


setSAXHandler()

パーサー・コールで別のSAXハンドラが指定されている場合を除き、すべてのパーサー起動のSAXハンドラを設定します。

構文

virtual void setSAXHandler(
   SAXHandlerRoot* hdlr_ptr) = 0;
パラメータ 説明
hdlr_ptr
SAXハンドラ・ポインタ


SchemaValidatorインタフェース

表5-7SchemaValidatorインタフェースで使用できるメソッドの概要を示します。

表5-7 SchemaValidatorメソッドの概要: パーサー・パッケージ

関数 概要

getSchemaList()


スキーマ・リストを戻します。

getValidatorId()


バリデータ識別子を取得します。

loadSchema()


スキーマ・ドキュメントをロードします。

unloadSchema()


スキーマ・ドキュメントをアンロードします。



getSchemaList()

「list」がNULLの場合、ロードされたスキーマ・リスト・ドキュメントのサイズのみを戻します。「list」がNULL以外の場合、ユーザーが用意するポインタ・バッファにURLポインタのリストが戻されます。ユーザー側で、十分な大きさのバッファを用意する必要があります。

構文

virtual ub4 getSchemaList(
   oratext **list) const = 0;
パラメータ 説明
list
ポインタ・バッファのアドレス

戻り値

(ub4) リスト・サイズとロードされたスキーマのリスト(I/Oパラメータ)。


getValidatorId()

このバリデータ・オブジェクトの実装に対応するバリデータ識別子を取得します。

構文

virtual SchValidatorIdType getValidatorId() const = 0;

戻り値

(SchValidatorIdType) バリデータ識別子


loadSchema()

次の検証セッションで使用されるスキーマ・ドキュメントをロードします。エラーの場合は、例外をスローします。

構文

virtual void loadSchema( 
   oratext* schema_URI)
throw (ParserException) = 0;
パラメータ 説明
schema_URI
スキーマ・ドキュメントのURL。コンパイラ・エンコーディング


unloadSchema()

スキーマ・ドキュメントとその(バリデータからネスト方式でインクルードまたはインポートされた)すべての子孫をアンロードします。以前にロードされたすべてのスキーマ・ドキュメントは、アンロードされるまでロードされた状態です。ロードされたすべてのスキーマ・ドキュメントをアンロードするためには、schema_URINULLに設定します。エラーの場合は、例外をスローします。

構文

virtual void unloadSchema(
   oratext* schema_URI)
throw (ParserException) = 0;
パラメータ 説明
schema_URI
スキーマ・ドキュメントのURL。コンパイラ・エンコーディング