0

我有几个样式表和模板,我想为它们添加一些行为。让我们这样说:

<xsl:template match="*" priority='10'>
    <xsl:apply-templates select="." mode="someFunStuffsToDo"/>
    <xsl:next-match/>
</xsl:template>

但是,由于我需要一些通用模板,所以我对参数有疑问,因为我不知道我可以拥有的所有不同类型的参数。

有没有什么“简单”的方式可以说这样的话:

<xsl:template match="*" priority='10'>
    <xsl:param select="All the params you get"/>
    <xsl:apply-templates select="." mode="someFunStuffsToDo">
         <xsl:with-param select="All the params you got"/>
    </xsl:apply-templates>
    <xsl:next-match/>
</xsl:template>

我可以想象一些基于通用参数的解决方案,其中将包含参数节点,但我需要重写我的大部分实际模板以切换通用参数的不同细节参数声明......

编辑:好的,我想我只是在发布我的问题之前找到了一个解决方案:隧道参数。据我了解,这是否符合我的目的,我的意思是

<xsl:template match="*" priority='10'>
    <xsl:apply-templates select="." mode="someFunStuffsToDo"/>
    <xsl:next-match/>
</xsl:template>

如果我只是在属性 tunnel='yes' 之前和之后设置我的参数,会起作用吗?(我还没有测试过,让我感到羞耻,但我认为下一场比赛将保留当前模式)

4

1 回答 1

0

是的,tunnel参数有帮助,但是您需要确保您的传递代码和接收模板<xsl:with-param name="foo" tunnel="yes" select="bar"/>分别具有<xsl:param name="foo" tunnel="yes"/>. 但是介于两者之间的任何模板,例如您拥有的模板,都不需要with-param.

于 2012-10-31T17:45:57.403 回答