是否可以将模板中收到的所有参数转发给另一个而不知道它们?
示例:
<xsl:template match="foo">
<xsl:apply-templates select="bar">
<xsl:with-param name="father-id" select="@id"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="*" priority="9">
<!-- do some things -->
<xsl:next-match/>
</xsl:template>
<xsl:template match="bar">
<xsl:param name="father-id"/>
<!-- do some things with my param -->
</xsl:template>
由于father-id
,我的参数xsl:template match="*"
丢失了。
那么,有没有办法在<xsl:next-match />
步骤转发它但不使用以下代码,因为可能有比这个更多的案例和不同的参数?
<xsl:template match="*" priority="9">
<xsl:param name="father-id"/>
<!-- do some things -->
<xsl:next-match>
<xsl:with-param name="father-id" select="{father-id}"/>
</xsl:next-match>
</xsl:template>
提前谢谢。
杰拉德。
答案 0 :(得分:2)
以这种方式尝试:
<xsl:template match="foo">
<xsl:apply-templates select="bar">
<xsl:with-param name="father-id" select="@id" tunnel="yes"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="*" priority="9">
<!-- do some things -->
<xsl:next-match/>
</xsl:template>
<xsl:template match="bar">
<xsl:param name="father-id" tunnel="yes"/>
<!-- do some things with my param -->
</xsl:template>
仅 XSLT 2.0 - 但xsl:next-match
也是如此
http://www.w3.org/TR/xslt20/#tunnel-params