計算スクリプトボキャブラリの概要を説明します。
計算スクリプトボキャブラリの概要や使用方法、要素・属性を解説します。
計算スクリプトボキャブラリの概要を説明します。
ボキャブラリコンポーネントで処理されるXML文書内で計算を行う仕組みを提供するボキャブラリです。
計算スクリプトボキャブラリの名前空間URI参照は http://xmlns.xfy.com/calc です。 以下の説明で、計算スクリプトボキャブラリの要素を記述するときは、calc:という名前空間接頭辞を使用します。
このほか、以下の説明中に出現するボキャブラリと、そのボキャブラリに使用している名前空間接頭辞は次のとおりです。
xvcd: を使用します。詳細は、「VC中核リファレンス」をご覧ください。
計算スクリプトを使用する方法には、処理命令で定義したスクリプトを割り当てる方法、計算スクリプトを任意の要素の属性として埋め込んで使用する方法(属性埋め込み)、XVCDに関連づけて使用する方法の3つがあります。
処理命令で計算スクリプトをXML文書に割り当てて使用する方法には、次の2とおりの指定方法があります。
com.xfy処理命令にcalculationパラメータを指定して、次のようにXMLファイルに記述します。
<?com.xfy calculation href="計算スクリプトファイルのURL" ?>
calc:calc要素には、必ずid属性を設定します。埋め込み計算スクリプトのid属性に指定したID値を、com.xfy calculation処理命令に次のように記述します。
<?com.xfy calculation href="#埋め込み計算スクリプトのcalc:calc要素のid属性の値" ?>XML文書に埋め込む計算スクリプトは、対象のXML文書のルート要素内に記述します。
com.xfy calculation処理命令で複数の計算スクリプトを割り当てたときは、先に記述された計算スクリプトが優先されます。
属性埋め込みを使用して計算スクリプトを記述する場合は、値に計算式を記述した
calc:expression大域属性を計算スクリプトを埋め込む要素に設定します。
XVCDに計算スクリプトを関連づける場合、
xvcd:xvcd要素の内容として
calc:calc要素または
calc:import要素を記述します。
計算スクリプトの適用範囲は、次のとおりです。
xvcd:vocabulary要素で作成されたボキャブラリコンポーネントが適用された文書に対して、そのxvcd:vocabulary要素が記述されたXVCDで定義された計算スクリプトがすべて有効となります。
xvcd:include要素や
xvcd:import要素で取り込まれたcalc:calc要素やcalc:import要素も、すべて有効となります。
また、計算スクリプトが実行されるタイミングは、次のとおりです。
計算の実行は、計算スクリプトに記述されている式が参照しているノードの内容が変更された場合と、計算スクリプトに記述されている式自体が変更された場合とで、実行されるタイミングが異なります。
calc:expression大域属性が要素から削除されたり、calc:expression大域属性が設定された要素自体が削除されたりした場合は、その計算スクリプトに基づいた計算は実行されなくなります。
計算式が参照しているノードと計算式との参照関係が循環参照になった場合、計算は反復せずに1回だけ実行されます。
計算スクリプトボキャブラリに属する要素・属性を解説します。
計算スクリプトの記述に使用される要素・属性は以下のとおりです。
calc:calc 要素計算スクリプト全体を含む要素です。
id
calc:calc要素を識別する属性です。ID値を記述します。XML文書内に計算スクリプトを埋め込む場合、この属性で設定されたID値でcalc:calc要素を識別します。
省略した場合、属性に値が設定されていないと見なされます。
version
(必須)
計算スクリプトのバージョン番号を設定する属性です。必ず1.0を設定します。
calc:calc要素内には、
calc:bind要素を1つ以上、任意の数だけ記述できます。
calc:bind 要素計算式と、計算結果の出力先のノードを指定する要素です。 計算結果の出力先には、ノードセットを指定することもできます。ノードセットを指定した場合、ノードセット内のそれぞれの要素に計算結果が出力されます。
target
(必須)
計算結果の出力先のノードまたはノードセットを指定する属性です。XPath式で記述します。XPath式を評価するときのコンテキストノードは、計算スクリプトの関連付け方法によって異なります。
計算結果の出力先は、XPath式を評価した結果、得られたノードの種類によって異なります。
計算式は、この属性で指定されたノードをコンテキストノードとして評価されます。ノードセットが指定された場合は、ノードセット内の各ノードをコンテキストノードとして、計算式が評価されます。
expression
(必須)
計算式を設定する属性です。XPath式で記述します。 計算式には数値を参照するノードを指定できます。ノードを指定するときは、絶対パスだけでなく、target属性で指定したノードまたはノードセットからの相対パスを使用することもできます。
calc:bind要素は空要素です。
calc:import 要素別のファイルに記述された計算スクリプトを取り込む要素です。この要素は計算スクリプトをXVCDに関連づける場合にのみ使用できます。
href
(必須)
取り込みたい計算スクリプトファイルのURIを設定する属性です。XVCDファイルからの相対URIで指定することもできます。
calc:import要素は空要素です。
計算スクリプトを属性埋め込みで記述するときに使用される大域属性は、以下のとおりです。
calc:expression 属性XML文書内の任意の要素に計算スクリプトを埋め込みで記述するときに使用する大域属性です。値には、計算式を表すXPath式を設定します。
計算スクリプト内で利用可能な関数は、以下のとおりです。
calc:apex-element 関数計算スクリプトがXVCDに関連づけられているときに、ボキャブラリコンポーネントが適用されている頂点要素を返す関数です。
node-set calc:apex-element( )
引数をとりません。
node-set
計算スクリプトがXVCDに関連づけられているときは、ボキャブラリコンポーネントが適用されている頂点ノードだけを含むノードセットを返します。そうでないときは、空のノードセットを返します。