如何在xsl中达到高度后创建一个新表?

时间:2016-10-20 12:22:41

标签: html css xml xslt

我有xml文件,如:

<lines>
   <line>
       <id>1</id>
       <value>1</value> 
   </line>
   <line>
       <id>2</id>
       <value>2</value> 
   </line>
   <line>
       <id>3</id>
       <value>3</value> 
   </line>
   <line>
       <id>4</id>
       <value>4</value> 
   </line>
   <line>
       <id>5</id>
       <value>5</value> 
   </line>
   <line>
       <id>6</id>
       <value>6</value> 
   </line>
   <line>
       <id>7</id>
       <value>7</value> 
   </line>
   <line>
       <id>8</id>
       <value>8</value> 
   </line>
<lines>

和我的xslt文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
  <table border="1">
    <xsl:for-each select="lines/line">
    <tr>
       <td><xsl:value-of select="id"/></td>
       <td><xsl:value-of select="value"/></td>
   </tr>
  </xsl:for-each>
</table>
</body>
</html>
</xsl:template>

我的问题是,如何根据表高度划分这个xml节点? 例如,在表达到100px之后,然后关闭表标记并创建新表并将tr标记添加到这个新表中?

我怎样才能成功呢?我试过行计数,但有时xml中的文本可能非常大。所以,我想减少表格中的行数。

任何帮助?

1 个答案:

答案 0 :(得分:1)

这种要求的一般解决方案是编写一个递归模板,该模板将参数(a)“达到目前为止的高度”和(b)“最大高度”作为参数。模板应处理一行,然后测试是否已达到最大高度;如果是这样它应该返回,否则它应该调用自己处理下一行,为“到目前为止的高度”参数传递一个新值。

(如果计算到零而不是达到某个限制,可以将其减少为单个参数。)