我有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中的文本可能非常大。所以,我想减少表格中的行数。
任何帮助?
答案 0 :(得分:1)
这种要求的一般解决方案是编写一个递归模板,该模板将参数(a)“达到目前为止的高度”和(b)“最大高度”作为参数。模板应处理一行,然后测试是否已达到最大高度;如果是这样它应该返回,否则它应该调用自己处理下一行,为“到目前为止的高度”参数传递一个新值。
(如果计算到零而不是达到某个限制,可以将其减少为单个参数。)