2013-03-15 2 views
0

У меня проблема с установкой фиксированного количества строк в моей таблице. я создал таблицу с подобным кодом с этим:Таблица с фиксированным числом строк (xslt, sql)

<xsl:for-each select="DBData/tabulka1/Row[position() &lt; 14]"> 
     <tr> 
      <td><xsl:value-of select="ODESILATEL"/></td> 
      <td><xsl:value-of select="PREDMET"/></td> 
      <td align="right" class="sOkrajem"></td> 
     </tr> 
</xsl:for-each> 

И мне нужно, чтобы установить количество строк до 15, даже если я получаю несколько записей.

Например, если я получаю только 13 строк из базы данных, поэтому две левые строки будут пустыми, но будут там. Для лучшего понимания, вот изображение: http://imageshack.us/photo/my-images/692/tabulkar.png/

Если понадобится, я могу изменить код SQL.

Спасибо за все советы. И извините за представление моей проблемы.

Редактировать. более подробный пример моего кода:

У меня проблема с установкой фиксированного количества строк в моей таблице. я создал таблицу с подобным кодом с этим:

<xsl:for-each select="DBData/tabulka1/Row[position() &lt; 14]"> 
     <tr> 
      <td><xsl:value-of select="ODESILATEL"/></td> 
      <td><xsl:value-of select="PREDMET"/></td> 
      <td align="right" class="sOkrajem"></td> 
     </tr> 
</xsl:for-each> 

И мне нужно, чтобы установить количество строк до 15, даже если я получаю несколько записей.

Например, если я получаю только 13 строк из базы данных, поэтому две левые строки будут пустыми, но будут там. Для лучшего понимания, вот изображение: http://imageshack.us/photo/my-images/692/tabulkar.png/

Если понадобится, я могу изменить код SQL.

Спасибо за все советы. И извините за представление моей проблемы.

Редактировать. более обширный пример моего последнего использования кода:

<?xml version="1.0" encoding="windows-1250"?> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:param name="RolesPath" select="'%RolesPath%'"/> 
    <xsl:decimal-format decimal-separator="," 
         grouping-separator="&#160;"/> 

    <xsl:include href="%RolesPath%\_foot.xsl" /> 
    <xsl:template match="/"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> 


     <head> 
     <meta name="lang" content="cs" /> 
     <meta http-equiv="Content-Type" content="text/xml; charset=windows-1250" /> 
     <meta name="copyright" content="© 2009-2010 Flores" /> 
     <link rel="stylesheet" type="text/css" href="style.css" /> 

     </head> 
     <body class ="teloBezObrazku"> 
     <table width="95%" class="tabulka"> 
      <th colspan="3" class="nadpis">Vzkazy</th> 
      <xsl:variable name="numRows" select="15" /> 
      <xsl:variable name="rows" select="DBData/tabulka1/Row" /> 
      <xsl:apply-templates select="$rows[position() &lt;= $numRows]" /> 
      <xsl:call-template name="AddRows"> 
      <xsl:with-param name="numRows" select="$numRows - count($rows)" /> 
      </xsl:call-template> 
     </table> 
     <span style="position: absolute; bottom: 10;"> 
      &#160;&#160;<a href="abrasite:A4NHDUKJESG4PJAVPQJFMAE2PS">Otevřít vše...</a><b class="cara">|</b>&#160; 
      <a href="abrasite:A4NHDUKJESG4PJAVPQJFMAE2PS,0,DoNewOnly">Nový...</a> 
     </span> 
     <xsl:call-template name="footer"> 
      <xsl:with-param name="RolesPath" select="'%RolesPath%'"/> 
     </xsl:call-template> 
     </foot> 
     </html> 
    </xsl:template> 
    <!-- Separate templates --> 
    <xsl:template name="TableRow" match="tabulka1/Row"> 
    <tr> 
     <td> 
     <xsl:value-of select="self::Row/ODESILATEL"/> 
     </td> 
     <td> 
     <xsl:value-of select="self::Row/PREDMET"/> 
     </td> 
     <td align="right" class="sOkrajem"></td> 
    </tr> 
    </xsl:template> 

    <xsl:template name="AddRows"> 
    <xsl:param name="numRows" /> 
    <xsl:if test="$numRows > 0"> 
     <xsl:call-template name="TableRow" /> 

     <xsl:call-template name="AddRows"> 
     <xsl:with-param name="numRows" select="$numRows - 1" /> 
     </xsl:call-template> 
    </xsl:if> 
    </xsl:template> 
