1

我有一个 XSLT。它调用一个返回字符串的函数。像这样:

<xsl:param name="mystr" select="myStrfunc()"></xsl:param>

它还像这样调用 XML 模板:

 <li>
<xsl:call-template name="myLinks">
<xsl:with-param name="link" select="$links/link[@Id='link1']" />
<xsl:with-param name="mystr"/>
</li>

xml 模板片段如下所示:

    <link Id="link1">
     <a href="" text="click" />
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
how can I access the parameter mystr declared in xslt here??
    </link>

如何访问 xml 文件中的参数 mystr?

4

1 回答 1

2
<li>
  <xsl:call-template name="myLinks">
    <xsl:with-param name="link" select="$links/link[@Id='link1']" />
    <xsl:with-param name="mystr"/>
</li>

这是格式错误的 XML - 元素xsl:call-template未关闭。

很可能你想要:

<li>
 <xsl:call-template name="myLinks">
   <xsl:with-param name="link" select="$links/link[@Id='link1']" />
   <xsl:with-param name="mystr"/>
 </xsl:call-template/>
</li>

这会调用名为的模板"myLinks"并向其传递两个参数,named:"link""mystr".

但是,没有select为参数定义值(在属性中或元素主体中)"mystr"

如果你想为参数提供一个值——例如执行一个函数的结果,可以这样做:

<li>
 <xsl:call-template name="myLinks">
   <xsl:with-param name="link" select="$links/link[@Id='link1']" />
   <xsl:with-param name="mystr" select="myStrfunc()"/>
 </xsl:call-template/>
</li>

然后在被调用模板的主体中,可以通过引用它来访问参数的值:

<link Id="link1">
 <a href="" text="click" />
 <xsl:value-of select="$mystr"/>
</link>

或者,如果您需要使用$mystr来生成href属性的值,那么请执行以下操作:

<link Id="link1">
 <a href="{$mystr}" text="click" />
</link>
于 2012-12-21T21:17:48.307 回答