XSLT Paging - по умолчанию текущая дата - PullRequest
0 голосов
/ 23 декабря 2009

Я использую преобразование xslt, чтобы показать длинный список событий. У него есть пейджинг, но мне бы хотелось, чтобы по умолчанию были первые события, наиболее близкие к текущей дате.

Ответы [ 2 ]

1 голос
/ 05 марта 2010

Я предполагаю, что у вас есть полезный формат даты (ГГГГ-ММ-ДД).

<xsl:param name="currentDate" select="''" /><!-- fill this from outside! -->

<xsl:template name="isPageSelected"><!-- returns true or false -->
  <xsl:param name="eventsOnPage" /><!-- expects a node-set of events -->

  <xsl:choose>
    <xsl:when test="$eventsOnPage">
      <!-- create a string "yyyy-mm-dd,YYYY-MM-DD-" (note the trailing dash) -->
      <xsl:variable name="dateRange">
        <xsl:for-each select="$eventsOnPage">
          <xsl:sort select="date" />
          <xsl:if test="position() = 1">
            <xsl:value-of select="concat(date, ',')" />
          </xsl:if>
          <xsl:if test="position() = last()">
            <xsl:value-of select="concat(date, '-')" />
          </xsl:if>
        </xsl:for-each>
      </xsl:variable>
      <!-- trailing dash ensures that the "less than" comparison succeeds -->
      <xsl:value-of select="
        $currentDate &gt;= substring-before($dateRange, ',')
        and
        $currentDate &lt; substring-after($dateRange, ',')
      " />
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="false()" />
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

Итак, в вашей процедуре подкачки, чтобы узнать, является ли текущая страница выбранной, вызовите

<xsl:variable name="isPageSelected">
  <xsl:call-template name="isPageSelected">
    <xsl:with-param name="eventsOnPage" select="event[whatever]" />
  </xsl:call-template>
</xsl:variable>
<!-- $isPageSelected now is true or false, proceed accordingly -->
0 голосов
/ 23 декабря 2009

Поскольку сортировка в XSLT 1.0 ужасно, ужасно нарушена, лучше всего найти расширение или включить время в стиле Unix где-нибудь в исходном XML, чтобы вы могли сортировать по нему (хотя ISO строка также может работать).

...