1

簡単な質問があります。2つのテンプレートパラメータからのパスをどのように組み合わせるのですか?私はそのようなことをしたいと思います:

<xsl:template match="*[namespace-uri()='show:show']">
<xsl:param name="arg1"/>
<xsl:param name="arg2"/>
<tr>
  <td>
    <xsl:value-of select="concat($arg1,$arg2)"/>
  </td>
</tr>  

arg1 / arg2のようなパスを取得しますが、機能しません。どうすればそれを適切に行うことができますか?
またはあなたはのようなsthを行うことができます

<xsl:value-of select="path/path/$arg2"/>  


arg1はルートからの完全なパスであり、arg2は単一の要素名です。

4

2 に答える 2

2

パス式を文字列として作成し、それらを評価するには、拡張関数(少なくともXSLT 1.0および2.0)が必要です。コア仕様にはそれをサポートするものはありませんが、ほとんどのプロセッサーが適切な関数を提供します。表現

<xsl:value-of select="concat($arg1,'/',$arg2)"/>

arg1の文字列値、スラッシュ、およびの文字列値を含む文字列になりますarg2。ただし、arg1がノードセットであり、arg2を単なる要素名に制限する場合は、次のようにすることができます。

<xsl:value-of select="$arg1/*[local-name() = $arg2]"/>

(または必要copy-ofに応じて)テンプレートを次のように呼び出します

<xsl:with-param name="arg1" select="/path/to/interesting/stuff" />
<xsl:with-param name="arg2" select="'elementname'" />

arg2が要素ではなく属性に名前を付けることを許可したい場合は、

$arg1/@*[.....]

または、それを次のいずれかにすることを許可します(のターゲットに同じ名前の属性と子要素arg1がないと仮定します)

$arg1/node()[......]
于 2012-12-09T16:21:29.397 に答える
0

あなたはこのようにすることができます

<xsl:value-of select="concat($arg1,'/',$arg2)"/>
于 2012-12-09T16:10:36.187 に答える