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

前へ
前へ
 
次へ
次へ
 

7 C用のSAX APIパッケージ

SAXはイベントベースのXML解析用の標準インタフェースで、XML-DEVメーリング・リストのメンバーが共同開発したものです。SAXを使用するには、関数ポインタを使用してxmlsaxcb構造を初期化し、XmlLoadSaxコールのいずれかに渡します。ユーザー定義のコンテキスト構造に対するポインタも提供されており、各SAX関数に渡されます。

イベントベースのスキーマ検証のAPIについては、第4章「C用のイベントAPIパッケージ」を参照してください。

この章の内容は次のとおりです。


関連項目:

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

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



SAXインタフェース

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

表7-1 SAXメソッドの概要

関数 概要

XmlSaxAttributeDecl()


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

XmlSaxCDATA()


CDATAのSAX通知を受け取ります。Oracle拡張機能。

XmlSaxCharacters()


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

XmlSaxComment()


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

XmlSaxElementDecl()


要素の宣言のSAX通知を受け取ります。Oracle拡張機能。

XmlSaxEndDocument()


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

XmlSaxEndElement()


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

XmlSaxNotationDecl()


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

XmlSaxPI()


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

XmlSaxParsedEntityDecl()


解析対象エンティティの宣言のSAX通知を受け取ります。Oracle拡張機能。

XmlSaxStartDocument()


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

XmlSaxStartElement()


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

XmlSaxStartElementNS()


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

XmlSaxUnparsedEntityDecl()


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

XmlSaxWhitespace()


無視できる(空白)データのSAX通知を受け取ります。

XmlSaxXmlDecl()


XML宣言のSAX通知を受け取ります。Oracle拡張機能。



XmlSaxAttributeDecl()

このイベントはDTDの要素宣言をマークします。要素の名前と内容はデータ・エンコーディングに含まれます。属性は所属する要素の前に宣言できることに注意してください。

構文

xmlerr XmlSaxAttributeDecl(
   void *ctx, 
   oratext *elem, 
   oratext *attr, 
   oratext *body);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
elem
IN
属性が宣言される要素(データ・エンコーディング)
attr
IN
属性名(データ・エンコーディング)
body
IN
属性宣言の本体

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


関連項目:

XmlSaxAttributeDecl()


XmlSaxCDATA()

このイベントではCDATATextと異なるものとして処理されます。XmlSaxCDATAコールバックが指定されない場合、Textコールバックが呼び出されます。データがデータ・エンコーディングに追加され、長さがバイトではなく文字数で戻されます。無視できる(空白形式の)文字データの通知を受け取る、XmlSaxWhitespaceも参照してください。

構文

xmlerr XmlSaxCDATA(
   void *ctx, 
   oratext *ch, 
   size_t len);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
ch
IN
CDATAのポインタ(データ・エンコーディング)
len
IN
CDATAの長さ、文字数

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


関連項目:

XmlSaxWhitespace()


XmlSaxCharacters()

このイベントはTextまたはCDATAのいずれかの文字データをマークします。XmlSaxCDATAコールバックが指定されている場合、かわりにCDATAがそのコールバックに送られます。XmlSaxCDATAコールバックが指定されていない場合、TextCDATAはいずれもXmlSaxCharactersコールバックに送られます。データがデータ・エンコーディングに追加され、長さがバイトではなく文字数で戻されます。無視できる(空白形式の)文字データの通知を受け取る、XmlSaxWhitespaceも参照してください。

構文

xmlerr XmlSaxCharacters(
   void *ctx, 
   oratext *ch, 
   size_t len);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
ch
IN
データのポインタ(データ・エンコーディング)
len
IN
データの長さ、文字数

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


関連項目:

XmlSaxWhitespace()


XmlSaxComment()

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

構文

xmlerr XmlSaxComment(
   void *ctx, 
   oratext *data);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
data
IN
コメントのデータ(データ・エンコーディング)

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


XmlSaxElementDecl()

このイベントはDTDの要素宣言をマークします。要素の名前と内容はデータ・エンコーディングに含まれます。

構文

xmlerr XmlSaxElementDecl(
   void *ctx, 
   oratext *name, 
   oratext *content);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
name
IN
要素名
content
IN
要素のコンテキスト・モデル

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


関連項目:

XmlSaxAttributeDecl()


XmlSaxEndDocument()

最後のSAXイベントで、ドキュメントごとに1回コールされ、ドキュメントの終わりを示します。対応するイベントはXmlSaxStartDocumentです。

構文

xmlerr XmlSaxEndDocument(
   void *ctx);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


関連項目:

XmlSaxStartDocument()


XmlSaxEndElement()

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

構文

xmlerr XmlSaxEndElement(
   void *ctx, 
   oratext *name);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
name
IN
要素の終わりの名前(データ・エンコーディング)

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


関連項目:

XmlSaxEndElement()


XmlSaxNotationDecl()

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

構文

xmlerr XmlSaxNotationDecl(
   void *ctx, 
   oratext *name, 
   oratext *pubId, 
   oratext *sysId);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
name
IN
表記法名(データ・エンコーディング)
pubId
IN
データ・エンコーディング時の表記の公開識別子、またはNULL
sysId
IN
データ・エンコーディング時の表記法のシステム識別子、またはNULL

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


XmlSaxPI()

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

構文

xmlerr XmlSaxPI(
   void *ctx, 
   oratext *target, 
   oratext *data);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
