計算スクリプトリファレンス

計算スクリプトの名前空間の概要や使用方法、要素・属性を解説します。

1. 概要

計算スクリプトの名前空間の概要を説明します。

1.1. 用途・役割

VCで処理されるXML文書内で計算を行う仕組みを提供する名前空間です。

1.2. 名前空間URI参照

計算スクリプトの名前空間URI参照は http://xmlns.xfytec.com/calc です。 以下の説明で、計算スクリプトの要素を記述するときは、calc:という名前空間プレフィックスを使用します。

1.3. 計算スクリプトをXML文書で使用する方法

計算スクリプトを使用する方法には、定義したスクリプトを割り当てる方法と、計算スクリプトを任意の要素の属性として埋め込んで使用する方法(属性埋め込み)があります。

1.3.1. 計算スクリプトの割り当て

計算スクリプトをXML文書に割り当てて使用する方法には、次の2とおりの指定方法があります。

XML文書からの外部ファイル指定
XML文書内に処理命令を記述して、特定の計算スクリプトファイルをXML文書に割り当てることができます。特定の計算スクリプトファイルをXML文書に割り当てるときは、com.xfytec処理命令にcalculationパラメータを指定して、次のようにXMLファイルに記述します。
<?com.xfytec calculation href="計算スクリプトファイルのURL" ?>
XML文書内への埋め込み
計算スクリプトをXML文書に埋め込み記述できます。埋め込み計算スクリプトを使用する場合、埋め込む計算スクリプトのcalc:calc要素には、必ずid属性を設定します。埋め込み計算スクリプトのid属性に指定したID値を、com.xfytec calculation処理命令に次のように記述します。
<?com.xfytec calculation href="#埋め込み計算スクリプトのcalc:calc要素のid属性の値" ?>
XML文書に埋め込む計算スクリプトは、対象のXML文書のルート要素内に記述します。

com.xfytec calculation処理命令で複数の計算スクリプトを割り当てたときは、先に記述された計算スクリプトが優先されます。

1.3.2. 属性埋め込み

属性埋め込みを使用して計算スクリプトを記述する場合は、値に計算式を記述した calc:expression大域属性を計算スクリプトを埋め込む要素に設定します。

1.4. 計算の実行

計算の実行は、計算スクリプトに記述されている式が参照しているノードの内容が変更された場合と、計算スクリプトに記述されている式自体が変更された場合とで、実行されるタイミングが異なります。

計算スクリプトに記述されている式が参照しているノードの内容が変更された場合
自動的に計算が実行されます。
計算スクリプトに記述されている式が追加・変更された場合
XML文書に割り当てられた計算スクリプトと、属性埋め込みで記述された計算スクリプトとで異なります。
  • XML文書に割り当てられた計算スクリプトが追加・変更されたときは、その後、文書が再読み込みされたときに計算が実行されます。
  • 属性埋め込みで記述された計算スクリプトが追加・変更されたときは、計算スクリプトの編集が確定したときに自動的に計算が実行されます。
計算スクリプトが削除された場合
XML文書に割り当てられた計算スクリプトが削除されたり、calc:expression大域属性が要素から削除されたり、calc:expression大域属性が設定された要素自体が削除されたりした場合は、その計算スクリプトに基づいた計算は実行されなくなります。

計算式が参照しているノードと計算式との参照関係が循環参照になった場合、計算は反復せずに1回だけ実行されます。

2. 計算スクリプト名前空間で定義されている要素・属性

計算スクリプト名前空間で定義されている要素・属性を解説します。

2.1. 計算スクリプト

計算スクリプトの記述に使用される要素・属性は以下のとおりです。

calc:calc 要素

計算スクリプト全体を含む要素です。

属性:
id

calc:calc要素を識別する属性です。ID値を記述します。XML文書内に計算スクリプトを埋め込む場合、この属性で設定されたID値でcalc:calc要素を識別します。

省略した場合、属性に値が設定されていないと見なされます。

version (必須)

計算スクリプトのバージョン番号を設定する属性です。必須属性です。必ず1.0を設定します。

内容:

calc:calc要素内には、 calc:bind要素を1つ以上、任意の数だけ記述できます。

calc:bind 要素

計算式と、計算結果の出力先のノードを指定する要素です。 計算結果の出力先には、ノードセットを指定することもできます。ノードセットを指定した場合、ノードセット内のそれぞれの要素に計算結果が出力されます。

属性:
target (必須)

計算結果の出力先のノードまたはノードセットを指定する属性です。XPath式で記述します。 XPath式を評価した結果、得られたノードの種類によって、計算結果の出力先が異なります。

テキストノードの場合
そのテキストノードに計算結果を出力します。
要素ノードの場合
子ノードの最初のテキストノードを取得し、そのテキストノードに計算結果を出力します。
属性ノードの場合
何もしません。
ノードセットの場合
ノードセット内の各ノードの種類を判断して出力対象となるノードに出力します。

この属性で指定されたノードをコンテキストノードとして、計算式が評価されます。ノードセットが指定された場合は、ノードセット内の各ノードをコンテキストノードとして、計算式が評価されます。

expression (必須)

計算式を設定する属性です。XPath式で記述します。 計算式には数値を参照するノードを指定できます。ノードを指定するときは、絶対パスだけでなく、target属性で指定したノードまたはノードセットからの相対パスを使用することもできます。

内容:

calc:bind要素は空要素です。

2.2. 属性埋め込み

計算スクリプトを属性埋め込みで記述するときに使用される大域属性は、以下のとおりです。

calc:expression 属性

XML文書内の任意の要素に計算スクリプトを埋め込みで記述するときに使用する大域属性です。値には、計算式を表すXPath式を設定します。