在一个模板中有两个"param"



我想知道是否有可能在模板内带来两个param ?如果是,那又是怎么回事呢?例如:

<xsl:template name="formatDate">
    <xsl:param name="timeParam"/>
    <xsl:param name="withYear"/>
    <xsl:variable name="dateParam" select="substring-before($timeParam,'T')"/>
    <xsl:variable name="year" select="substring($dateParam,1,4)"/>
    <xsl:variable name="month" select="substring($dateParam,6,2)"/>
    <xsl:variable name="day" select="substring($dateParam,9,2)"/>
    <xsl:if test="string-length($day) = 1">
        <xsl:value-of select="'0'"/>
    </xsl:if>
    <xsl:value-of select="$day"/>
    <xsl:value-of select="'.'"/>
    <xsl:if test="string-length($month) = 1">
        <xsl:value-of select="'0'"/>
    </xsl:if>
    <xsl:value-of select="$month"/>
    <xsl:if test="string-length($withYear) = 1">
        <xsl:value-of select="'.'"/>
        <xsl:value-of select="'0'"/>
        <xsl:with-param name="withYear" select="$year" />
    </xsl:if>
</xsl:template>

和调用:

<xsl:call-template name="formatDate">
    <xsl:with-param name="timeParam" select="attribute::time"/>
    <xsl:with-param name="withYear" select="1"/>                    
</xsl:call-template>
<xsl:call-template name="formatDate">
    <xsl:with-param name="timeParam" select="attribute::time"/> 
</xsl:call-template>

如您所见,在某些位置我需要年份参数,而在其他位置则不需要。

p。使用两个参数的原因是我不想重复代码。

我不知道你的问题到底是什么。我很确定你的命名模板需要改变,因为你不能有xsl:with-param作为xsl:if的子。

我认为与其:

<xsl:if test="string-length($withYear) = 1">
    <xsl:value-of select="'.'"/>
    <xsl:value-of select="'0'"/>
    <xsl:with-param name="withYear" select="$year" />
</xsl:if>

你应该有:

<xsl:if test="string-length($withYear) = 1">
    <xsl:value-of select="'.'"/>
    <xsl:value-of select="$year"/>
</xsl:if>

或简单的:

<xsl:if test="$withYear">
    <xsl:text>.</xsl:text>
    <xsl:value-of select="$year"/>
</xsl:if>

相关内容

  • 没有找到相关文章

最新更新