target
IN
PIのターゲット(データ・エンコーディング)
data
IN
データ・エンコーディング時のPIのデータ、またはNULL

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


XmlSaxParsedEntityDecl()

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

構文

xmlerr XmlSaxParsedEntityDecl(
   void *ctx, 
   oratext *name, 
   oratext *value, 
   oratext *pubId, 
   oratext *sysId, 
   boolean general);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
name
IN
エンティティ名(データ・エンコーディング)
value
IN
エンティティの値(データ・エンコーディング)
pubId
IN
データ・エンコーディングに含まれたエンティティの公開識別子、またはNULL
sysId
IN
エンティティのシステム識別子(データ・エンコーディング)
general
IN
汎用エンティティの場合はTRUE、パラメータ・エンティティの場合はFALSE

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


XmlSaxStartDocument()

最初のSAXイベントで、ドキュメントごとに1回コールされ、ドキュメントの始まりを示します。対応するイベントはXmlSaxEndDocumentです。

構文

xmlerr XmlSaxStartDocument(
   void *ctx);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


関連項目:

XmlSaxEndDocument()


XmlSaxStartElement()

このイベントは要素の先頭を示します。元の名前空間を認識しないバージョンのSAX 1であることに注意してください。XmlSaxStartElementNSが名前空間を認識するバージョンのSAX 2です。両方が登録されている場合、NSバージョンのみがコールされます。要素名はすべての属性パートと同様に、データ・エンコーディングに含まれます。属性のマッピングの操作については、NamedNodeMapインタフェースの関数を参照してください。対応する関数はXmlSaxEndElementです(この関数の名前空間を認識するバージョンはありません)。

構文

xmlerr XmlSaxStartElement(
   void *ctx, 
   oratext *name, 
   xmlnodelist *attrs);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
name
IN
要素名(データ・エンコーディング)
attrs
IN
要素の属性のNamedNodeMap

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


XmlSaxStartElementNS()

このイベントは要素の先頭を示します。名前空間を認識するバージョンの新しいSAX 2であることに注意してください。XmlSaxStartElementは名前空間を認識しないバージョンのSAX 1です。両方が登録されている場合、NSバージョンのみがコールされます。要素の修飾名、ローカル名、名前空間URIはすべての属性パートと同様に、データ・エンコーディングに含まれます。属性のマッピングの操作については、NamedNodeMapインタフェースの関数を参照してください。対応する関数はXmlSaxEndElementです(この関数の名前空間を認識するバージョンはありません)。

構文

xmlerr XmlSaxStartElementNS(
   void *ctx, 
   oratext *qname, 
   oratext *local, 
   oratext *nsp, 
   xmlnodelist *attrs);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
qname
IN
要素の修飾名(データ・エンコーディング)
local
IN
要素の名前空間のローカル名(データ・エンコーディング)
nsp
IN
要素の名前空間URI(データ・エンコーディング)
attrs
IN
要素の属性のNodeList、またはNULL

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


XmlSaxUnparsedEntityDecl()

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

構文

xmlerr XmlSaxUnparsedEntityDecl(
   void *ctx, 
   oratext *name, 
   oratext *pubId, 
   oratext *sysId, 
   oratext *note);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
name
IN
エンティティ名(データ・エンコーディング)
pubId
IN
データ・エンコーディングに含まれたエンティティの公開識別子、またはNULL
sysId
IN
エンティティのシステム識別子(データ・エンコーディング)
note
IN
エンティティの表記法名(データ・エンコーディング)

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


関連項目:

XmlSaxParsedEntityDecl()


XmlSaxWhitespace()

このイベントは改行、行間のインデントなどの無視できる空白データをマークします。対応する関数は、通常の文字データの通知を受け取るXmlSaxCharactersです。データはデータ・エンコーディングに含まれ、戻される長さはバイトではなく文字数です。

構文

xmlerr XmlSaxWhitespace(
   void *ctx, 
   oratext *ch, 
   size_t len);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
ch
IN
データのポインタ(データ・エンコーディング)
len
IN
データの長さ、文字数

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]


関連項目:

XmlSaxCharacters()


XmlSaxXmlDecl()

このイベントはXML宣言をマークします。XmlSaxStartDocumentは常に最初のイベントです。このコールバックが登録されXMLDeclが存在する場合、これが2番目のイベントになります。エンコーディング・フラグにより、エンコーディングが指定されているかどうかが示されます。ドキュメントのデフォルトのエンコーディング指定はオーバーライドされる(あるいは間違っている)場合があり、またなんらかの方式で入力がデータ・エンコーディングに変換されるため、ドキュメントで指定される実際のエンコーディングは指定されません。スタンドアロン・フラグの場合、フラグが指定されていない場合は-1が戻されます。それ以外の場合、FALSE0TRUEは1が戻されます。

構文

xmlerr XmlSaxXmlDecl(
   void *ctx, 
   oratext *version, 
   boolean encoding, 
   sword standalone);
パラメータ IN/OUT 説明
ctx
IN
ユーザーのSAXコンテキスト
version
IN
XMLDeclのバージョン文字列(データ・エンコーディング)
encoding
IN
エンコーディングが指定されているかどうか
standalone
IN
スタンドアロン・ドキュメントの値。指定されない場合は< 0

戻り値

(xmlerr) エラー・コード。成功の場合はXMLERR_OK [0]