1 XML C APIのデータ型
次の表に、Cのすべてのデータ型とその説明を示します。
表1-1 XML C実装のデータ型の概要
データ型 | 目的 |
---|---|
データ構造を検証するためのチェック語。 |
|
エラー・コード: |
|
プロパティのID。 |
|
不透明なメモリー・コンテキスト。 |
|
プロパティ名。 |
|
プロパティ値タイプ。 |
|
値: すべてのデータ型のストレージの結合。 |
|
不透明なストリーム・オブジェクト。 |
|
ファイル・ハンドルのストレージ。 |
|
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プロセッサのランタイム・オブジェクト。コンテンツは内部的に使用されるため、ユーザーがアクセスすることはできません。 |
1.5 oraprop
プロパティ名。
定義
typedef struct oraprop { oratext *name_oraprop; oraprop_id id_oraprop; oraprop_t type_oraprop; oraprop_v value_oraprop; } oraprop;
1.6 oraprop_t
プロパティ値タイプ。
定義
typedef enum { ORAPROP_TYPE_BOOLEAN, ORAPROP_TYPE_SIGNED, ORAPROP_TYPE_UNSIGNED, ORAPROP_TYPE_POINTER } oraprop_t;
1.7 oraprop_v
値: すべてのデータ型のストレージの結合。
定義
typedef union oraprop_v { boolean b_oraprop_v; sb4 s_oraprop_v; ub4 u_oraprop_v; void *p_oraprop_v; } oraprop_v;
1.9 orastreamhdl
ファイル・ハンドルのストレージ。
定義
typedef union orastreamhdl { void *ptr_orastreamhdl; /* generic pointer stream/file/etc */ struct { sb4 fd_orastreamhdl; /* file descriptor(s) [FTP needs all 3!] */ sb4 fd2_orastreamhdl; sb4 fd3_orastreamhdl; } fds_lpihdl; } orastreamhdl;
1.10 xmlcmphow
DOM範囲の比較に使用される定数。
定義
typedef enum { XMLDOM_START_TO_START , XMLDOM_START_TO_END , XMLDOM_END_TO_END , XMLDOM_END_TO_START } xmlcmphow;
1.11 xmlctx
XMLセッションのすべてのドキュメントで共有されるコンテキスト。エンコーディング情報、低レベルのメモリー割当て関数ポインタ、エラー・メッセージの言語またはエンコーディング、およびオプションのハンドラ関数などが含まれます。ドキュメントのロード(解析)、およびDOMの作成、SAXの生成などに必要です。
定義
struct xmlctx; typedef struct xmlctx xmlctx;
1.13 xmldfsrct
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;
1.14 xmlerr
多くの関数により戻される、数値のエラー・コード。値が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;
1.15 xmlevctx
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;
1.16 xmlevtype
パーサー・プル・イベントのイベント・タイプ。
定義
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;
1.17 xmlhasht
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;
1.18 xmlistream
ユーザー定義の汎用入力ストリーム。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;
1.19 xmliter
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;
1.20 xmlnodetype
ノードの数値型コード。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;
1.21 xmlostream
ユーザー定義の汎用出力ストリーム。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;
1.23 xmlrange
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;
1.24 xmlsoapbind
SOAP接続のためのバインディング。SOAPはメッセージを転送するためのバインディング(トランスポート)は行いません。しかし、HTTPプロトコルが十分に定義されており、現時点ではこれが唯一の選択肢です。
定義
typedef enum xmlsoapbind { XMLSOAP_BIND_NONE , /* none */ XMLSOAP_BIND_HTTP /* HTTP */ } xmlsoapbind;
1.25 xmlsoapcon
SOAP接続オブジェクト。各接続には、バインディングとエンドポイント情報を含む、このタイプのインスタンスが必要です。
定義
typedef struct xmlsoapcon xmlsoapcon;
1.26 xmlsoapctx
SOAP操作のコンテキスト。単一コンテキストのみが必要で、複数のSOAPメッセージによって共有されます。
定義
typedef struct xmlsoapctx xmlsoapctx;
1.27 xmlsoaprole
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;
1.28 xmlshowbits
表示するノードのタイプの選択に使用されるビット・フラグ。
定義
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)
1.29 xmlurlacc
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;
1.30 xmlurlhdl
この共有体には、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;
1.31 xmlurlpart
この構造には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;
1.34 xmlxslobjtype
戻される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;
1.35 xmlxslomethod
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;
1.36 xmlxvm
xmlxvm
型のオブジェクトはXMLドキュメントの変換に使用されます。xmlxvm
のコンテンツは内部的に使用されるため、ユーザーからはアクセスできません。
定義
struct xmlxvm; typedef struct xmlxvm xmlxvm;
1.37 xmlxvmcomp
xmlxvmcomp
型のオブジェクトはXSLスタイルシートのコンパイルに使用されます。xmlxvmcomp
のコンテンツは内部的に使用されるため、ユーザーからはアクセスできません。
定義
struct xmlxvmcomp; typedef struct xmlxvmcomp xmlxvmcomp;
1.38 xmlxvmflags
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="*" */
1.39 xmlxvmobjtype
XSLTVMオブジェクトのタイプ。
定義
typedef enum xmlxvmobjtype { XMLXVM_TYPE_UNKNOWN , XMLXVM_TYPE_NDSET , XMLXVM_TYPE_BOOL , XMLXVM_TYPE_NUM , XMLXVM_TYPE_STR , XMLXVM_TYPE_FRAG } xmlxvmobjtype;
1.43 xsdctx
XMLスキーマ・バリデータ・コンテキスト。XmlSchemaCreate
により作成され、ほとんどのスキーマ関数に渡されます。
定義
# define XSDCTX_DEFINED struct xsdctx; typedef struct xsdctx xsdctx;