我遇到xsl的以下问题:
我遵循其他xsl文件使用的现有模板:
<xsl:template name="strength">
<xsl:call-template name="show-strength">
<xsl:with-param name="medStrengthUnit1"
select="epsos:numerator/@unit"/>
<xsl:with-param name="medStrengthUnit2"
select="epsos:denominator/@unit"/>
<xsl:with-param name="medStrengthValue1"
select="translate(epsos:numerator/@value, '.', ',')"/>
<xsl:with-param name="medStrengthValue2"
select="translate(epsos:denominator/@value, '.', ',')"/>
<xsl:with-param name="medStrength1"
select="epsos:numerator"/>
<xsl:with-param name="medStrength2"
select="epsos:denominator"/>
</xsl:call-template>
</xsl:template>
现在我想调用这个模板,但我没有办法在方法中添加参数(因为它被其他样式表使用)
现在我使用了以下电话:
<xsl:for-each select="$strength">
<xsl:call-template name="strength"/>
</xsl:for-each>
强度是从另一种方法传入的参数:
<xsl:with-param name="strength"
select="epsos:quantity"/>
这是有效的,但我知道只有一种力量,我不喜欢使用xsl:for-each如果我知道已经必须总是有一个力量。
有没有办法只为路径调用模板,例如:
//for ($strength)
<xsl:call-template name="strength"/>
答案 0 :(得分:0)
您可以更改模板以接受参数,而不是要求设置上下文项。但你不想这样做。
您可以通过调用xsl:for-each来设置上下文项。但你不想这样做。
您可以将代码复制并粘贴到不需要设置上下文项的重构模板(或函数)中。但你不想这样做。
所以看起来你将不得不做一些你不想做的事情。欢迎来到编程。