サンプル:注文書

www.altova.com すべてを展開/折りたたむ このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  SPS ファイル: 高度な機能 > 自動計算 >

サンプル:注文書

(マイ) ドキュメントフォルダー 以下の C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2019\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 の税率から、各製品に対して販売価格(本体価格 + VAT の税金額)を計算する必要があります。使用する式は以下のようになります:

 

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

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

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

 

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

 

for $i in Category return PriceNet + (PriceNet *(/Invoice/Categories/Category[. = $i]/@rate) div 100)

 

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

 

TutAutoCal_Invoices_3Std

 

 

 


(C) 2019 Altova GmbH