このパッケージでは、XMLコールバックの関数(または関数ポインタ)を宣言するマクロを定義します。コールバックはエラー・メッセージ処理、メモリーの割当てと解放およびストリーム操作に使用されます。
この章の内容は次のとおりです。
|
関連項目:
|
表1-1に、Cのすべてのデータ型とその説明を示します。
表1-1 Cのデータ型の概要
| データ型 | 目的 |
|---|---|
|
|
DOM範囲の比較に使用される定数。 |
|
|
XMLセッションのすべてのドキュメントで共有されるコンテキスト。 |
|
|
|
|
|
多くの関数により戻される、数値のエラー・コード。 |
|
|
XMLイベント・コンテキスト。 |
|
|
XMLツリーまたはサブツリーのハッシュ値(ダイジェスト)。 |
|
|
ユーザー定義の汎用入力ストリーム。 |
|
|
DOM2 |
|
|
ノードの数値型コード。 |
|
|
ユーザー定義の汎用出力ストリーム。 |
|
|
XPointerのポイント位置。 |
|
|
DOM2範囲の構造の制御。 |
|
|
SOAP接続のためのバインディング。 |
|
|
SOAP接続オブジェクト。 |
|
|
SOAP操作のコンテキスト。 |
|
|
SOAPノードのロール。 |
|
|
表示するノードのタイプの選択に使用されるビット・フラグ。 |
|
|
URLからデータを取り出すための、既知のアクセス・メソッドの列挙。 |
|
|
この共有体には、URLデータへのアクセスに必要なハンドル、すなわちストリームまたは |
|
|
この構造にはURLのサブパートが含まれます。 |
|
|
XPointer位置のデータ型。 |
|
|
XPointer位置の設定データ型。 |
|
|
戻されるXSLTオブジェクトのタイプ。 |
|
|
XSLTプロセッサで生成される出力のタイプ。 |
|
|
|
|
|
|
|
|
XSLTコンパイラの制御フラグ。 |
|
|
XSLTVMオブジェクトのタイプ。 |
|
|
XPathの最上位コンテキスト。 |
|
|
XPath式。 |
|
|
XPathオブジェクト。 |
|
|
XMLSchemaバリデータのコンテキスト。 |
|
|
XSLの最上位コンテキスト。 |
|
|
XSLVMプロセッサのランタイム・オブジェクト。コンテンツは内部的に使用されるため、ユーザーがアクセスすることはできません。 |
DOM範囲の比較に使用される定数。
定義
typedef enum {
XMLDOM_START_TO_START ,
XMLDOM_START_TO_END ,
XMLDOM_END_TO_END ,
XMLDOM_END_TO_START
} xmlcmphow;
XMLセッションのすべてのドキュメントで共有されるコンテキスト。エンコーディング情報、低レベルのメモリー割当て関数ポインタ、エラー・メッセージの言語またはエンコーディング、およびオプションのハンドラ関数などが含まれます。ドキュメントのロード(解析)、およびDOMの作成、SAXの生成などに必要です。
定義
struct xmlctx; typedef struct xmlctx xmlctx;
1つ以上の操作を表す操作タイプ。diffをXmlDiff()のカスタム・オペレーション・ビルダー(OB)に渡すために使用。
定義
typedef enum {
XMLDF_OP_NONE, /* Should not be set to non-zero for XMLDF_NUM_OP macro below */
XMLDF_OP_UPDATE,
XMLDF_OP_RENAME,
XMLDF_OP_DELETE,
XMLDF_OP_INSERT_BEFORE,
XMLDF_OP_APPEND
} xmldfoptype;
XmlDiff操作の入力タイプを指定。
定義
typedef enum {
XMLDF_SRCT_NONE , /* default is DOM */
XMLDF_SRCT_DOM, /* DOM: doc node must be specified */
XMLDF_SRCT_FILE, /* file name must be specified */
XMLDF_SRCT_URL, /* URL in compiler encoding */
XMLDF_SRCT_BUFFER, /* buffer: buffer pointer and length must be specified */
XMLDF_SRCT_FILEP, /* FILE */
XMLDF_SRCT_OSTREAM, /* orastream: stream pointer must be specified */
XMLDF_SRCT_DOMNODE /* DOM node, used with XmlHash() */
} xmldfsrct;
多くの関数により戻される、数値のエラー・コード。値が0(ゼロ)の場合は成功を、0(ゼロ)以外の場合にはエラーを表します。
定義
typedef enum {
XMLERR_OK , /* success return */
XMLERR_NULL_PTR , /* NULL pointer */
XMLERR_NO_MEMORY , /* out of memory */
XMLERR_HASH_DUP , /* duplicate entry in hash table */
XMLERR_INTERNAL , /* internal error */
XMLERR_BUFFER_OVERFLOW , /* name/quoted string too long */
XMLERR_BAD_CHILD , /* invalid child for parent */
XMLERR_EOI , /* unexpected EndOfInformation */
XMLERR_BAD_MEMCB , /* invalid memory callbacks */
XMLERR_UNICODE_ALIGN , /* Unicode data misalignment */
XMLERR_NODE_TYPE , /* wrong node type */
XMLERR_UNCLEAN , /* context is not clean */
XMLERR_NESTED_STRINGS , /* internal: nested open str */
XMLERR_PROP_NOT_FOUND , /* property not found */
XMLERR_SAVE_OVERFLOW , /* save output overflowed */
XMLERR_NOT_IMP , /* feature not implemented */
XMLERR_NLS_MISMATCH , /* specify lxglo/lxd or neither*/
XMLERR_NLS_INIT , /* error at NLS initialization */
XMLERR_LEH_INIT , /* error at LEH initialization */
XMLERR_LML_INIT , /* error at LML initialization */
XMLERR_LPU_INIT /* error at LPU initialization */
} xmlerr;
XMLイベント・コンテキスト。
定義
typedef struct {
void *ctx_xmlevctx; /* implementation specific context */
xmlevdisp disp_xmlevctx; /* dispatch table */
ub4 checkword_xmlevctx; /* checkword for integrity check */
ub4 flags_xmlevctx; /* mode; default: expand_entity */
struct xmlevctx; /* input xmlevctx; chains the XML Event context */
} xmlevctx;
パーサー・プル・イベントのイベント・タイプ。
定義
typedef enum xmlevtype {
XML_EVENT_FATAL_ERROR, /* Fatal Error */
XML_EVENT_BEFORE_START, /* Before Start Document */
XML_EVENT_START_DOCUMENT, /* Indicates Start Document */
XML_EVENT_START_DTD, /* Start DTD */
XML_EVENT_END_DTD, /* End DTD */
XML_EVENT_NOTATION_DECLARATION, /* Notation Decl */
XML_EVENT_PE_DECLARATION, /* PE Decl */
XML_EVENT_UE_DECLARATION, /* US Decl */
XML_EVENT_ELEMENT_DECLARATION, /* Element Decl */
XML_EVENT_ATTLIST_DECLARATION, /* Attribute Decl */
XML_EVENT_START_ELEMENT, /* Start Element */
XML_EVENT_END_ELEMENT, /* End Element */
XML_EVENT_CHARACTERS, /* Characters (text) */
XML_EVENT_CHARACTERS_CONT, /* Characters Continued */
XML_EVENT_PI, /* Processing Instruction */
XML_EVENT_PI_CONT, /* Processing Instruction Continued */
XML_EVENT_COMMENT, /* Comment */
XML_EVENT_COMMENT_CONT, /* Comment Continued */
XML_EVENT_SPACE, /* White Space */
XML_EVENT_SPACE_CONT, /* White Space Continued */
XML_EVENT_ENTITY_REFERENCE, /* Entity Reference */
XML_EVENT_CDATA, /* CDATA */
XML_EVENT_CDATA_CONT, /* CDATA continued */
XML_EVENT_START_ENTITY, /* Start Entity */
XML_EVENT_END_ENTITY, /* End Entity */
XML_EVENT_END_DOCUMENT, /* End Document */
XML_EVENT_ERROR /* Error */
}xmlevtype;
XMLツリーまたはサブツリーのハッシュ値(ダイジェスト)。
2つのXMLツリーのハッシュ値が同じである場合、非常に高い確率でそれらのツリーは同じであると考えられます。MD5アルゴリズムを使用します。
定義
struct xmlhasht {
ub4 l_xmlhasht; /* lenght of digest in bytes */
ub1 d_xmlhasht[XMLDF_DIGEST_MAX]; /* the digest */
};
typedef struct xmlhasht xmlhasht;
ユーザー定義の汎用入力ストリーム。3つの関数ポインタが必要です(スタブでもかまいません)。コンテキスト・ポインタは完全なユーザー定義ポインタです。ストリームの管理に必要な状態の情報をすべて示します。このポインタはユーザー関数に最初の引数として渡されます。
定義
typedef struct xmlistream {
XML_STREAM_OPEN_F(
(*open_xmlistream),
xctx,
sctx,
path,
parts,
length);
XML_STREAM_READ_F(
(*read_xmlistream),
xctx,
sctx,
path,
dest,
size,
nraw, eoi);
XML_STREAM_CLOSE_F(
(*close_xmlistream),
xctx,
sctx);
void *ctx_xmlistream; /* user's stream context */
} xmlistream;
DOM2 NodeIteratorとTreeWalkerの構造を制御します。
定義
struct xmliter {
xmlnode *root_xmliter; /* root node of the iteration space */
xmlnode *cur_xmliter; /* current position iterator ref node */
ub4 show_xmliter; /* node filter mask */
void *filt_xmliter; /* node filter function */
boolean attach_xmliter; /* is iterator valid? */
boolean expan_xmliter; /* are external entities expanded? */
boolean before_xmliter; /* iter position before ref node? */
};
typedef struct xmliter xmliter;
typedef struct xmliter xmlwalk;
ノードの数値型コード。0は無効を意味し、1から13はDOM 1.0の標準番号です。14以上の数値は内部的に使用されます。
定義
typedef enum {
XMLDOM_NONE , /* bogus node */
XMLDOM_ELEM , /* element */
XMLDOM_ATTR , /* attribute */
XMLDOM_TEXT , /* char data not escaped by CDATA */
XMLDOM_CDATA , /* char data escaped by CDATA */
XMLDOM_ENTREF , /* entity reference */
XMLDOM_ENTITY , /* entity */
XMLDOM_PI , /* <?processing instructions?> */
XMLDOM_COMMENT , /* <!-- Comments --> */
XMLDOM_DOC , /* Document */
XMLDOM_DTD , /* DTD */
XMLDOM_FRAG , /* Document fragment */
XMLDOM_NOTATION , /* notation */
/* Oracle extensions from here on */
XMLDOM_ELEMDECL , /* DTD element declaration */
XMLDOM_ATTRDECL , /* DTD attribute declaration */
/* Content Particles (nodes in element's Content Model) */
XMLDOM_CPELEM , /* element */
XMLDOM_CPCHOICE , /* choice (a|b) */
XMLDOM_CPSEQ , /* sequence (a,b) */
XMLDOM_CPPCDATA , /* #PCDATA */
XMLDOM_CPSTAR , /* '*' (zero or more) */
XMLDOM_CPPLUS , /* '+' (one or more) */
XMLDOM_CPOPT , /* '?' (optional) */
XMLDOM_CPEND /* end marker */
} xmlnodetype;
ユーザー定義の汎用出力ストリーム。3つの関数ポインタが必要です(スタブでもかまいません)。コンテキスト・ポインタは完全なユーザー定義ポインタです。ストリームの管理に必要な状態の情報をすべて示します。このポインタはユーザー関数に最初の引数として渡されます。
定義
typedef struct xmlostream {
XML_STREAM_OPEN_F(
(*open_xmlostream),
xctx,
sctx,
path,
parts,
length);
XML_STREAM_WRITE_F(
(*write_xmlostream),
xctx,
sctx,
path,
src,
size);
XML_STREAM_CLOSE_F(
(*close_xmlostream),
xctx,
sctx);
void *ctx_xmlostream; /* user's stream context */
} xmlostream;
XPointerのポイント位置。
定義
typedef struct xmlpoint xmlpoint;
DOM2範囲の構造を制御します。
定義
typedef struct xmlrange {
xmlnode *startnode_xmlrange; /* start point container */
ub4 startofst_xmlrange; /* start point index */
xmlnode *endnode_xmlrange; /* end point container */
ub4 endofst_xmlrange; /* end point index */
xmlnode *doc_xmlrange; /* document node */
xmlnode *root_xmlrange; /* root node of the range */
boolean collapsed_xmlrange; /* is range collapsed? */
boolean detached_xmlrange; /* range invalid, invalidated?*/
} xmlrange;
SOAP接続のためのバインディング。SOAPはメッセージを転送するためのバインディング(トランスポート)は行いません。しかし、HTTPプロトコルが十分に定義されており、現時点ではこれが唯一の選択肢です。
定義
typedef enum xmlsoapbind {
XMLSOAP_BIND_NONE , /* none */
XMLSOAP_BIND_HTTP /* HTTP */ } xmlsoapbind;
SOAP接続オブジェクト。各接続には、バインディングとエンドポイント情報を含む、このタイプのインスタンスが必要です。
定義
typedef struct xmlsoapcon xmlsoapcon;
SOAP操作のコンテキスト。単一コンテキストのみが必要です。このコンテキストは、複数のSOAPメッセージによって共有されます。
定義
typedef struct xmlsoapctx xmlsoapctx;
SOAPノードのロール。
定義
typedef enum xmlsoaprole {
XMLSOAP_ROLE_UNSET, /* not specified */
XMLSOAP_ROLE_NONE, /* "none" */
XMLSOAP_ROLE_NEXT, /* "next" */
XMLSOAP_ROLE_ULT, /* "ultimateReceiver" */
XMLSOAP_ROLE_OTHER /* other - user defined */
} xmlsoaprole;
表示するノードのタイプの選択に使用されるビット・フラグ。
定義
typedef ub4 xmlshowbits; #define XMLDOM_SHOW_ALL ~(ub4)0 #define XMLDOM_SHOW_BIT(ntype) ((ub4)1 << (ntype)) #define XMLDOM_SHOW_ELEM XMLDOM_SHOW_BIT(XMLDOM_ELEM) #define XMLDOM_SHOW_ATTR XMLDOM_SHOW_BIT(XMLDOM_ATTR) #define XMLDOM_SHOW_TEXT XMLDOM_SHOW_BIT(XMLDOM_TEXT) #define XMLDOM_SHOW_CDATA XMLDOM_SHOW_BIT(XMLDOM_CDATA) #define XMLDOM_SHOW_ENTREF XMLDOM_SHOW_BIT(XMLDOM_ENTREF) #define XMLDOM_SHOW_ENTITY XMLDOM_SHOW_BIT(XMLDOM_ENTITY) #define XMLDOM_SHOW_PI XMLDOM_SHOW_BIT(XMLDOM_PI) #define XMLDOM_SHOW_COMMENT XMLDOM_SHOW_BIT(XMLDOM_COMMENT) #define XMLDOM_SHOW_DOC XMLDOM_SHOW_BIT(XMLDOM_DOC) #define XMLDOM_SHOW_DTD XMLDOM_SHOW_BIT(XMLDOM_DTD) #define XMLDOM_SHOW_FRAG XMLDOM_SHOW_BIT(XMLDOM_FRAG) #define XMLDOM_SHOW_NOTATION XMLDOM_SHOW_BIT(XMLDOM_NOTATION) #define XMLDOM_SHOW_DOC_TYPE XMLDOM_SHOW_BIT(XMLDOM_DOC_TYPE)
URLからデータを取り出すための、既知のアクセス・メソッドの列挙。オープン、読込み、およびクローズの各関数を指定して、デフォルトの動作をオーバーライドすることができます。
定義
typedef enum {
XML_ACCESS_NONE , /* not specified */
XML_ACCESS_UNKNOWN , /* specified but unknown */
XML_ACCESS_FILE , /* filesystem access */
XML_ACCESS_HTTP , /* HTTP */
XML_ACCESS_FTP , /* FTP */
XML_ACCESS_GOPHER , /* Gopher */
XML_ACCESS_ORADB , /* Oracle DB */
XML_ACCESS_STREAM /* user-defined stream */
} xmlurlacc;
この共有体には、URLデータへのアクセスに必要なハンドル、すなわちストリームまたはstdioポインタ、ファイル・ディスクリプタなどが含まれます。
定義
typedef union xmlurlhdl {
void *ptr_xmlurlhdl; /* generic stream/file/... handle */
struct {
sb4 fd1_xmlurlhdl; /* file descriptor(s) [FTP needs all 3!] */
sb4 fd2_xmlurlhdl;
sb4 fd3_xmlurlhdl;
} fds_lpihdl;
} xmlurlhdl;
この構造にはURLのサブパートが含まれます。元のURLが解析され、NULLで終了する各パートが作業バッファにコピーされ、次に、この構造にはそれらのパートを指すデータが挿入されます。URLをhttp://user:pwd@baz.com:8080/pub/baz.html;quux=1?huh#fraggyとした場合、そのコンポーネント・パートの例が示されます。
定義
typedef struct xmlurlpart {
xmlurlacc access_xmlurlpart; /* access method code, XMLACCESS_HTTP */
oratext *accbuf_xmlurlpart; /* access method name: "http" */
oratext *host_xmlurlpart; /* hostname: "baz.com" */
oratext *dir_xmlurlpart; /* directory: "pub" */
oratext *file_xmlurlpart; /* filename: "baz.html" */
oratext *uid_xmlurlpart; /* userid/username: "user" */
oratext *passwd_xmlurlpart; /* password: "pwd" */
oratext *port_xmlurlpart; /* port (as string): "8080" */
oratext *frag_xmlurlpart; /* fragment: "fraggy" */
oratext *query_xmlurlpart; /* query: "huh" */
oratext *param_xmlurlpart; /* parameter: "quux=1" */
ub2 portnum_xmlurlpart; /* port (as number): 8080 */
ub1 abs_xmlurlpart; /* absolute path? TRUE */
} xmlurlpart;
XPointer位置のデータ型。
定義
typedef struct xmlxptrloc xmlxptrloc;
XPointer位置の設定データ型。
定義
typedef struct xmlxptrlocset xmlxptrlocset;
戻されるXSLTオブジェクトのタイプ。
定義
typedef enum xmlxslobjtype {
XMLXSL_TYPE_UNKNOWN , /* Not a defined type */
XMLXSL_TYPE_NDSET , /* Node-set */
XMLXSL_TYPE_BOOL , /* Boolean value */
XMLXSL_TYPE_NUM , /* Numeric value (double) */
XMLXSL_TYPE_STR , /* String */
XMLXSL_TYPE_FRAG /* Document Fragment */
} xmlxslobjtype;
XSLTプロセッサで生成される出力のタイプ。
定義
typedef enum xmlxslomethod {
XMLXSL_OUTPUT_UNKNOWN , /* Not defined */
XMLXSL_OUTPUT_XML , /* Produce a Document Fragment */
XMLXSL_OUTPUT_STREAM , /* Stream out formatted result */
XMLXSL_OUTPUT_HTML /* Stream out HTML formatted result */
} xmlxslomethod;
xmlxvm型のオブジェクトはXMLドキュメントの変換に使用されます。xmlxvmのコンテンツは内部的に使用されるため、ユーザーからはアクセスできません。
定義
struct xmlxvm; typedef struct xmlxvm xmlxvm;
xmlxvmcomp型のオブジェクトはXSLスタイルシートのコンパイルに使用されます。xmlxvmcompのコンテンツは内部的に使用されるため、ユーザーからはアクセスできません。
定義
struct xmlxvmcomp; typedef struct xmlxvmcomp xmlxvmcomp;
XSLTコンパイラの制御フラグ。
XMLXVM_DEBUGはコンパイラに対して、バイトコードへのデバッグ情報の挿入を強制します。
XMLXVM_STRIPSPACEはxsl:strip-space elements="*"と同じ動作を強制します。
定義
typedef ub4 xmlxvmflag; #define XMLXVM_NOFLAG #define XMLXVM_DEBUG /* insert debug info into bytecode */ #define XMLXVM_STRIPSPACE /* same as xsl:strip-space elements="*" */
XSLTVMオブジェクトのタイプ。
定義
typedef enum xmlxvmobjtype {
XMLXVM_TYPE_UNKNOWN ,
XMLXVM_TYPE_NDSET ,
XMLXVM_TYPE_BOOL ,
XMLXVM_TYPE_NUM ,
XMLXVM_TYPE_STR ,
XMLXVM_TYPE_FRAG
} xmlxvmobjtype;
XPathの最上位コンテキスト。
定義
struct xpctx; typedef struct xpctx xpctx;
XPath式。
定義
struct xpexpr; typedef struct xpexpr xpexpr;
XPathオブジェクト。
定義
struct xpobj;typedef struct xpobj xpobj;
XMLスキーマ・バリデータ・コンテキスト。XmlSchemaCreateにより作成され、ほとんどのスキーマ関数に渡されます。
定義
# define XSDCTX_DEFINED struct xsdctx; typedef struct xsdctx xsdctx;
XSLの最上位コンテキスト。
定義
struct xslctx; typedef struct xslctx xslctx;
XSLVMプロセッサのランタイム・オブジェクト。コンテンツは内部的に使用されるため、ユーザーがアクセスすることはできません。
定義
struct xvmobj; typedef struct xvmobj xvmobj;