このサイトをビューするために JavaScript を有効化してください。

Altova StyleVision 2020 Enterprise Edition

高度な機能 > 自動計算

更新されたノードをベースにした自動計算

スクロール ホーム トップ その他

ある自動計算により更新されたノードを使用する(2番目の)自動計算を作成することができます。以下にある2つの状況が考えられます:

 

2つの自動計算が同一のテンプレート内に含まれている

2つの自動計算が異なるテンプレート内に含まれている

 

同一テンプレート内にある複数の自動計算

2つの自動計算が同じテンプレート内部に配置されている場合、SPS により以下の処理が適用されます:

 

1.最初の自動計算の XPath 条件式にて使用されたノードが修正されます。

2.XML ドキュメント内にある全てのノード値が読み取られ、全ての自動計算が処理されます。

3.最初の自動計算が正常に実行された場合、その XPath 条件式にて指定された XML ノード(ここでは仮に Node-A とします)が更新されます。Node-A をベースにした2番目の自動計算も実行されますが、そこでは更新される前の Node-A の値が使用されます。これは Node-A の値が更新前に読み取られたためで、それ以降読み取られることがなかったためです。

4.ドキュメントが編集されるか、ドキュメントのビューが(Authentic View) とは別のものに)切り替えられると、ノードの値が再度読み取られ、自動計算が実行されます。

5.これにより2番目の自動計算が実行されます。自動計算によりノードの更新が行われる場合、XPath 条件式にて使用されるノードを更新前に変更する必要があります。

 

Node-A の更新と、Node-A にて更新された値を使った2番目の自動計算の評価により生じうタイムラグは Authentic View ユーザーにとって分かりにくいものかも知れません。このような状況が発生しないようにするには、2番目の自動計算に含まれる XPath 条件式には、(更新されたノードそのものではなく)最初の自動計算で使用される XPath 条件式を含めるようにしてください。これにより、2番目の自動計算でも最初の自動計算で使用される入力が使用される様になり、その計算を自動計算内のパーツとして処理することができます。これにより Node-A のコンテンツとは独立したかたちで2番目の自動計算が評価されることになります。

 

種類ごとに税率が異なる製品の販売価格を計算する例を考えてみます。最初の自動計算では (i) 製品本体の値段と、(ii) 付加価値税 (VAT) の税率から製品の付加価値税の額を計算し、付加価値税の額を表すノードを更新します。2番目の自動計算では、製品本体の額と VAT の税金を合わせた額が計算され、実際の販売価格を含むノードが更新されます。

 

VAT の額を計算する自動計算は NetPrice * VATRate div 100 となります。製品の VAT の税率が入力されると自動計算が実行され、VATAmount ノードが更新されます。

製品の販売価格を計算する自動計算が NetPrice + VATAmount となっている場合、更新される前の VATAmount に含まれていた値が自動計算に使用されます。

しかし、販売価格の計算に使用する自動計算が NetPrice + (NetPrice * VATRate div 100) となっている場合、VATRate の値により販売価格を表すノードが更新されます。更新された VATAmount ノードは2番目の自動計算とは独立したかたちで更新されます。

 

詳細な例については、次を参照してください: サンプル:注文書.

 

異なるテンプレートを使った自動計算

2つの自動計算が異なるテンプレートに配置されている場合、最初の自動計算により更新されたノードを2番目の自動計算にて使用することができます。これは、自動計算の計算とノードの更新がテンプレートごとに別々に行われるためです。この機能がどのように使用されるかは、次を参照してください: サンプル:注文書.

 

 

 

(C) 2019 Altova GmbH