Это XSLT правильно? - PullRequest
       1

Это XSLT правильно?

0 голосов
/ 18 ноября 2011

Я нашел скрипт, который позволит мне осуществлять предыдущую / следующую навигацию на веб-сайте, но я не уверен, что это правильно.

<?xml version="1.0"?>
 <xsl:stylesheet version="1.0"   
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output method="html" version="3.2" encoding="ISO-8859-1"/>
 <xsl:param name="Page" select="0" />
 <xsl:param name="PageSize" select="1" />

<xsl:template name="results" match="/">


<xsl:variable name="mycount" select="count(root/customer)"/>
<xsl:variable name="selectedRowCount" select="floor((number($numberOfRecords)-1) div 
$recordsPerPage)+1"/>


  <xsl:for-each select="root/customer">
   <!-- Pagination logic -->
   <xsl:if test="position() &gt;= ($Page * $PageSize) + 1">
    <xsl:if test="position() &lt;= $PageSize + ($PageSize * $Page)">


     <!-- Do display here -->

    </xsl:if>
   </xsl:if>
  </xsl:for-each>


  <!-- Prev link for pagination -->
  <xsl:choose>
   <xsl:when test="number($Page)-1 &gt;= 0">&#160;
    <A>
     <xsl:attribute name="href">_dirresult?page=<xsl:value-of select="number($Page)-
     1"/>&amp;pagesize=<xsl:value-of select="$PageSize"/></xsl:attribute>
      &lt;&lt;Prev
    </A>
   </xsl:when>
   <xsl:otherwise>
    <!-- display something else -->
   </xsl:otherwise>
  </xsl:choose>

  <xsl:if test="$selectedRowCount &gt; 1">
   &#160;<b class="blacktext"><xsl:value-of select="number($Page)+1"/>&#160;of&#160;<xsl:value-of select="number($selectedRowCount)"/></b>&#160;
  </xsl:if>

  <!-- Next link for pagination -->
  <xsl:choose>
   <xsl:when test="number($Page)+1 &lt; number($selectedRowCount)">&#160;
    <A>
     <xsl:attribute name="href">_dirresult?page=<xsl:value-of select="number($Page)             
     +1"/>&amp;pagesize=<xsl:value-of select="$PageSize"/></xsl:attribute>
      Next&gt;&gt;
    </A>
   </xsl:when>
   <xsl:otherwise>
    <!-- display something else -->
   </xsl:otherwise>
  </xsl:choose>
</xsl:template>
</xsl:stylesheet>

Этот сценарий правильный? Насколько я могу судить, «Отображать здесь» никогда не достигается, когда вы находитесь на странице 1 статьи 1.

1 Ответ

2 голосов
/ 18 ноября 2011

Способ узнать, работает ли он, это попробовать!

Первое, что вам нужно сделать, это исправить некоторые ошибки.Это объявление переменной просто неверно, потому что оно ссылается на две другие переменные, которые не существуют

<xsl:variable name="selectedRowCount" 
   select="floor((number($numberOfRecords)-1) div  $recordsPerPage)+1"/>

$ numberOfRecords , вероятно, должно быть mycount и $ recordsPerPage должно быть $ PageSize

При просмотре XSLT он ожидает список Customer элементов, например ...

<root>
   <customer>Bob 1</customer>
   <customer>Bob 2</customer>
   <customer>Bob 3</customer>
</root>

Попробовав сам, похоже, он работает, но имейте в виду, что он предполагает, что нумерация страниц начинается с 0, а не с 1, поэтому, если вы хотите отобразить первую страницу, вы устанавливаете $ Page параметр до 0. Не паникуйте, он покажет Страница 1 из ... в выводе.

Итак, попробуйте, и посмотрите, как вы попадаете...

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