[英]XSLT Convert XML to HTML with dynamic rows and columns
我的XML格式如下:
<Items>
<Item name="Item1">
<Label>Label 1</Label>
</Item>
<Item name="Item2">
<Label>Label 2</Label>
</Item>
<ColumnBreak></ColumnBreak>
<Item name="Item3">
<Label>Label 3</Label>
</Item>
<Item name="Item4">
<Label>Label 4</Label>
</Item>
</Items>
我想以<ColumnBreak>
充當行/列轉換器的方式將其轉換為HTML。 使用上面的示例,預期的HTML div輸出為:
Column 1 Column 2
-------- --------
Row 1 | Label 1 Label 3
Row 2 | Label 2 Label 4
例如,如果在XML中的Item3之后設置了<ColumnBreak>
,則結果div應該具有3行和2列,而第二列僅顯示Label 4。
用一個簡單的代碼回答我自己的問題。 使用HTML表而不是div。
<xsl:template match="/Items">
<xsl:variable name="cols" select="round(12 div (count(ColumnBreak) + 1))"/>
<xsl:variable name="rows" select="round(count(Item) div (count(ColumnBreak) + 1))" />
<table>
<xsl:for-each select="Item[position() <= $rows]">
<xsl:variable name="x" select="position() mod $rows"/>
<tr>
<xsl:for-each select="../Item[position() mod $rows = $x]">
<td style="col-md-{$cols}">
<xsl:value-of select="."/>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</xsl:template>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.