我试图使用以下代码循环播放10天,但日期没有进行。对于我做错的任何帮助都将不胜感激:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<xsl:output indent="yes" method="xml" omit-xml-declaration="yes"/>
<xsl:template match="/">
<Hi>
<Start><xsl:value-of select="'Start Here'"/></Start>
<xsl:call-template name="DayFunction"/>
<End><xsl:value-of select="'End Here'"/></End>
</Hi>
</xsl:template>
<xsl:template name="DayFunction">
<xsl:param name="EndDate" select="2017-05-10"/>
<xsl:variable name="StartDate" select="2017-05-01"/>
<xsl:choose>
<xsl:when test="$EndDate >= $StartDate">
<ok><xsl:value-of select="$EndDate"/></ok>
<xsl:call-template name="DayFunction">
<xsl:with-param name="EndDate" select="$EndDate - 1"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<ohno><xsl:value-of select="'Stuck Here'"/></ohno>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
首先,当你这样做时:
if ( pNewStackItem )
你有一个类型为 integer 的参数,其值为2011(= 2017 - 5 - 10)。尝试将参数定义为:
<xsl:param name="EndDate" select="2017-05-10"/>
代替。
接下来,您无法从日期中减去数字。而不是:
<xsl:param name="EndDate" select="xs:date('2017-05-10')" />
尝试:
<xsl:with-param name="EndDate" select="$EndDate - 1"/>