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

Altova StyleVision 2020 Enterprise Edition

(マイ) ドキュメントフォルダー 以下の C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2020\StyleVisionExamples\Tutorial\Auto-Calculations\ フォルダーにある Invoice.sps では、以下にあるような自動計算の使用方法を確認することができます:

 

ノードの数を数える

Authentic View ユーザーからの入力に従いノードを選択する

自動計算の結果により、ノードのコンテンツを更新する

ある自動計算における結果を別の自動計算で使用する

 

サンプルファイルでは、自動計算が黄色の背景色によりハイライトされます(以下のスクリーンショットを参照)。

 

ノードの数を数える

注文書のサンプルでは、リストにある製品が、顧客により指定されたリスト内にある順序に従い番号付けされます(Product 1Product 2 など)。この番号付けは、自動計算により行われます(以下のスクリーンショットを参照)。

 

 

TutAutoCal_Invoices_1

 

この場合、XPath 条件式の position() 関数により番号を取得することができます。その他にも、それまで処理された兄弟ノードの数を数え、1 を加えることでも番号を取得することができます。この場合 count(preceding-sibling::Product)+1 という XPath 条件式が使用されます。後者の方法は、position() 関数を使用するのが難しいような(または不可能な)状況で使用することができます。製品を削除し、新たな製品を追加することで、サンプルファイル内にある自動計算の動作を確認することができます。

 

ユーザーからの入力に従いノードを選択する

注文書のサンプルでは、ユーザーがコンボボックスの値を選択することで、製品のカテゴリー(BookCDDVD、または Electronics)が選択されます。この選択結果は、XML ドキュメントの //Product/Category 内に入力されます。自動計算は、この値を使用することで XML ドキュメントへの参照を行い、対応する製品カテゴリーの VAT 税率が取得されます。この自動計算の XPath 条件式は以下のようになります:

 

 for $i in Category return /Invoice/Categories/Category[. = $i]/@rate.

 

出力では、自動計算の位置に VAT の税率が表示されます。注文書のサンプルでは、注文書のデータが保管される XML ドキュメントにルックアップテーブルも保管されます。このようなテーブルは別のドキュメントにて管理することも可能で、その場合、XPath 2.0 の doc() 関数によりアクセスすることになります。製品の Category コンボボックスにて製品の種類を変更し、それぞれの種類に対して異なる VAT の値が表示されることで、自動計算の動作を確認することができます(Book=10%CD=15%DVD=15%Electronics=20%)。

 

 


 

自動計算の結果によりノードのコンテンツを更新する

自動計算により取得される VAT の税率は動的なもので、(Authentic View にて使用するために)一時的にメモリ内部に保管されます。しかし、自動計算の結果は XML ドキュメントの VAT ノード内部に保管することができます。これにより、(i) VAT ノードのコンテンツは自動計算により自動的に入力されるため、ユーザーが入力する必要が無くなり、(ii) ルックアップテーブルが修正されると Invoice.xml を Authentic で開くことで、その変更が VAT ノードへ反映されます。自動計算によりノードを更新するには、デザインビューにある自動計算を選択し、プロパティウィンドウにある XML ノードボタンをクリックします(以下のスクリーンショットを参照)。表示されるダイアログにて VAT ノードを選択し、OK をクリックします。

 

TutAutoCal_Invoices_2

 

Authentic View にて別の製品カテゴリーがコンボボックスにて選択されると、ルックアップテーブルへの参照が行われ、VAT の税率が自動計算により取得されます。その後、VAT の税率が表示され、VAT ノードが更新されます。

 

自動計算における結果を別の自動計算で使用する

上の例で自動計算により取得された VAT の税率から、各製品に対して販売価格(本体価格 + VAT の税金額)を計算する必要があります。使用する式は以下のようになります:

 

販売価格 = 本体価格 + VATの税金額

VATの税金額 = 本体価格 * VATの税率 / 100 となるため

販売価格 = 本体価格 + (本体価格 * VATの税率 / 100)

 

製品の本体価格は PriceNet ノードから取得することができます。VAT の税率は上記の方法を使って自動計算により計算され、この自動計算により、VAT ノードが更新されます。従って、VAT ノードのコンテンツを自動計算に使用することで、販売価格を計算することが可能になります。以下の XPath 条件式を使用することができます:

 

PriceNet  + (PriceNet * (VAT div 100))

 

XPath 条件式は、 プロパティウィンドウから確認並びに編集 することができます。本体価格や製品のカテゴリーを変更することで、自動計算が動作していることを確認することができます。製品の(VAT を含む)販売価格が変わることに注目してください。

 

TutAutoCal_Invoices_3

 

SPS では、販売価格の自動計算により XML ドキュメント内にある PriceGross ノードが更新されます。

 

更新された PriceGross ノードは、別の自動計算を使用することで、購入された全製品の合計金額を計算するために使用することができます。使用される XPath 条件式は sum(Order/Product/PriceGross) となります。注文書 SPS では、この自動計算により PriceTotal ノードが更新されます。個々の製品の金額を変更することで、自動計算の動作を確認することができます。

 

自動計算の演習

それでは2つの自動計算コンポーネントを SPS へ追加してみましょう:

 

1.注文全体から割引を計算する自動計算を作成します。注文の合計額が100ユーロ、300ユーロ、または600ユーロを超えた場合、それぞれ 5%、10%、そして12% の割引が適用されるようにします。割引額を(以下のスクリーンショットにあるように)表示して、XML ドキュメントの DiscountAmount ノードを更新するようにしてください。

2.割引後の価格を計算するための自動計算を作成します。販売価格から割引額を引いた値が割引後の価格となります。実際に請求される価格を(以下のスクリーンショットにあるように)表示して、XML ドキュメントの BillAmount ノードを更新するようにしてください。

 

これらのコンポーネントをセットアップすることで、以下のスクリーンショットにあるように Authentic View の出力が行われます。

 

TutAutoCal_Invoices_4

 

(マイ) ドキュメントフォルダー 以下の C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2020\StyleVisionExamples\Tutorial\Auto-Calculations フォルダーにある InvoiceWithDiscounts ファイルにて、これら2つの自動計算を確認することができます。

 

 

 

(C) 2019 Altova GmbH