簡體   English   中英

XSLT使用動態行和列將XML轉換為HTML

[英]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() &lt;= $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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM