私はXSL(T)の新機能です。私はその関連性はよくわかりませんが、IBM DataPowerを使って作業しています。XSLT - 再帰的テンプレートからの変数代入
私はこのようになり、着信URIを解析するためにXSLを使用しようとしている:
http://ip:port/Nucleus_v2.9.3/SomeEndPoint
私は1つの変数と目的地へのバージョン(2.9.3)を抽出したい(SomeEndPoint)第2の変数に変換する。私は2つのパラメータ(上記のURIとスラッシュ文字)を取る再帰的なテンプレートを使用しようとしています。テンプレート内では、URIをトレースして両方の値を変数に取り込む要素を使用したいと考えています。
<xsl:template name="parseIncomingURI">
<xsl:param name="string" />
<xsl:param name="char" />
<xsl:choose>
<xsl:when test="contains($string, $char) and contains($string, 'Nucleus_v')">
<xsl:call-template name="parseIncomingURL">
<xsl:with-param name="string" select="substring-after($string, $char)" />
<xsl:with-param name="char" select="$char" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
は私が可能ですしようとしていると私はテンプレートを提供することを意図するものを誤解することができるかわからないんだけど。私は上記の "when"要素にバージョンを割り当てて、 "それ以外の場合"(再帰で最後のスラッシュに遭遇した後にトリガーする)にエンドポイント変数を割り当てたいとします。私はこのテンプレートをXSLのどこか別の場所で呼び出し、元のURIと '/'文字を2つの初期パラメータとして渡します。私は、 "when"要素で、一部のsubstring-beforeおよびsubstring-after関数を使ってバージョンを取得する必要があることを認識しています。私はそれがこの例を混乱させると思うので、私はここにそのコードを含んでいません。
私は適切なトラックにいますか?どのような助けや指針をいただければ幸いです。私は必要に応じて編集してさらに情報を追加してうれしいです。
おかげで、 クリス
"*テンプレート内では、URIをトレースして両方の値を変数に取り込む要素を使用したいと考えています。* "それはとにかく機能しませんでした:テンプレート内で定義された変数は、そのテンプレートに範囲が限定されるでしょう。 –
よく知っています、私はそれについても疑問に思っていました。私は再帰パスを開始しましたが、URIパスから2つ以上の変数が引き出される可能性があると考えたので、私は '/'を分割したいと思っていましたが、それは直接可能ではなく、再帰は可能な回避策かもしれません。あなたが欲しかったものよりも多くの情報...しかし、それは最初に再帰につながったものです –
再帰は複数の接頭辞/サフィックスのペアであり、n番目のトークンを抽出する必要があります。最後に一意の区切り記号でトークンを取得する方法を示す例です:http://stackoverflow.com/questions/38848374/how-to-find-lastプレビュー作業とストア・ツー・マイ・フィールド・イン・xslt/38848925#38848925 –