---
title: "XSLT3の数学関数を用いたデータマッピング"
date: "2021-04-14"
categories: 
  - "data-integration"
  - "xpath"
  - "xquery"
tags: 
  - "data-mapping"
  - "mapforce"
  - "xml-data-mapping"
  - "xslt3"
description: MapForceを使用して、XSLT3が高度な数学関数（三角関数などを含む）を活用することで、XMLデータのマッピングをどのように強化し、複雑な統合の課題に対応できるのかを詳しく解説します。
---
Status: #blog

Tags:  #data-mapping #mapforce #xml-data-mapping #xslt3

Categories: [data-integration](/blog/ja/category/data-integration.md) | [xpath+xquery](/blog/ja/category/xpathxquery.md) | [xpath+xquery](/blog/ja/category/xpathxquery.md)
# XSLT3の数学関数を用いたデータマッピング

XSLT3は、三角関数やその他の高度な数学関数、新しい書式設定関数、環境変数収集機能などを追加し、XSLTおよびXSLT2のXML変換標準を拡張しています。データアナリストやその他のデータ専門家は、XSLT3の機能を活用することができます [XMLデータのマッピングと統合における課題を解決するために](https://www.altova.com/ja/mapforce) 複雑な数学的計算を必要とするものです。いくつかMapForceの具体的な例を見てみましょう [XSLT3を使用したデータマッピング](https://www.altova.com/ja/xslt-3#mapforce) 三角関数やその他の複雑な数式を用いた数学関数。

![](/blog/images/shutterstock_248233801.jpg)

<!--more-->

MapForceは、様々なデータ形式や用途に合わせてカスタマイズされた、独自の処理エンジンを提供しています。

[![XSLT3を使用したデータマッピングにおける処理エンジンの選択](/blog/images/processing-engine.png)](processing-engine.png)

XSLT3エンジンを選択すると、以下の機能が機能ライブラリウィンドウに追加され、データマッピングに使用できるようになります

[![XSLT3と連携してデータマッピングを行うためのXQuery関数](/blog/images/xslt3-functions.png)](xslt3-functions.png)

例えば、XMLファイルに格納された入力値に基づいて、サイン、コサイン、タンジェントを生成するデータマッピングを作成することができます。元のデータはCSVファイルとして提供され、それを世界で最も多く販売されているXMLエディタであるXMLSpyにインポートしました [JSONおよびXMLエディタ](https://www.altova.com/ja/xmlspy-xml-editor), XML形式への変換用。

MapForceでのマッピングは、入力ファイルと出力ファイルに対応するXMLスキーマを読み込み、その後、ルート要素を接続することから始めます。この段階で、標準的な「ターゲット駆動型」の接続タイプを選択することが重要です。これにより、以降の接続を個別にカスタマイズすることができます。

[![カスタムデータマッピングを実現するための、目標指向型の要素接続機能](/blog/images/data-mapping-1-3.png)](data-mapping-1-3.png)

次に、行要素を接続し、ライブラリから三角関数をドラッグして配置し、ソースからのx値要素をそれぞれの関数と出力要素に接続します。以下が完成したデータマッピングです

[![入力データに対して、サイン、コサイン、およびタンジェントの値を算出します](/blog/images/data-mapping-2-3.png)](data-mapping-2-3.png)

「出力」ボタン（マッピング領域の下にあります）をクリックすると、入力ファイルが処理され、出力が生成され、プレビューウィンドウが開きます。

[![サイン、コサイン、およびタンジェントの値を含むXMLファイルを出力します](/blog/images/output-1-1.png)](output-1-1.png)

この例では、入力値が0から15まで、0.1刻みで設定されており、出力にはそれぞれのサイン、コサイン、タンジェントの値が表示されます。このファイルを保存し、XMLSpyで開くことで、XMLSpyのグリッドビューを活用し、高度にカスタマイズされたグラフを作成したり、さらにそのグラフをレポートやプレゼンテーションに組み込むことも可能です

[![XMLSpyのグリッド表示で、生成されたグラフとともに出力ファイルが表示されています](/blog/images/sin-cos-graph.png)](sin-cos-graph.png)

**XSLT3を使用して、複雑な式を構築するためのデータマッピング**

XSLT3の関数は、ライブラリ内の他の関数と組み合わせて、複雑な式を構築することができます。例えば、入力値のリストに、y = 4x² – 3のような二次方程式を適用したいとします。この場合、XSLT3のpow関数（べき乗を計算する関数）を、乗算や加算を行う基本的なライブラリ関数と組み合わせたマッピングを作成できます。

[![XSLT3を使用して、データマッピングのための二次式を構築する方法](/blog/images/quadratic-mapping-1.png)](quadratic-mapping-1.png)

このマッピングにおける関数の並び順は、式に含まれる処理の順序を明確に定義しています。具体的には、まず指数計算、次に乗算、最後に減算という順序で処理されます。もし式が括弧を使用してデフォルトの処理順序を上書きしている場合、マッピング内の関数の順序を変更することで、希望する処理順序を設定します。

おそらく、ある一連の入力値をいくつかの異なる計算式で処理し、その結果を比較したいと考えているかもしれません。そのために、計算式を記述するユーザー関数を作成し、出力ファイルの内容を修正して、各出力ファイルが生成された際に使用された指数、乗数、および修正係数を記録することができます。

以下に、表現のバリエーションによって生成される各出力ファイルの、希望する構造を示します

[![二次式の結果を格納するための、希望するデータ構造](/blog/images/result-structure.png)](result-structure.png)

ユーザー定義関数は、入力XMLファイルからxの値を受け取り、数式を計算するだけでなく、出力に記録されるための関数パラメータも受け渡します。

[![二次式をユーザー関数として利用する](/blog/images/user-function-1.png)](user-function-1.png)

以下に、ユーザー関数内で使用される表現と、それに対応する詳細なマッピングを示します

[![二次式に対するユーザー定義関数を用いたデータマッピング](/blog/images/quadratic-mapping-2.png)](quadratic-mapping-2.png)

 そして、生成された出力ファイルは以下の通りです

[![二次式に対するXSLT3を用いたデータマッピングの一部の様子](/blog/images/output-2-2.png)](output-2-2.png)

ユーザー関数は、他のマッピングに簡単に組み込んだり、複数のMapForceユーザー間で共有したりすることができます。ユーザー関数を作成するには、まず式を定義する関数を選択し、次にメインメニューの「関数」をクリックします

[![既存のマッピングから、ユーザー定義関数を構築する](/blog/images/build-user.png)](build-user.png)

以下に、ユーザー関数に関する最終的な定義を示します

[![XSLT3におけるデータマッピングにおいて、二次式に対するユーザー定義関数の定義](/blog/images/user-function-definition-1.png)](user-function-definition-1.png)

データのマッピングと統合プロジェクトで、XSLT3の三角関数やその他の高度なXSLT3関数を用いたデータマッピングが必要な場合は、ぜひMapForceをお試しください。MapForceは、あらゆる種類のデータ変換と統合を可能にする、受賞歴のあるグラフィカルなデータマッピングツールです。ダウンロードはこちらから [MapForceの無料トライアル版](https://www.altova.com/ja/mapforce/download) チュートリアル、ヘルプ、そしてさらに多くのサンプルなど、様々なコンテンツをご用意しています。
