altova:evaluate(XPathExpression as xs:string[, ValueOf$p1, ... ValueOf$pN]) XSLT1 XSLT2 XSLT3
XPath 式を必要とし、必須引数として文字列をパスします。評価された式の出力を返します。 例えば: altova:evaluate('//Name[1]') は、ドキュメント内の最初の Name 要素のコンテンツを返します。式 //Name[1] は、一重引用符を使用することにより、文字列としてパスされます。
altova:evaluate 関数は、オプションとして追加の引数を持つことができます。これらの引数は、 p1, p2, p3... pN の名前を持つスコープ内の変数の値です。使用に関して以下の点に注意してください: (i) 変数は、 X が整数である箇所のフォーム pX の名前と共に定義される必要があります。(ii) altova:evaluate 関数の引数は、 (上の署名参照) 2 番目の引数からは、数値順の変数のシーケンスに対応した引数のシーケンス変数の値を与えます: p1 to pN: 第 2 引数は変数 p1 の値で、第 3 引数は、変数 p2 の値です。 (iii) 変数の値は型 item* である必要があります。
<xsl:variable name="xpath" select="'$p3, $p2, $p1'" />
<xsl:value-of select="altova:evaluate($xpath, 10, 20, 'hi')" />
outputs "hi 20 10"
上のリストに関して、以下の点に注意してください:
•altova:evaluate 式の第 2 引数は、変数 $p1 に割り当てられた値で、第三の引数は変数 $p2 に割り当てられた値です。 •関数の第 4 番目の引数は、引用符による囲いで表示された文字列の値です。 • xs:variable 要素の select 属性は、 XPath 式を提供します。この式は xs:string の型である必要があり、一重引用符で囲まれています。
|
•<xsl:variable name="xpath" select="'$p1'" />
<xsl:value-of select="altova:evaluate($xpath, //Name[1])" />
最初の Name 要素の出力値
•<xsl:variable name="xpath" select="'$p1'" />
<xsl:value-of select="altova:evaluate($xpath, '//Name[1]')" />
Outputs "//Name[1]" |
altova:evaluate() 拡張関数は、 XSLT スタイルシート内のXPath 式が動的に評価される必要のあるシチュエーションで役に立ちます。例えば、ユーザーが並べ替えの必要条件をリクエストする場合、このシチュエーションは属性 UserReq/@sortkey に保管されます。スタイルシートでは、以下の式が使用できます: <xsl:sort select="altova:evaluate(../UserReq/@sortkey)" order="ascending"/>。 altova:evaluate() 関数は、コンテキストノードの親の UserReq 子要素の sortkey 属性を読み込みます。 sortkey 属性の値が Price の場合、 Price は、altova:evaluate() 関数により返され、 select 属性 <xsl:sort select="Price" order="ascending"/> の値になります。この sort 命令が、 Order という要素のコンテキスト内で発生する場合、 Order 要素は Price の子の値に従い並べ替えられます。また、 @sortkey の値が、 Date の場合、 Order 要素は、 Date の子の値に従い並べ替えられます。ですから、 Order の並べ替えの条件は、ランタイムでの sortkey 属性から選択されます。これは、以下の式などでは達成することはできません: <xsl:sort select="../UserReq/@sortkey" order="ascending"/>。上の場合、並べ替え条件は sortkey 属性自身であり、 Price または Date (または、現在の sortkey のコンテンツ) ではありません。
| メモ: | 静的なコンテキストは、変数以外以外で、呼び出し環境の名前空間、型、機能、を含みます。ベース URI とデフォルトの名前空間は継承されます。 |
•静的な変数: <xsl:value-of select="$i3, $i2, $i1" />
3 つの変数の値を出力します。
•動的な変数を持つ動的 XPath 式:
<xsl:variable name="xpath" select="'$p3, $p2, $p1'" />
<xsl:value-of select="altova:evaluate($xpath, 10, 20, 30)" />
"30 20 10" を出力します。
•動的な変数を持たない XPath 式:
<xsl:variable name="xpath" select="'$p3, $p2, $p1'" />
<xsl:value-of select="altova:evaluate($xpath)" />
出力エラー: $p3 に対して定義されている変数はありません。 |
|