получить узел по позиции без использования цикла - PullRequest
1 голос
/ 15 июня 2011
В любом случае в 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 &lt; $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 &lt; $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' - общее количество узлов в списке

1 Ответ

0 голосов
/ 16 июня 2011

Ваша линия:

<xsl:variable name="currentNode" select="$currentPage/*[position() = $currentCount]" />

в порядке.Вы должны спросить (и проверить себя), содержит ли $currentPage/* узел в позиции $currentCount.

Более того, вы пишете «попробовал, но, похоже, это не сработало:».Как вы проверили значение переменной?Внутри вашего шаблона вы просто определяете переменную, и нет инструкции для отображения ее значения.Можете ли вы попробовать с:

<xsl:copy-of select="$currentNode"/>

или

<xsl:value-of select="$currentNode"/>

Тем не менее «попробовал это, но это не сработало:», это просто «возможно», или преобразование бросает васошибка?Что за ошибка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...