我想从template1内部调用template2,并为其提供template1中的参数。
现在,我有这样的事情:
<xsl:template name="template1" match="home/sentences/sentence">
<xsl:if test="something...">
<new_sentence>
<!-- ...other unrelated stuff... -->
<xsl:apply-templates select="key('get_sentence_attribute', tokenRef/@tokID)"/>
<!--Here I point to the template I made for tokens.
But I also wish to provide it with the value returned by get_sentence_attribute -->
<xsl:apply-templates select="../../tokens"/>
</new_sentence>
</xsl:if>
</xsl:template>
<xsl:template name="template2" match="home/tokens">
<!-- ... -->
</xsl:template>
基本上我需要确保我的标记模板选择的值与我在句子模板中得到的sentence_attribute相匹配。我用Google搜索并找到<xsl:with-param>
元素;但这让我很困惑,我甚至不确定这是否是我需要的。
感谢您的帮助!
答案 0 :(得分:2)
<!-- 1. store your results in a variable -->
<xsl:variable name="result">
<xsl:apply-templates select="key('get_sentence_attribute', tokenRef/@tokID)"/>
</xsl:variable>
<!-- 2. call your template with a param value -->
<xsl:call-template name="named-template">
<xsl:with-param name="param1" value="$result"/>
</xsl:call-template/>
...
...
<!-- 3. you need to declare your template to accept a parameter -->
<xsl:template name="named-template">
<xsl:param name="param1"/>
<!-- do stuff with $param1-->
</xsl:template>