xslt | xpath functions

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  関数 > 関数ライブラリレファレンス >

xslt | xpath functions

xpath 関数ライブラリに収められている関数は、XPath 1.0 ノードセットの関数です。各関数は、ノードやノードセットをコンテキストとして受け取り、そのノードやノードセットに関する情報を返します。これらの関数は、通常以下のような要素を備えています:

 

コンテキストノード: 以下のスクリーンショットでは、ソーススキーマにある Language 要素が lang 関数のコンテキストノードとして与えられています。
入力パラメーター: 以下のスクリーンショットでは、文字列定数の en が lang 関数の入力パラメーターとして与えられています。last ならびに position 関数は入力パラメーターを取りません。

 

FXxpath10

 

 

lang

lang 関数は(例えば en といった)言語コードが書かれた文字列を受け取ります。コンテキストノードに xml:lang 属性が存在しており、属性値が関数のパラメーターで指定された値にマッチするかがチェックされ、true または false が返されます。上のスクリーンショットにおいて、以下の点に注目してください:

 

1. ソーススキーマにある Language 要素には xml:lang 属性が含まれています。
2.Language ノードはフィルタリングされており、en という値の xml:lang 属性を持った Language ノードだけが処理されます(フィルタリングの条件が equal 関数により与えられます)。
3. Language ノードがコンテキストノードとなり、出力ドキュメントにて en 要素が作成されます。
4.lang 関数の出力(true または false)が出力ファイルの en/@exists 属性ノードへ渡されます。定数の en が関数のパラメーターへ渡されています。lang 関数はコンテキストノード(Language 要素)に xml:lang 属性があり、その値が(関数のパラメーターにより与えられた)en であるかチェックして、そうである場合は true を、そうでない場合は false を返します。

 

 

last, position

last ならびに position 関数は入力パラメーターを受け取りません。last 関数では、コンテキストノードセット内にある最後のノードの位置が返されます。position 関数により、処理中のノードセット内にある現在のノード位置が返されます。

 

関数が接続されているノードにあるコンテキストノードセットは、関数が適用されるノードセットとなります。以下のスクリーンショットにおいて、last 関数のコンテキストノードセットは Language 要素になります。

 

FXxpath10last

 

上の例では last 関数により、コンテキストノードセット(Language 要素のノードセット)にある最後のノードの位置が、number 属性の値へ返されます。この関数はノードセット内にあるノードの数を返すため、ノードセットの大きさを示す値が返されます。

 

position 関数は、Language ノードにおいて現在処理されているノードの位置を返します。Language 要素のノードセット内にて処理されているノードの位置が language/@position 属性ノードへ返されます。

 

 

name, local-name, namespace-uri

これらの関数は同じように使用され、それぞれ入力ノードの名前、ローカル名、名前空間 URI を返します。以下にあるスクリーンショットにて、これら関数の使用方法を確認することができます。コンテキストノードが指定されていない点に注目してください。

 

name 関数は、Language ノードの名前を language/@elementname 属性に対して返しています。これら関数のパラメーターが、(単一のノードではなく)ノードセットの場合、そのノードセットにある最初のノードの名前(またはローカル名や名前空間 URI)が返されます。

 

FXxpath10name

 

name 関数は、ノードの QName を返します。local-name 関数により、ノード QName のローカル名部分が返されます。例えば、ノードの QName が altova:MyNode となっている場合、MyNode がローカル名になります。

 

名前空間 URI とは、ノードが属している名前空間の URI のことです。例えば以下のような方法で、altova: というプレフィックスを、名前空間 URI へマッピングすることができます: xmlns:altova="http://www.altova.com/namespaces"。

 

メモ:その他の XPath 1.0 関数を core 関数 ライブラリ以下で確認することもできます。

(C) 2019 Altova GmbH