无论如何在xslt中直接从列表中获取节点而不使用for-each循环:
试过这个,但它似乎没有用:
<xsl:variable name="currentNode" select="$currentPage/ * [position() = 4]" />
任何帮助将不胜感激。
只是添加到此:
<xsl:template name="checkmonth">
<xsl:param name="stringOfMonths" />
<xsl:param name="n" />
<xsl:param name="currentCount" />
<!--get node in list -->
<xsl:variable name="currentNode" select="$currentPage/ * [position() = $currentCount]" />
<xsl:variable name="dateOfNode" select="$currentNode" />
<xsl:choose>
<xsl:when test="not(contains($stringOfMonths,dateOfNode/@createDate))">
<xsl:value-of select="$dateOfNode/@createDate" />
<xsl:if test="$currentCount < $n">
<xsl:call-template name="checkmonth">
<xsl:with-param name="stringOfMonths" select="concat($stringOfMonths," ",$dateOfNode/@createDate />
<xsl:with-param name="n" select="$n" />
<xsl:with-param name="currentCount" select="$currentCount + 1" />
</xsl:call-template>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$currentCount < $n">
<xsl:call-template name="checkmonth">
<xsl:with-param name="stringOfMonths" select="$stringOfMonths" />
<xsl:with-param name="n" select="$n" />
<xsl:with-param name="currentCount" select="$currentCount + 1" />
</xsl:call-template>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
我有一个在不同日期创建的节点列表,我想生成这些节点创建的月份列表。 'n'是列表中的节点总数
答案 0 :(得分:0)
你的专栏:
<xsl:variable name="currentNode" select="$currentPage/*[position() = $currentCount]" />
很好。您应该询问(并检查自己)$currentPage/*
是否包含位置$currentCount
的节点。
此外,你正在写“试过这个,但它似乎没有用:”。你是如何检查变量值的?在模板内部,您只是定义变量,并且没有指示显示其值。你可以尝试:
<xsl:copy-of select="$currentNode"/>
或
<xsl:value-of select="$currentNode"/>
仍然“尝试了这个,但它似乎没有工作:”,它只是一个“可能”或转换会给你一个错误?哪种错误?