</xsl:stylesheet> 

Редактировать. Вероятно, первая ошибка.

<xsl:template name="tabulka1 | tabulka1/Row" mode="row"> 
    <tr onmouseover="className='seda'" onmouseout="className='bila'" title="{OBSAH}" style="cursor:hand" xmlns="http://www.w3.org/1999/xhtml"> 
    <a href="abrasite:A4NHDUKJESG4PJAVPQJFMAE2PS,0,DoShow;{ID}"> 
     <xsl:choose> 
     <xsl:when test = "PRECTENO='N'"> 
      <td align="left" class="sOkrajem"><b><xsl:value-of select="self::Row/ODESILATEL"/></b></td> 
      <td align="left" class="sOkrajem"><b><xsl:value-of select="self::Row/PREDMET"/></b></td> 
      <td align="right" class="sOkrajem"> 
       <b><xsl:value-of select="self::Row/DATUM"/>&#160;<xsl:value-of select="self::Row/HODINY"/><xsl:value-of select="self::Row/MINUTY"/></b> 
      </td> 
      </xsl:when> 
      <xsl:otherwise> 
      <td align="left" class="sOkrajem"><xsl:value-of select="self::Row/ODESILATEL"/></td> 
      <td align="left" class="sOkrajem"><xsl:value-of select="self::Row/PREDMET"/></td> 
      <td align="right" class="sOkrajem"> 
       <xsl:value-of select="self::Row/DATUM"/>&#160;<xsl:value-of select="self::Row/HODINY"/><xsl:value-of select="self::Row/MINUTY"/> 
      </td> 
     </xsl:otherwise> 
     </xsl:choose> 
    </a> 
    </tr> 
</xsl:template> 
+0

Ваш последний код не действительный XSLT (существует тег '', где требуется тег ''), но как только он исправлен, он работает, как ожидалось. – JLRishe

+0

Это только ctrl + c, ctrl + v ошибка. У меня есть более длинный код, и это важный раздел. В коде есть '' на правильном месте. – Sk1X1

ответ

1

Вы должны быть в состоянии выполнить это так (я опустил части колонтитула, которые не имеют доступа к):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:param name="RolesPath" select="'%RolesPath%'"/> 
    <xsl:decimal-format decimal-separator="," 
         grouping-separator="&#160;"/> 
    <xsl:variable name="numRows" select="15" /> 

    <xsl:template match="/"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> 
     <head> 
     <meta name="lang" content="cs" /> 
     <meta http-equiv="Content-Type" content="text/xml; charset=windows-1250" /> 
     <meta name="copyright" content="© 2009-2010 Flores" /> 
     <link rel="stylesheet" type="text/css" href="style.css" /> 

     </head> 
     <body class ="teloBezObrazku"> 
     <xsl:apply-templates select="DBData/tabulka1" /> 

     <xsl:apply-templates select="DBData/tabulka2" /> 
     <span style="position: absolute; bottom: 10;"> 
      &#160;&#160;<a href="abrasite:A4NHDUKJESG4PJAVPQJFMAE2PS">Otevřít vše...</a><b class="cara">|</b>&#160; 
      <a href="abrasite:A4NHDUKJESG4PJAVPQJFMAE2PS,0,DoNewOnly">Nový...</a> 
     </span> 
     </body> 
    </html> 
    </xsl:template> 

    <xsl:template name="TableRows"> 
    <xsl:variable name="rows" select="Row" /> 
    <xsl:apply-templates select="$rows[position() &lt;= $numRows]" mode="row" /> 
    <xsl:call-template name="AddRows"> 
     <xsl:with-param name="numRows" select="$numRows - count($rows)" /> 
    </xsl:call-template> 
    </xsl:template> 

    <xsl:template name="AddRows"> 
    <xsl:param name="numRows" /> 
    <xsl:if test="$numRows > 0"> 
     <xsl:apply-templates select="." mode="row" /> 

     <xsl:call-template name="AddRows"> 
     <xsl:with-param name="numRows" select="$numRows - 1" /> 
     </xsl:call-template> 
    </xsl:if> 
    </xsl:template> 

    <xsl:template match="tabulka1"> 
    <table width="95%" class="tabulka" xmlns="http://www.w3.org/1999/xhtml"> 
     <tr> 
     <th colspan="3" class="nadpis">Vzkazy</th> 
     </tr> 
     <xsl:call-template name="TableRows" /> 
    </table> 
    </xsl:template> 

    <xsl:template match="tabulka1 | tabulka1/Row" mode="row"> 
    <tr xmlns="http://www.w3.org/1999/xhtml"> 
     <td> 
     <xsl:value-of select="self::Row/ODESILATEL"/> 
     </td> 
     <td> 
     <xsl:value-of select="self::Row/PREDMET"/> 
     </td> 
     <td align="right" class="sOkrajem"></td> 
    </tr> 
    </xsl:template> 

    <xsl:template match="tabulka2"> 
    <table width="95%" class="tabulka" xmlns="http://www.w3.org/1999/xhtml"> 
     <tr> 
     <th colspan="2" class="nadpis">Other Table</th> 
     </tr> 
     <xsl:call-template name="TableRows" /> 
    </table> 
    </xsl:template> 

    <xsl:template match="tabulka2 | tabulka2/Row" mode="row"> 
    <tr xmlns="http://www.w3.org/1999/xhtml"> 
     <td> 
     <xsl:value-of select="self::Row/ODESILATEL2"/> 
     </td> 
     <td> 
     <xsl:value-of select="self::Row/PREDMET2"/> 
     </td> 
    </tr> 
    </xsl:template> 
