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メソッドの概要

関数 概要

XmlXvmCompileBuffer()

バッファからバイトコードにXSLTスタイルシートをコンパイルします。

XmlXvmCompileDom()

DOMからバイトコードにXSLTスタイルシートをコンパイルします。

XmlXvmCompileFile()

ファイルからバイトコードにXSLTスタイルシートをコンパイルします。

XmlXvmCompileURI()

URIからバイトコードにXSLTスタイルシートをコンパイルします。

XmlXvmCompileXPath()

XPath式をコンパイルします。

XmlXvmCreateComp()

XSLTコンパイラを作成します。

XmlXvmDestroyComp()

XSLTコンパイラ・オブジェクトを破棄します。

XmlXvmGetBytecodeLength()

バイトコードの長さを戻します。

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が戻されます。

関連項目:

XmlXvmDestroyComp()

16.1.7 XmlXvmDestroyComp()

XSLTコンパイラ・オブジェクトを破棄します。

構文

void XmlXvmDestroyComp(
   xmlxvmcomp *comp);
パラメータ In/Out 説明
comp
IN

XSLTコンパイラ・オブジェクト

関連項目:

XmlXvmCreateComp()

16.1.8 XmlXvmGetBytecodeLength()

バイトコードの長さは、バイトコードをコピーする場合、またはXSLTVMで設定する場合に必要です。

構文

ub4 XmlXvmGetBytecodeLength(
   ub2 *bytecode,
   xmlerr *error);
パラメータ In/Out 説明
bytecode
IN

バイトコードのバッファ

error
OUT

戻されたエラー・コード

戻り値

(ub4) バイト単位で示したバイトコードの長さ。

16.2 XSLTVM XML C APIのXSLTVMインタフェース

次の表にXSLTVM XML C APIのXSLTVMインタフェースで使用できるメソッドの概要を示します。

表16-2 XML C実装のXSLTVM XSLTVMメソッドの概要

関数 概要

XMLXVM_DEBUG_F()

XMLXSLTVMデバッグ関数。

XmlXvmCreate()

XSLT仮想マシンを作成します。

XmlXvmDestroy()

XSLT仮想マシンを破棄します。

XmlXvmEvaluateXPath()

コンパイル済のXPath式を評価します。

XmlXvmGetObjectBoolean()

XPathオブジェクトのブール値を取得します。

XmlXvmGetObjectNSetNode()

ノードセット型XPathオブジェクトからノードを取得します。

XmlXvmGetObjectNSetNum()

ノードセット型XPathオブジェクトからノードの数を取得します。

XmlXvmGetObjectNumber()

XPathオブジェクトから数値を取得します。

XmlXvmGetObjectString()

XPathオブジェクトから文字列を取得します。

XmlXvmGetObjectType()

XPathオブジェクトの型を取得します。

XmlXvmGetOutputDom()

出力DOMを戻します。

XmlXvmResetParams()

スタイルシートの最上位テキストのパラメータをリセットします。

XmlXvmSetBaseURI()

XLTVMのベースURIを設定します。

XmlXvmSetBytecodeBuffer()

コンパイルしたバイトコードを設定します。

XmlXvmSetBytecodeFile()

ファイルからコンパイルしたバイトコードを設定します。

XmlXvmSetBytecodeURI()

コンパイルしたバイトコードを設定します。

XmlXvmSetDebugFunc()

デバッグ用のコールバック関数を設定します。

XmlXvmSetOutputDom()

出力ドキュメント・ノードをXSLTVMに設定します。

XmlXvmSetOutputEncoding()

XSLTVM出力のエンコーディングを設定します。

XmlXvmSetOutputSax()

出力SAXをXSLTVMに設定します。

XmlXvmSetOutputStream()

ユーザー定義のストリームをXSLTVM出力に設定します。

XmlXvmSetTextParam()

スタイルシートの最上位テキストのパラメータを設定します。

XmlXvmTransformBuffer()

メモリー内のXML文書に対してコンパイルしたXSLTスタイルシートを実行します。

XmlXvmTransformDom()

DOMとしてXML文書に対してコンパイルしたXSLTスタイルシートを実行します。

XmlXvmTransformFile()

ファイル内のXML文書に対してコンパイルしたXSLTスタイルシートを実行します。

XmlXvmTransformURI()

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

現行ノードのインデックス

関連項目:

XmlXvmSetDebugFunc()

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

設定するプロパティのNULLで終了するリスト(空でも可)

戻り値

(xmlxvm *) XSLT仮想マシン・オブジェクト。エラー発生時にはNULLが戻されます。

関連項目:

XmlXvmDestroy()

16.2.3 XmlXvmDestroy()

XSLT仮想マシンを破棄します。

構文

void XmlXvmDestroy(
   xmlxvm *vm);
パラメータ In/Out 説明
vm
IN

VMオブジェクト

関連項目:

XmlXvmCreate()

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

オブジェクト

戻り値

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

オブジェクト

戻り値

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が戻されます。

関連項目:

XmlXvmSetOutputDom()

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文書が含まれている、NULLで終了するバッファ

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) エラー・コード

16.2.26 XmlXvmTransformURI()

URIのXML文書に対してコンパイルしたXSLTスタイルシートを実行します。このコールの前に、XmlXvmSetBytecodeXXXを使用して、コンパイル済のXSLTスタイルシート(バイトコード)を設定する必要があります。

構文

xmlerr XmlXvmTransformURI(
   xmlxvm *vm, 
   oratext *uri);
パラメータ In/Out 説明
vm
IN

VMオブジェクト

uri
IN

変換するXML文書のURI

戻り値

(xmlerr) エラー・コード。