0

xsltで、xslt変換のどこかに割り当てられるparam値がある状況があります。しかし、私はそのパラメータを文字列として取得します。そのパラメータには、無制限の[0回以上の繰り返し]ノードが含まれている可能性があります。xpath式で使用される他のxmlコンテンツと同じように、それぞれにparaminを使用するにはどうすればよいですか。

これが私のサンプルxmlです:RetreiveData.xml

<soap-content>
------
<return>
<!--0 or more repetitions>-->
<data>
<startdate>12-12-12</startdate>
<enddate>12-12-13</enddate>
<nooftrans>5</nooftrans>
</data>
<data>
----
</data>

</soap=content>

これは、パラメータとしてxslに送信される私のサンプルファイルです。

xslファイル:

<xsl style>
<param name ="retrieve"></param>
---
<xsl:for-each ="$retreive/return/data">
----do strufff
</xsl:for-each>


This was throwing an error . How can i travese to a node if it is param ?

これは、xmlファイルのパスに割り当てられた変数を使用して実行できることを知っています。しかし、その方法は私のシナリオで提案されています。

誰かがこれを解決するのを手伝ってくれますか

よろしくお願いします、Eresh

4

1 に答える 1

0

投稿されたコードが整形式のXSLTであるが、意味を推測している場合は、$retrieveが単一の要素名である場合に役立ちます。

<param name ="retrieve"></param>
---
<xsl:for-each select="*[name()=$retrieve]/return/data">
----do stuff
</xsl:for-each>

XPath変数は、式のフラグメントではなく値を保持することに注意してください。$retrieve文字列"root"を保持している場合はそうではあり$retrieve/return/dataません。これは、ほとんどの言語でそうであるように、構文/タイプのエラーです。cまたはfortranに文字列"x"がある場合、式 "x"+1は変数xに文字列を追加しません。これを行うには、実行時に利用可能なXPathパーサーが必要です。一部の製品にはその拡張機能があります(XPath 3用に提案された評価関数があります)が、単純なケースでは、上記は文字列をXPathとして評価する必要性を回避します。root/return/data/"root"/return/data

于 2013-01-16T19:50:05.210 に答える