</xsl:stylesheet> 

При запуске на этом входе XML:

<DBData> 
    <tabulka1> 
    <Row> 
     <ODESILATEL>Hello</ODESILATEL> 
     <PREDMET>1</PREDMET> 
    </Row> 
    <Row> 
     <ODESILATEL>Ciao</ODESILATEL> 
     <PREDMET>2</PREDMET> 
    </Row> 
    <Row> 
     <ODESILATEL>Hi</ODESILATEL> 
     <PREDMET>3</PREDMET> 
    </Row> 
    <Row> 
     <ODESILATEL>Bonjour</ODESILATEL> 
     <PREDMET>4</PREDMET> 
    </Row> 
    </tabulka1> 
    <tabulka2> 
    <Row> 
     <ODESILATEL2>Konnnichiwa</ODESILATEL2> 
     <PREDMET>1</PREDMET> 
    </Row> 
    <Row> 
     <ODESILATEL2>Wazzap</ODESILATEL2> 
     <PREDMET>2</PREDMET> 
    </Row> 
    <Row> 
     <ODESILATEL2>Buenos dias</ODESILATEL2> 
     <PREDMET>3</PREDMET> 
    </Row> 
    </tabulka2> 
</DBData> 

результат:

<html xml:lang="cs" lang="cs" xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta name="lang" content="cs" /> 
    <meta http-equiv="Content-Type" content="text/xml; charset=windows-1250" /> 
    <meta name="copyright" content="© 2009-2010 Flores" /> 
    <link rel="stylesheet" type="text/css" href="style.css" /> 
    </head> 
    <body class="teloBezObrazku"> 
    <table width="95%" class="tabulka"> 
     <tr> 
     <th colspan="3" class="nadpis">Vzkazy</th> 
     </tr> 
     <tr> 
     <td>Hello</td> 
     <td>1</td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td>Ciao</td> 
     <td>2</td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td>Hi</td> 
     <td>3</td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td>Bonjour</td> 
     <td>4</td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     <td align="right" class="sOkrajem" /> 
     </tr> 
    </table> 
    <table width="95%" class="tabulka"> 
     <tr> 
     <th colspan="2" class="nadpis">Other Table</th> 
     </tr> 
     <tr> 
     <td>Konnnichiwa</td> 
     <td></td> 
     </tr> 
     <tr> 
     <td>Wazzap</td> 
     <td></td> 
     </tr> 
     <tr> 
     <td>Buenos dias</td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
    </table> 
    <span style="position: absolute; bottom: 10;"> 
       <a href="abrasite:A4NHDUKJESG4PJAVPQJFMAE2PS">Otevřít vše...</a><b class="cara">|</b>  
     <a href="abrasite:A4NHDUKJESG4PJAVPQJFMAE2PS,0,DoNewOnly">Nový...</a> 
    </span> 
    </body> 
</html> 
+0

Я попробовал этот код, и я получаю каждую запись 15 раз. – Sk1X1

+0

Вы поместили мой код в свой 'for-each'? Код, приведенный выше, следует использовать вместо '' for-each', а не внутри него. – JLRishe

+0

Теперь я помещаю это вместо 'for-each', и получаю такой же результат, как при использовании моего кода. Без изменений. – Sk1X1

Смежные вопросы