我试图将XML表从较大的项目转换为HTML表格,而且我对这个XSLT游戏很陌生。我发现了很多材料,但我还没有看到任何类似这个问题的东西,所以我想我会问:
<div class="row">
<div class="col-sm-6 tier1">
<div class="smBox"></div>
<div class="smBox"></div>
</div>
<div class="col-sm-6 tier1">
<div class="lgBox"></div>
</div>
</div>
我希望用<table name="my table (2 columns)">
<!-- some column headers -->
<colhddef colnum="1">This is column 1</colhddef>
<colhddef colnum="2">This is column 2</colhddef>
<entry row="1" colnum="1">entry 1</entry>
<entry row="1" colnum="2">entry 2</entry>
<entry row="2" colnum="1">entry 3</entry>
<entry row="2" colnum="2">entry 4</entry>
<entry row="3" colnum="1">entry 5</entry>
<entry row="3" colnum="2">entry 6</entry>
<entry row="4" colnum="1">entry 7</entry>
<entry row="4" colnum="2">entry 8</entry>
</table>
包含具有公共行属性的每组条目,并且确保列正确放置在表中不会有任何损害。这可能比我制作它简单得多......但是非常感谢任何帮助!
奖励积分:在哪里可以找到适合XSLT的优质学习资源?推荐书籍?等?
提前再次感谢!
答案 0 :(得分:0)
这可能会让你开始:
<xsl:template match="table">
<table>
<xsl:apply-templates select="entry[@colnum='1']"/>
</table>
</xsl:template>
<xsl:template match="entry[@colnum='1']">
<xsl:param name='row'><xsl:value-of select='@row'/></xsl:param>
<tr>
<td><xsl:value-of select="."/></td>
<xsl:apply-templates select="../entry[@row=$row][@colnum!=1]"/>
</tr>
</xsl:template>
<xsl:template match="entry[@colnum!='1']">
<td><xsl:value-of select="."/></td>
</xsl:template>
第一个模板创建一个<table></table>
,并填充它,仅选择<entry colnum='1'/>
节点中的table
个节点。
第二个模板将参数$row
设置为row
节点的值<entry colnum='1'/>
属性。然后它创建一个<tr></tr>
容器,并添加一个包含此条目文本的<td></td>
节点。最后,它从父表中选择entry
个row
属性与$row
参数匹配,colnum
属性不是1的节点。
最后一个模板将这些选定的<entry>
节点(colnum
属性非1)转换为<td></td>
节点。
输出:
<table>
<tr>
<td>entry 1</td>
<td>entry 2</td>
</tr>
<tr>
<td>entry 3</td>
<td>entry 4</td>
</tr>
<tr>
<td>entry 5</td>
<td>entry 6</td>
</tr>
<tr>
<td>entry 7</td>
<td>entry 8</td>
</tr>
</table>