XSLT 関数

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

ホーム >  エンジン情報 > XSLT と XPath/XQuery 関数 > Altova 拡張関数
 >

XSLT 関数

XSLT 拡張関数 はXSLT コンテキスト内の XPath 式にて使用することができます。 (例えば、 XQuery コンテキストなどの) 非-XSLT コンテキストでは使用することができません。

 

関数の名前指定と言語の適用性

Altova 拡張関数はXPath/XQuery 式で使用することができ、 XPath、 XQuery、および XSLT 関数の標準ライブラリで使用可能な機能に更なる機能性を与えます。 Altova 拡張関数はAltova 拡張関数名前空間、 http://www.altova.com/xslt-extensions に収められており、 altova:プレフィックスが、このセクションでは使用されます。製品の今後のバージョンが拡張機能への継続的サポート、または個別の関数の振る舞いは変更する可能性があることに注意してください。 Altova 拡張機能へのサポートに関しては、今後のリリースのドキュメントを参照してください。

 

XPath 関数 (XSLT 内の XPath 式で使用 ):

XP1 XP2 XP3.1

XSLT 関数 (XSLT 内の XPath 式で使用):

Xslt1 XSLT2 XSLT3

XQuery 関数 (XQuery 内の XQuery 式で使用):

XQ1 XQ3.1

 

 

標準関数

Click to expand/collapsedistinct-nodes [altova:]

altova:distinct-nodes(node()*) を node()* とする     Xslt1 XSLT2 XSLT3

入力として1つ以上のノードを必要とし、同じセットから重複した値を持つノードを除いたノードを返します。 XPath/XQuery 関数 fn:deep-equal を使用して比較を行うことができます。

altova:altova:distinct-nodes(country)は重複した値を持つものを除く、全ての子 country ノード返します。

 

 

Click to expand/collapseevaluate [altova:]

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 に対して定義されている変数はありません。

 

 

Click to expand/collapseencode-for-rtf [altova:]

altova:encode-for-rtf(input as xs:stringpreserveallwhitespace as xs:booleanpreservenewlines as xs:boolean) を xs:string とする     XSLT2 XSLT3

RTF のためのコードに入力文字列を変換します。空白と新しい行は、それぞれの引数により指定される boolean の値に基づき保管されます。

 

 

 

[ トップ ]

 

 

XBRL 関数

Altova XBRL 関数は XBRL をサポートする Altova 製品のエディションのみで使用することができます。

 

Click to expand/collapsexbrl-footnotes [altova:]

altova:xbrl-footnotes(node()) を node()* とする     XSLT2 XSLT3

ノードを入力引数として必要とし、入力ノードに参照される XBRL フットノート ノードを返します。

 

 

Click to expand/collapsexbrl-labels [altova:]

altova:xbrl-labels(xs:QNamexs:string) を node()* とする     XSLT2 XSLT3

以下の 2 つの入力引数を必要とします: ノード名とノードを含むタクソノミファイルロケーション。関数は、入力ノードと関連した XBRL ラベルノードを返します。

 

 

 

[ トップ ]

 


(C) 2019 Altova GmbH