将大表拆分为几个小表 [英] Split large table into several smaller tables

查看:34
本文介绍了将大表拆分为几个小表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个问题,一个表有 100 多行.这会导致一个问题,需要将其拆分为几个较小的表,每个表的行数较少.

I have a problem where a table has 100s of rows. It causes an issue and needs to be split into several smaller tables with fewer rows each.

我的 html 也是有效的 xml.

My html is valid xml as well.

如何将每 x 行的表格拆分成一个新表格?

How can I split the table every x rows into a new table?

而且,如何将表格样式和第一行(标题)复制到每个后续表格中.

And, how can I copy the table style, and first row (header) into each subsequent table.

像这样

<table class="..." style="...">
   <tr>
       <td>head 1</td>
       <td>head 2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>
<table>

成为

<table class="..." style="...">
   <tr>
       <td>head 1</td>
       <td>head 2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>
</table>

<table class="..." style="...">
   <tr>
       <td>head 1</td>
       <td>head 2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>
</table>

<table class="..." style="...">
   <tr>
       <td>head 1</td>
       <td>head 2</td>
   </tr>

   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>

</table>

<table class="..." style="...">
   <tr>
       <td>head 1</td>
       <td>head 2</td>
   </tr>
   <tr>
       <td>col1</td>
       <td>col2</td>
   </tr>
<table>

推荐答案

这是针对此类问题的经典 XSLT 1.0 解决方案:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:param name="prowLimit" select="12"/>

    <xsl:variable name="vTable" select="/*"/>

 <xsl:template match="node()|@*" name="identity">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="tr">
  <xsl:if test="position() mod $prowLimit = 1">
    <table>
      <xsl:copy-of select="$vTable/@*"/>
      <xsl:copy-of select=
      ". | following-sibling::tr[not(position() > $prowLimit -1)]"/>
    </table>
  </xsl:if>
 </xsl:template>
</xsl:stylesheet>

这篇关于将大表拆分为几个小表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