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

Altova MapForce 2021 Basic Edition

関数

カスタム XSLT 1.0 または 2.0 関数のインポート

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

XSLT 1.0 と 2.0 関数ライブラリを MapForce 内で使用することのできる単純型を返すカスタム関数として拡張することができます。

 

簡単なデータ型 (例えば、文字列) を返すカスタム関数のみがサポートされます。

XSLT ファイルから関数をインポートする:

1.ライブラリ ウィンドウのベースの ライブラリの追加/削除 ボタンをクリックします。ライブラリの管理ウィンドウが開かれます。

mf_manage_libraries_window_empty

2.以下の内の1つを行います:

 

(現在のマッピング内のスコープのみで) ローカル ライブラリとして関数をインポートする場合現在のマッピング名の下の 「追加」 ボタンをクリックします。

(プログラムレベルで) グローバル ライブラリとして関数をインポートする場合 グローバルライブラリのインポートの横の 「追加」 ボタンをクリックします。

 

メモ:ライブラリをローカルでインポートする場合、ライブラリファイルのパスをマッピングに対して相対的に設定することが可能です。グローバルにインポートされたライブラリでは、インポートされたライブラリへのパスは常に絶対的なパスです。

 

3.関数が含まれる .xsl ファイル を参照し、「開く」をクリックします。メッセージボックスが表示され、新規のライブラリが追加されていることを通知します。

 

インポートされた XSLT ファイルは、ライブラリウィンドウ内のライブラリに表示され、全ての名前を持つテンプレートを関数として、ライブラリ名の下に表示されます。インポート済みのライブラリが表示されていない場合、 XSLT が 変換言語として選択されていることを確認してください。関数ライブラリの管理も参照してください。

 

以下の点に注意してください:

 

MapForce にインポートが許可されている場合、関数は XSLT ファイル内で XSLT 仕様に準拠している名前が付けられたテンプレートとして宣言されている必要があります。XSLT 2.0 ドキュメント内で発生する関数を <xsl:function name="MyFunction"> の書式でインポートすることもできます。インポートされた XSLT ファイル内で、他の XSLT ファイルをインポートまたは含むことができ、これらの XSLT ファイルと関数もインポートされることができます。

インポートされたカスタム関数のマップすることのできる入力コネクタはテンプレート呼び出し内で使用されるパラメーターの数により異なります。任意のパラメーターもサポートされています。

名前空間はサポートされています。

MapForce に既にインポートされている XSLT ファイルの更新を行う場合、変更は自動的に検知され、 MapForce がファイルの再ロードを促します。

名前付きのテンプレートに書き込む場合、テンプレート内で使用されている XPath ステートメントが正しい名前空間を持つことを確認してください。マッピングの名前空間にバインドする名前空間を確認するには、 生成された XSLT コードをプレビューしてください。

 

XPath 2.0 内のデータ型

XML ドキュメントから XML スキーマが参照されており、スキーマに対してドキュメントが妥当である場合、演算にて目的のデータ型へ暗示的に変換されないデータ型を明示的に構築またはキャストする必要があります。

 

Altova XSLT 2.0 エンジンで使用される XPath 2.0 データモデルでは、XML ドキュメントから原子化された全てのノード値に xs:untypedAtomic データ型が割り当てられます。xs:untypedAtomic 型は、以下にあるように暗示的な型変換に使用されます:

 

例えば、

 

xdt:untypedAtomic 値が加算演算子により xs:double暗黙的に変換されるため式 xs:untypedAtomic("1") + 1 は2の値を結果とします。

四則演算では、オペランドが暗黙的に xs:double へ変換されます。

値の比較を行う場合、比較の前にオペランドが xs:string へ変換されます。

 

次も参照:

例: カスタム XSLT 関数の追加

例: ノードの値の集計

XSLT 1.0 エンジンの実装

XSLT 2.0 エンジンの実装

(C) 2020 Altova GmbH