16 XML C用のXSLTVM APIパッケージ
XSLTVMパッケージでは、1999年11月16日のW3C勧告で指定されたXML C API用のSL Transformation(XSLT)言語を実装します。便宜上、XSLTVMメソッドを2つのインタフェース・タイプにグループ化しました。
16.1 XSLTVM XML C APIのXSLTCインタフェース
次の表にXSLTVM
XML C APIのXSLTC
インタフェースで使用できるメソッドの概要を示します。
表16-1 XML C実装のXSLTC XSLTVMメソッドの概要
関数 | 概要 |
---|---|
バッファからバイトコードにXSLTスタイルシートをコンパイルします。 |
|
DOMからバイトコードにXSLTスタイルシートをコンパイルします。 |
|
ファイルからバイトコードにXSLTスタイルシートをコンパイルします。 |
|
URIからバイトコードにXSLTスタイルシートをコンパイルします。 |
|
XPath式をコンパイルします。 |
|
XSLTコンパイラを作成します。 |
|
XSLTコンパイラ・オブジェクトを破棄します。 |
|
バイトコードの長さを戻します。 |
16.1.1 XmlXvmCompileBuffer()
バッファからバイトコードにXSLTスタイルシートをコンパイルします。コンパイラ・フラグは、次のいずれか1つ以上になります。
-
XMLXVM_DEBUG
はコンパイラに対して、バイトコードへのデバッグ情報の挿入を強制します。 -
XMLXVM_STRIPSPACE
は<xsl:strip-space elements="*"/>
と同等です。
生成されたバイトコードはコンパイラ・バッファに常駐し、次のスタイルシートがコンパイルされるか、コンパイラ・オブジェクトが削除されると解放されます。したがって、バイトコードを再利用する場合、別の場所にコピーする必要があります。
16.1.2 XmlXvmCompileDom()
DOMからバイトコードにXSLTスタイルシートをコンパイルします。コンパイラ・フラグは、次のいずれか1つ以上になります。
-
XMLXVM_DEBUG
はコンパイラに対して、バイトコードへのデバッグ情報の挿入を強制します。 -
XMLXVM_STRIPSPACE
は<xsl:strip-space elements="*"/>
と同等です。
生成されたバイトコードはコンパイラ・バッファに常駐し、次のスタイルシートがコンパイルされるか、コンパイラ・オブジェクトが削除されると解放されます。したがって、バイトコードを再利用する場合、別の場所にコピーする必要があります。
構文
ub2 *XmlXvmCompileDom( xmlxvmcomp *comp, xmldocnode *root, xmlxvmflag flags, xmlerr *error);
パラメータ | In/Out | 説明 |
---|---|---|
comp |
IN |
コンパイラ・オブジェクト |
rooot |
IN |
スタイルシートDOMのルート要素 |
flags |
IN |
現在のコンパイルのフラグ |
error |
OUT |
戻されたエラー・コード |
戻り値
(ub2 *)
バイトコード。エラー発生時にはNULL
が戻されます。
16.1.3 XmlXvmCompileFile()
ファイルからバイトコードにXSLTスタイルシートをコンパイルします。コンパイラ・フラグは、次のいずれか1つ以上になります。
-
XMLXVM_DEBUG
はコンパイラに対して、バイトコードへのデバッグ情報の挿入を強制します。 -
XMLXVM_STRIPSPACE
は<xsl:strip-space elements="*"/>
と同等です。
生成されたバイトコードはコンパイラ・バッファに常駐し、次のスタイルシートがコンパイルされるか、コンパイラ・オブジェクトが削除されると解放されます。したがって、バイトコードを再利用する場合、別の場所にコピーする必要があります。
構文
ub2 *XmlXvmCompileFile( xmlxvmcomp *comp, oratext *path, oratext *baseURI, xmlxvmflag flags, xmlerr *error);
パラメータ | In/Out | 説明 |
---|---|---|
comp |
IN |
コンパイラ・オブジェクト |
path |
IN |
XSLスタイルシート・ファイルのパス |
baseuri |
IN |
ドキュメントのベースURI |
flags |
IN |
現在のコンパイルのフラグ |
error |
OUT |
戻されたエラー・コード |
戻り値
(ub2 *)
バイトコード。エラー発生時にはNULL
が戻されます。
16.1.4 XmlXvmCompileURI()
URIからバイトコードにXSLTスタイルシートをコンパイルします。コンパイラ・フラグは、次のいずれか1つ以上になります。
-
XMLXVM_DEBUG
はコンパイラに対して、バイトコードへのデバッグ情報の挿入を強制します。 -
XMLXVM_STRIPSPACE
は<xsl:strip-space elements="*"/>
と同等です。
生成されたバイトコードはコンパイラ・バッファに常駐し、次のスタイルシートがコンパイルされるか、コンパイラ・オブジェクトが削除されると解放されます。したがって、バイトコードを再利用する場合、別の場所にコピーする必要があります。
構文
ub2 *XmlXvmCompileURI( xmlxvmcomp *comp, oratext *uri, xmlxvmflag flags, xmlerr *error);
パラメータ | In/Out | 説明 |
---|---|---|
comp |
IN |
コンパイラ・オブジェクト |
uri |
IN |
XSLスタイルシートが含まれているファイルのURI |
flags |
IN |
現在のコンパイルのフラグ |
error |
OUT |
戻されたエラー・コード |
戻り値
(ub2 *)
バイトコード。エラー発生時にはNULL
が戻されます。
16.1.5 XmlXvmCompileXPath()
XPath式をコンパイルします。オプションのpfxmap
は、名前空間の接頭辞をXPath式内のURIにマップするために使用されます。これは、NULL
で終了する接頭辞やURI値などの配列です。
構文
ub2 *XmlXvmCompileXPath( xmlxvmcomp *comp, oratext *xpath, oratext **pfxmap, xmlerr *error);
パラメータ | In/Out | 説明 |
---|---|---|
comp |
IN |
コンパイラ・オブジェクト |
xpath |
IN |
XPath式 |
pfxmap |
IN |
接頭辞とURIのマッピングの配列 |
error |
OUT |
戻されたエラー・コード |
戻り値
(ub2 *)
XPath式のバイトコード。エラー発生時にはNULL
が戻されます。
16.1.6 XmlXvmCreateComp()
XSLTコンパイラ・オブジェクトを作成します。XSLTコンパイラは、XSLTスタイルシートをバイトコードにコンパイルするために使用します。
構文
xmlxvmcomp *XmlXvmCreateComp( xmlctx *xctx);
パラメータ | In/Out | 説明 |
---|---|---|
xctx |
IN |
XMLコンテキスト |
戻り値
(xmlxvmcomp *)
XSLTコンパイラ・オブジェクト。エラー発生時にはNULL
が戻されます。
関連項目:
16.1.7 XmlXvmDestroyComp()
XSLTコンパイラ・オブジェクトを破棄します。
構文
void XmlXvmDestroyComp( xmlxvmcomp *comp);
パラメータ | In/Out | 説明 |
---|---|---|
comp |
IN |
XSLTコンパイラ・オブジェクト |
関連項目:
16.2 XSLTVM XML C APIのXSLTVMインタフェース
次の表にXSLTVM
XML C APIのXSLTVM
インタフェースで使用できるメソッドの概要を示します。
表16-2 XML C実装のXSLTVM XSLTVMメソッドの概要
関数 | 概要 |
---|---|
XMLXSLTVMデバッグ関数。 |
|
XSLT仮想マシンを作成します。 |
|
XSLT仮想マシンを破棄します。 |
|
コンパイル済のXPath式を評価します。 |
|
XPathオブジェクトのブール値を取得します。 |
|
ノードセット型XPathオブジェクトからノードを取得します。 |
|
ノードセット型XPathオブジェクトからノードの数を取得します。 |
|
XPathオブジェクトから数値を取得します。 |
|
XPathオブジェクトから文字列を取得します。 |
|
XPathオブジェクトの型を取得します。 |
|
出力DOMを戻します。 |
|
スタイルシートの最上位テキストのパラメータをリセットします。 |
|
XLTVMのベースURIを設定します。 |
|
コンパイルしたバイトコードを設定します。 |
|
ファイルからコンパイルしたバイトコードを設定します。 |
|
コンパイルしたバイトコードを設定します。 |
|
デバッグ用のコールバック関数を設定します。 |
|
出力ドキュメント・ノードをXSLTVMに設定します。 |
|
XSLTVM出力のエンコーディングを設定します。 |
|
出力SAXをXSLTVMに設定します。 |
|
ユーザー定義のストリームをXSLTVM出力に設定します。 |
|
スタイルシートの最上位テキストのパラメータを設定します。 |
|
メモリー内のXML文書に対してコンパイルしたXSLTスタイルシートを実行します。 |
|
DOMとしてXML文書に対してコンパイルしたXSLTスタイルシートを実行します。 |
|
ファイル内のXML文書に対してコンパイルしたXSLTスタイルシートを実行します。 |
|
URIのXML文書に対してコンパイルしたXSLTスタイルシートを実行します。 |
16.2.1 XMLXVM_DEBUG_F()
XSLTVMのデバッグ・コールバック関数です。
構文
#define XMLXVM_DEBUG_F(func, line, file, obj, n) void func( ub2 line, oratext *file, xvmobj *obj, ub4 n)
パラメータ | In/Out | 説明 |
---|---|---|
line |
IN |
ソース・スタイルシートの行番号 |
file |
IN |
スタイルシートのファイル名 |
obj |
IN |
現行のVMオブジェクト |
n |
IN |
現行ノードのインデックス |
関連項目:
16.2.2 XmlXvmCreate()
XSLT仮想マシンを作成します。このAPIを使用して、次の中から0(ゼロ)以上のXSLTVMプロパティを設定できます。
-
"VMStack", size
: 主要なVMスタックのサイズ[KB]を設定します。デフォルトのサイズは4Kです。 -
"NodeStack", size
: ノードスタックのサイズ[KB]を設定します。デフォルトのサイズは16Kです。 -
"StringStack", size
: 文字列スタックのサイズ[KB]を設定します。デフォルトのサイズは64Kです。
スタック・サイズが指定されていない場合は、デフォルトのサイズが使用されます。XSLTVMがスタックのオーバーフローのメッセージで終了する場合、またはより小さいメモリー・フットプリントが必要な場合、明示的スタック・サイズの設定が必要となります。
構文
xmlxvm *XmlXvmCreate(
xmlctx *xctx,
list);
パラメータ | In/Out | 説明 |
---|---|---|
xctx |
IN |
XMLコンテキスト |
list |
IN |
設定するプロパティの |
戻り値
(xmlxvm *)
XSLT仮想マシン・オブジェクト。エラー発生時にはNULL
が戻されます。
関連項目:
16.2.3 XmlXvmDestroy()
XSLT仮想マシンを破棄します。
構文
void XmlXvmDestroy( xmlxvm *vm);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
関連項目:
16.2.4 XmlXvmEvaluateXPath()
コンパイル済のXPath式を評価します。
構文
xvmobj *XmlXvmEvaluateXPath( xmlxvm *vm, ub2 *bytecode, ub4 ctxpos, ub4 ctxsize, xmlnode *ctxnode);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
XSLTVMオブジェクト |
bytecode |
IN |
XPath式のバイトコード |
ctxpos |
IN |
現在のコンテキストの位置 |
ctxsize |
IN |
現在のコンテキストのサイズ |
ctxnode |
IN |
現在のコンテキスト・ノード |
戻り値
(xvmobj *)
XPathオブジェクト
16.2.5 XmlXvmGetObjectBoolean()
XPathオブジェクトのブール値を取得します。
構文
boolean XmlXvmGetObjectBoolean( xvmobj *obj);
パラメータ | In/Out | 説明 |
---|---|---|
obj |
IN |
オブジェクト |
戻り値
(boolean)
XPathオブジェクトの値。
16.2.6 XmlXvmGetObjectNSetNode()
ノードセット型XPathオブジェクトからノードを取得します。
構文
xmlnode *XmlXvmGetObjectNSetNode( xvmobj *obj, ub4 i);
パラメータ | In/Out | 説明 |
---|---|---|
obj |
IN |
オブジェクト |
i |
IN |
ノードセットのノードのインデックス |
戻り値
(xmlnode *)
オブジェクト型または値。
16.2.7 XmlXvmGetObjectNSetNum()
ノードセット型XPathオブジェクトからノードの数を取得します。
構文
ub4 XmlXvmGetObjectNSetNum( xvmobj *obj);
パラメータ | In/Out | 説明 |
---|---|---|
obj |
IN |
オブジェクト |
戻り値
(ub4)
ノードセット内のノードの数。
16.2.8 XmlXvmGetObjectNumber()
XPathオブジェクトから数値を取得します。
構文
double XmlXvmGetObjectNumber( xvmobj *obj);
パラメータ | In/Out | 説明 |
---|---|---|
obj |
IN |
オブジェクト |
戻り値
16.2.9 XmlXvmGetObjectString()
XPathオブジェクトから文字列を取得します。
構文
oratext *XmlXvmGetObjectString( xvmobj *obj);
パラメータ | In/Out | 説明 |
---|---|---|
obj |
IN |
オブジェクト |
戻り値
16.2.10 XmlXvmGetObjectType()
XPathオブジェクトの型を取得します。
構文
xmlxvmobjtype XmlXvmGetObjectType( xvmobj *obj);
パラメータ | In/Out | 説明 |
---|---|---|
obj |
IN |
オブジェクト |
戻り値
(xmlxvmobjtype)
オブジェクトの型コード。
16.2.11 XmlXvmGetOutputDom()
結果のDOMツリーのルート・ノードを戻します(存在する場合)。VMがDOMツリーを出力するための設定を行う変換の前に、XmlXvmSetOutputDom
を使用する必要があります(デフォルトのVM出力はストリームです)。
構文
xmlfragnode *XmlXvmGetOutputDom( xmlxvm *vm);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
戻り値
(xmlfragnode *)
出力DOM。SAXまたはストリーム出力の場合はNULL
が戻されます。
関連項目:
16.2.12 XmlXvmResetParams()
スタイルシートの最上位のパラメータをデフォルト値にリセットします。
構文
void XmlXvmResetParams( xmlxvm *vm);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
16.2.13 XmlXvmSetBaseURI()
XSLTVMのベースURIを設定します。baseuriは、document
またはXmlXvmTransformFile
を使用してXML文書を変換する際に文書をロードするパスを、VMが構成するために使用されます。
構文
xmlerr XmlXvmSetBaseURI( xmlxvm *vm, oratext *baseuri);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
baseuri |
IN |
ドキュメントの読込みおよび書込みに使用するVMのベースURI |
戻り値
(xmlerr)
エラー・コード
16.2.14 XmlXvmSetBytecodeBuffer()
コンパイルしたバイトコードをバッファから設定します。事前に設定されているバイトコードは置換されます。スタイルシートのバイトコードが設定されていない場合、XML変換は実行できません。VMはバイトコードを内部バッファにコピーしないため、VMが使用を完了するまでバイトコードを解放しないでください。
構文
xmlerr XmlXvmSetBytecodeBuffer( xmlxvm *vm, ub2 *buffer, size_t buflen);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
XSLT VMのコンテキスト |
buffer |
IN |
ユーザーのバッファ |
buflen |
IN |
バイト単位で示したバッファ・サイズ |
戻り値
(xmlerr)
数値のエラー・コード。正常に終了した場合は、XMLERR_OK [0]
を戻します
16.2.15 XmlXvmSetBytecodeFile()
コンパイルしたバイトコードをファイルから設定します。事前に設定されているバイトコードは置換されます。スタイルシートのバイトコードが設定されていない場合、XML変換は実行できません。
構文
xmlerr XmlXvmSetBytecodeFile( xmlxvm *vm, oratext *path);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
XSLT VMのコンテキスト |
path |
IN |
バイトコード・ファイルのパス |
戻り値
(xmlerr)
数値のエラー・コード。正常に終了した場合は、XMLERR_OK [0]
を戻します。
16.2.16 XmlXvmSetBytecodeURI()
コンパイルしたバイトコードをURIから設定します。事前に設定されているバイトコードは置換されます。スタイルシートのバイトコードが設定されていない場合、XML変換は実行できません。
構文
xmlerr XmlXvmSetBytecodeURI( xmlxvm *vm, oratext *uri);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
XSLT VMのコンテキスト |
uri |
IN |
バイトコード・ファイルのパス |
戻り値
(xmlerr)
数値のエラー・コード。正常に終了した場合は、XMLERR_OK [0]
を戻します。
16.2.17 XmlXvmSetDebugFunc()
このユーザー・コールバック関数は、実行がXSLTスタイルシートの新しい行に到達するたびに、VMによって起動されます。VMは、ユーザーに、スタイルシートのファイル名、行番号、現在のコンテキスト・ノードセットおよびノードセット内の現在のノード・インデックスを渡します。重要 - スタイルシートは、XMLXVM_DEBUG
フラグを使用してコンパイルする必要があります。
構文
#define XMLXVM_DEBUG_FUNC(func) void func (ub2 line, oratext *filename, xvmobj *obj, ub4 n) xmlerr XmlXvmSetDebugFunc( xmlxvm *vm, XMLXVM_DEBUG_FUNC(debugcallback));
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
XSLT VMのコンテキスト |
func |
IN |
コールバック関数 |
戻り値
(xmlerr)
数値のエラー・コード。正常に終了した場合は、XMLERR_OK [0]
を戻します。
16.2.18 XmlXvmSetOutputDom()
出力DOMをXSLTVMに設定します。xmldocnode==NULL
の場合、結果のDOMツリーはVMオブジェクトに属し、新しく変換が実行されるか、またはVMオブジェクトが削除されると、DOMツリーは削除されます。結果のDOMツリーを長期間使用する必要がある場合、xmldocnode
を作成し、VMオブジェクトで設定する必要があります。
構文
xmlerr XmlXvmSetOutputDom( xmlxvm *vm, xmldocnode *doc);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
doc |
IN |
空のドキュメント |
戻り値
(xmlerr)
エラー・コード
16.2.19 XmlXvmSetOutputEncoding()
XSLTVMストリーム出力のエンコーディングを設定します。入力(データ)のエンコーディングが、このAPIによって設定されたエンコーディングと異なる場合、エンコーディングの変換が実行されます。このAPIは、XSLTスタイルシートに設定されているエンコーディング(設定されている場合)をオーバーライドします。
構文
xmlerr XmlXvmSetOutputEncoding( xmlxvm *vm, oratext *encoding);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
encoding |
IN |
出力のエンコーディング |
戻り値
(xmlerr)
エラー・コード。
16.2.20 XmlXvmSetOutputSax()
出力SAXをXSLTVMに設定します。SAXコールバック・インタフェース・オブジェクトが提供されている場合、VMはユーザーが指定したコールバック関数を使用して、結果のドキュメントをSAXイベントの形式で出力します。
構文
xmlerr XmlXvmSetOutputSax( xmlxvm *vm, xmlsaxcb *saxcb, void *saxctx);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
saxcb |
IN |
SAXコールバック・オブジェクト |
saxctx |
IN |
SAXコンテキスト |
戻り値
(xmlerr)
エラー・コード
16.2.21 XmlXvmSetOutputStream()
ユーザー定義のストリームをXSLTVM出力に設定します。デフォルトのXSLTVM出力はストリームです。このAPIは、書込み時に、ユーザーの指定したAPIによってデフォルトのストリームをオーバーライドします。
構文
xmlerr XmlXvmSetOutputStream( xmlxvm *vm, xmlostream *ostream);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
ostream |
IN |
ストリーム・オブジェクト |
戻り値
(xmlerr)
エラー・コード。
16.2.22 XmlXvmSetTextParam()
スタイルシートの最上位テキストのパラメータを設定します。XSLTスタイルシートで設定されているパラメータ値は上書きされます。変換のたびに最上位のパラメータはスタイルシートの値にリセットされるため、このAPIを再度コールする必要があります。
構文
xmlerr XmlXvmSetTextParam( xmlxvm *vm, oratext *name, oratext *value);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
name |
IN |
最上位のパラメータの名前 |
value |
IN |
最上位のパラメータの値 |
戻り値
(xmlerr)
エラー・コード。成功の場合はXMLERR_SUCC [0]
。
16.2.23 XmlXvmTransformBuffer()
メモリー内のXML文書に対してコンパイルしたXSLTスタイルシートを実行します。このコールの前に、XmlXvmSetBytecodeXXX
を使用して、コンパイル済のXSLTスタイルシート(バイトコード)を設定する必要があります。
構文
xmlerr XmlXvmTransformBuffer( xmlxvm *vm, oratext *buffer, ub4 length, oratext *baseURI);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
buffer |
IN |
XML文書が含まれている、 |
length |
IN |
XML文書の長さ |
baseURI |
IN |
XML文書のベースURI |
戻り値
(xmlerr)
エラー・コード。
16.2.24 XmlXvmTransformDom()
DOMとしてXML文書に対してコンパイルしたXSLTスタイルシートを実行します。このコールの前に、XmlXvmSetBytecodeXXX
を使用して、コンパイル済のXSLTスタイルシート(バイトコード)を設定する必要があります。
構文
xmlerr XmlXvmTransformDom( xmlxvm *vm, xmldocnode *root);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
root |
IN |
XML文書のDOMのルート要素 |
戻り値
(xmlerr)
エラー・コード。
16.2.25 XmlXvmTransformFile()
ファイル内のXML文書に対してコンパイルしたXSLTスタイルシートを実行します。このコールの前に、XmlXvmSetBytecodeXXX
を使用して、コンパイル済のXSLTスタイルシート(バイトコード)を設定する必要があります。
構文
xmlerr XmlXvmTransformFile( xmlxvm *vm, oratext *path, oratext *baseURI);
パラメータ | In/Out | 説明 |
---|---|---|
vm |
IN |
VMオブジェクト |
path |
IN |
変換するXML文書のパス |
baseURI |
IN |
XML文書のベースURI |
戻り値
(xmlerr)
エラー・コード